Skip to content
Social SDK Cloud, the hosted SDK, is taking early-access signups.Join the list
Social SDK megaphone markSocial SDK
Esc
↑↓navigate↵open⌘Jpreview
On this page

Managed backends

Compare Zernio, Post for Me, PostFast, Postiz, and Buffer by supported operations, platform coverage, webhooks, and pricing.

A managed backend is optional: instead of calling a social platform’s API with credentials you control, the SDK calls Zernio, Post for Me, PostFast, Postiz, or Buffer using your own provider account. Managed providers own the platform apps and account connections; with self-hosted Postiz, you configure your own instance and platform apps; your application keeps tenant authorization and outcome handling.

Direct integrations remain the other route: your platform app, your tokens, your review processes, no provider charges. Each platform page documents that route. Nothing routes through a maintainer-operated service in either mode, and an application can use any of the providers, several, or none.

For native platform APIs, unified social media APIs, and libraries compared side by side, read the social media APIs guide.

Moving off Ayrshare? The Ayrshare alternatives guide maps its profiles and post calls to the SDK.

Compare SDK adapter support

Zernio Post for Me PostFast Postiz Buffer
Platforms X, Threads, Bluesky, YouTube, TikTok, Instagram, LinkedIn, Facebook, Pinterest, Reddit (unavailable), Telegram, Discord, Google Business, Snapchat (closed beta) X, Threads, Bluesky, YouTube, TikTok, Instagram, LinkedIn, Facebook, Pinterest X, Threads, Bluesky, YouTube, TikTok, Instagram, LinkedIn, Facebook, Pinterest, Telegram, Google Business X, Threads, Bluesky, YouTube, TikTok, Instagram, LinkedIn, Facebook, Pinterest, Reddit, Mastodon, Telegram, Discord, Google Business, Twitch, plus other Postiz channels X, Threads, Bluesky, YouTube, TikTok, Instagram, LinkedIn, Facebook, Pinterest, Mastodon, Google Business, Substack
Publish Text, images, video, carousels, LinkedIn documents; now or scheduled Text, images, video, carousels, LinkedIn documents; now or scheduled Text, images, video, carousels, LinkedIn documents; scheduled only Text, images, video, carousels; now or scheduled Text, images, video, carousels, LinkedIn documents; now, scheduled, or queued
Scheduling Schedule and cancel Schedule and cancel Schedule and cancel Schedule and cancel Schedule and cancel
Post reads and status posts.get, posts.list, status posts.get, posts.list, status posts.list, status posts.list, status posts.get, posts.list, status
Media upload All platforms All platforms All platforms Platforms that take media — (public HTTPS URLs only)
Post analytics X, Threads, YouTube, TikTok, Instagram, LinkedIn, Facebook, Pinterest, Snapchat; likes, comments and shares on Bluesky; Reddit (unavailable). None for Google Business, Telegram or Discord Feed-based, all platforms All platforms X, Threads, Bluesky, YouTube, TikTok, Instagram, LinkedIn, Facebook, Pinterest, Reddit, Mastodon, Telegram, Discord, Google Business, Twitch Sent posts; personal API keys
Account analytics Follower counts when Zernio reports them — Follower counts (none yet for X and Google Business) Same platforms as post analytics; last 30 days Channel reports with analytics.getReport; personal API keys
Comments X, Threads, Bluesky, YouTube, TikTok (Business accounts), Instagram, LinkedIn, Facebook, Reddit — — — —
Messages X, Bluesky, Instagram, Facebook, Reddit (unavailable), Telegram — — — —
Native post removal X, Threads, Bluesky, YouTube, LinkedIn, Facebook, Pinterest, Reddit, Telegram, Discord, Google Business — — — —
Webhook verification X-Zernio-Signature HMAC over raw bytes Post-For-Me-Webhook-Secret shared secret — (no webhooks; poll status) — (webhooks are unsigned; poll status) — (no public webhook API; poll status)
Company / pricing zernio.com postforme.dev postfa.st postiz.com buffer.com
Setup guide Zernio setup Post for Me setup PostFast setup Postiz setup Buffer setup

