One REST API for publishing, inbox, analytics and paid ads across 16 social platforms and 7 ad networks.
The API is closed. Everything we build on top of it is open, and it is all here.
Docs • OpenAPI spec • MCP server • Get an API key • Status
npm install @zernio/nodeimport Zernio from '@zernio/node';
const zernio = new Zernio(); // reads ZERNIO_API_KEY
const { data: post } = await zernio.posts.createPost({
body: {
content: 'Hello world from Zernio!',
platforms: [
{ platform: 'twitter', accountId: 'acc_xxx' },
{ platform: 'linkedin', accountId: 'acc_yyy' },
{ platform: 'instagram', accountId: 'acc_zzz' },
],
publishNow: true,
},
});No SDK, no problem. Base URL https://zernio.com/api/v1, bearer token, that is the whole contract:
# 1. Which accounts can this key post to?
curl https://zernio.com/api/v1/accounts \
-H "Authorization: Bearer $ZERNIO_API_KEY"
# 2. Schedule a post to one of them.
# scheduledFor is any future ISO 8601 UTC timestamp; omit it and pass
# "publishNow": true to send immediately.
curl -X POST https://zernio.com/api/v1/posts \
-H "Authorization: Bearer $ZERNIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Hello from Zernio",
"platforms": [{ "platform": "twitter", "accountId": "ACCOUNT_ID" }],
"scheduledFor": "2027-01-15T15:00:00.000Z"
}'Same request, same auth, same error contract for every one of them. You change one platform value, not one integration.
| Platform | platform value |
|---|---|
| Twitter / X | twitter |
instagram |
|
facebook |
|
linkedin |
|
| TikTok | tiktok |
| YouTube | youtube |
whatsapp |
|
pinterest |
|
reddit |
|
| Bluesky | bluesky |
| Threads | threads |
| Google Business | googlebusiness |
| Telegram | telegram |
| Snapchat | snapchat |
| Discord | discord |
| Slack | slack |
Ad networks: metaads, googleads, tiktokads, linkedinads, pinterestads, xads, openaiads.
Note
Platform list and enum values come from the /v1/connect/{platform} enum in the published OpenAPI spec, which is the contract that decides what you can actually connect. Some SDK READMEs lag a platform behind; the enum is the contract.
One key, one base URL, 369 paths in the published spec. A sample of the surface:
| Area | Endpoints | Does |
|---|---|---|
| Publish | POST /v1/posts · /v1/posts/bulk-upload · /v1/posts/{postId}/retry · /v1/media/presign |
Schedule or publish now, per-platform overrides, retries, direct media upload |
| Queue | /v1/queue/slots · /v1/queue/next-slot · /v1/queue/preview |
Slot-based scheduling without picking timestamps by hand |
| Inbox | /v1/inbox/conversations · /v1/inbox/comments · /v1/inbox/mentions · /v1/inbox/reviews |
DMs, comments, mentions and reviews from every network in one shape |
| Analytics | /v1/analytics · /v1/analytics/best-time · /v1/analytics/content-decay · /v1/analytics/daily-metrics |
Post and account insights, demographics, best time to post |
| Ads | /v1/ads/campaigns · /v1/ads/creatives · /v1/ads/audiences · /v1/ads/insights · /v1/ads/lead-forms |
Campaigns, creatives, targeting, conversions and lead gen across 7 ad networks |
/v1/whatsapp/templates · /v1/whatsapp/flows · /v1/whatsapp/phone-numbers · /v1/whatsapp/calls |
Templates, Flows, number provisioning with KYC, calling, sandbox | |
| CRM | /v1/contacts · /v1/broadcasts · /v1/sequences · /v1/comment-automations |
Contacts, custom fields, broadcasts, drip sequences, auto-replies |
| Plumbing | /v1/connect/{platform} · /v1/webhooks/settings · /v1/api-keys · /v1/usage |
Hosted OAuth, webhooks with delivery logs, keys, usage metering |
Tip
Building multi-tenant? Start at the multi-tenant guide. Prefer to generate your own client? The spec is public and complete.
| Language | Install | Version |
|---|---|---|
| Node.js | npm install @zernio/node |
|
| Python | pip install zernio-sdk |
|
| Go | go get github.com/zernio-dev/zernio-go |
|
| Ruby | gem install zernio-sdk |
|
| PHP | composer require zernio-dev/zernio-php |
|
| Rust | cargo add zernio |
|
| .NET | dotnet add package Zernio |
|
| Java | build from source, see the repo README | not on Maven Central yet |
| CLI | npm install -g @zernio/cli |
Python quickstart
from zernio import Zernio
# Reads ZERNIO_API_KEY from environment (or pass explicitly)
client = Zernio()
post = client.posts.create(
content="Hello world from Zernio!",
platforms=[
{"platform": "twitter", "accountId": "acc_xxx"},
{"platform": "linkedin", "accountId": "acc_yyy"},
{"platform": "instagram", "accountId": "acc_zzz"},
],
publish_now=True,
)| Repo | What it is |
|---|---|
| zernio-claude-plugin | Claude Code plugin bundling the hosted MCP server at https://mcp.zernio.com/mcp. /plugin marketplace add zernio-dev/zernio-claude-plugin. MCP docs |
| zernio-cli | Posts, inbox, broadcasts and automations from the terminal. JSON output by default, so it pipes into jq and into agents. CLI docs |
| chat-sdk-adapter | Official adapter for Chat SDK, listed by the Chat SDK project. npm install @zernio/chat-sdk-adapter |
| n8n-nodes-zernio | Community node for n8n. |
| cursor-plugin | The same MCP server, wired into Cursor |
Real products, MIT licensed, deployable today. The fastest way to see what the API can carry.
| Project | Stars | What it is |
|---|---|---|
| zernflow | Open source ManyChat alternative. Visual flow builder, live chat inbox, contact CRM, broadcasts, sequences, A/B split. Live at zernflow.com | |
| latewiz | A complete scheduler UI: calendar, queue and composer. One-click deploy to Vercel or Railway. Live at latewiz.com | |
| unified-inbox | One inbox for WhatsApp, Instagram, Messenger, Telegram, X, Reddit and Bluesky. Stateless, no database, the key never reaches the browser | |
| ads-dashboard | Read-only ads reporting across Meta, Google, TikTok, LinkedIn, Pinterest, X and ChatGPT. Paste an API key, see your spend. Live at ads-dashboard.zernio.com | |
| zernio-shopify | Shopify app that turns products into scheduled posts, with templates, bulk scheduling and UTM tracking. Live at store.zernio.com |
Also in this org
| Repo | What it is |
|---|---|
| openapi-specs | OpenAPI specs we maintain for the underlying platform APIs (Instagram, TikTok, LinkedIn and friends). Useful even if you never call Zernio |
| zernio-api | Claude Code skill for the Zernio API |
| social-media-api | Drop-in replacement for Ayrshare's social-media-api SDK, backed by Zernio. Source only, not published to npm yet |
| crisp-mcp | MCP server for Crisp. Built for our own support stack, unrelated to the posting API, open sourced because people asked |
Anything not listed on this page is an experiment, a fork or an archive.
- Create an account and generate a key in the dashboard.
export ZERNIO_API_KEY=sk_...- Paste either snippet above.
The first two connected accounts are free, so step 3 works before you ever see a bill.
Pricing · Changelog · Webhooks · SDK docs · Status
Bugs and feature requests go in the issue tracker of the relevant repo above.