Zernio’s platform comparison, checked November 4, 2026, lists Reddit as temporarily unavailable: Zernio cannot post to Reddit, read Reddit messages, or sync Reddit analytics because Reddit has blocked third-party apps from its API. The SDK’s Zernio Reddit methods remain, but Zernio refuses those requests for now. See Zernio.

The same comparison marks Google Business Profile, Telegram and Discord as having no post metrics, so expect none from getPostMetrics there. Google deprecated per-post analytics for Business Profiles. Zernio’s separate Performance API reports location-level impressions, clicks, calls, directions and bookings, which are location metrics rather than post metrics; zernioNative.googleBusinessPerformance reads them as daily series, and zernioNative.googleBusinessSearchKeywords reads the search terms that showed a location. Snapchat is in closed beta at Zernio. Account follower counts can be missing without Zernio’s Analytics add-on.

A dash means unimplemented in this SDK, not absent from the vendor API. This manually maintained comparison describes the normalized SDK surface alongside the generated capability matrix; they do not certify a provider account, plan tier, platform permission, or a live request.

You pay the selected provider directly and remain responsible for its plan, platform permissions, add-ons, and connected-account terms.

Publishing formats depend on the platform. YouTube requires video; Instagram, TikTok, and Pinterest require media; Zernio Snapchat takes video only. PostFast Bluesky takes text, images, or one MP4 video of at most 100 MB, never images and video together. Zernio, Post for Me, PostFast and Buffer publish LinkedIn documents; Postiz does not. The listed generic formats do not imply stories, reels, custom thumbnails, or every vendor option. Zernio, Post for Me, Postiz, and Buffer publish now or on a schedule; PostFast schedules only. Cancel deletes the scheduled record for Zernio, PostFast, Postiz, and Buffer; Post for Me retains a draft. Buffer media must already be a public HTTPS URL. Feed scope and metric availability vary by platform and connection permissions.

What managed routes share

  • The provider API key stays on your server and is passed to the adapter. Connected accounts are provider records that your application must map to tenants before any operation.
  • Provider acceptance is not platform publication. Preserve the provider record, inspect every destination result, and reconcile pending or uncertain deliveries.
  • Zernio verifies HMAC over raw bytes. Post for Me checks an endpoint-secret header, which does not authenticate the body, so workers must read current provider state. PostFast and Buffer have no public webhook verifier, and the SDK does not accept unsigned Postiz callbacks; poll those routes. See events.
  • Social SDK does not pool keys, resell provider usage, or transfer authorizations between providers. PostFast and Postiz sponsor the project; that does not change how any adapter behaves.

Use two providers together

Register each adapter under its own name in backends. Accounts carry the name as backend, so one publish call can target accounts from both providers and returns one outcome per target. The full example is in examples/snippets/backend-mixed.ts.

import { createSocial } from "@opencoredev/social-sdk";
import { postfast } from "@opencoredev/social-sdk/cloud/postfast";
import { zernio } from "@opencoredev/social-sdk/cloud/zernio";

const social = createSocial({
  backends: {
    zernio: zernio({ apiKey: process.env.ZERNIO_API_KEY! }),
    postfast: postfast({ apiKey: process.env.POSTFAST_API_KEY! }),
  },
});

const authorization = { tenantId: "tenant-from-session" };
const zernioAccounts = await social.accounts.list({ backend: "zernio", authorization });
const postfastAccounts = await social.accounts.list({ backend: "postfast", authorization });

const zernioX = zernioAccounts.items.find((item) => item.ref.platform === "x")?.ref;
const postfastLinkedIn = postfastAccounts.items.find(
  (item) => item.ref.platform === "linkedin",
)?.ref;
if (!zernioX || !postfastLinkedIn) throw new Error("Connect both destination accounts first.");
const at = new Date(Date.now() + 7 * 86_400_000).toISOString();

const result = await social.posts.publish(
  {
    targets: [{ account: zernioX }, { account: postfastLinkedIn }],
    content: { text: "Registration for the spring cohort is open." },
    schedule: { at },
  },
  { authorization },
);

PostFast only schedules, so a mixed post that includes a PostFast target needs a future schedule.at within one year. Load authorization.tenantId from the authenticated server session and enforce account grants with an authorization policy. Listing accounts alone is not a tenant grant.

Last updated on November 5, 2026