Let AI manage your social media.
Or build it yourself with the API.

Tell ChatGPT or Claude what to post — they call Solnk and publish to 9 platforms. Or use the REST API directly in your own code.

Install the AI Skill

Use /publish in Claude Code to post from a conversation.

Download Skill
npx skills add solnk-dev/solnk-api-skill

MCP server

Live

Connect Solnk to your AI client

Our Model Context Protocol server lets Claude, Cursor, and any MCP-compatible client connect to Solnk natively — no custom API wiring. Connect once, then publish to 9 platforms straight from your AI client.

Server URL

https://mcp.solnk.com/mcp

Add to your MCP client config

{
  "mcpServers": {
    "solnk": {
      "command": "npx",
      "args": [
        "mcp-remote", "https://mcp.solnk.com/mcp",
        "--header", "Authorization: Bearer sk_..."
      ]
    }
  }
}

Clients with native remote-MCP support (e.g. Cursor) can add the server URL directly with an Authorization: Bearer header. Get your API key at Settings → API Keys.


How it works with AI

You talk. AI publishes.

Connect your social accounts in Solnk. Then just tell any AI what to post — it handles the API call, formatting, and delivery.

You say

“Write a casual post about our launch and publish to X, LinkedIn, and Threads.”

AI does

1Writes the content

2Calls Solnk API

3Live on 3 platforms

Works with

ChatGPT & Custom GPTs

Add Solnk as a Custom Action — users publish through conversation.

Claude & Claude Code

Install the /publish skill — draft, schedule, and publish in one chat.

Zapier, Make, n8n

HTTP request module — trigger posts from any event or workflow.

LangChain, CrewAI, AutoGen

Import the OpenAPI spec — your agent gets social publishing built in.

One request, nine platforms

Or let your AI write this call for you — either way it's the same endpoint.

curl -X POST https://api.solnk.com/api/v1/publishes \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "content": "Just shipped our new feature!",
    "targets": [
      { "account_id": "acc_x_01" },
      { "account_id": "acc_linkedin_01" },
      { "account_id": "acc_threads_01" }
    ],
    "publish_mode": "immediate"
  }'

v1 reference

Every endpoint in one place

Posts, accounts, groups, approvals, and webhooks — fifteen endpoints cover the entire publishing surface. Each one carries a fine-grained scope.

GET/v1/postsList postsposts:read
POST/v1/postsCreate a postposts:write
GET/v1/posts/:idGet a single postposts:read
DELETE/v1/posts/:idDelete a postposts:write
GET/v1/accountsList connected social accountsaccounts:read
GET/v1/team-membersList team members (read-only)accounts:read
GET/v1/account-groupsList account groupsaccounts:read
POST/v1/account-groupsCreate an account groupaccounts:write
PATCH/v1/account-groups/:idUpdate an account groupaccounts:write
DELETE/v1/account-groups/:idDelete an account groupaccounts:write
GET/v1/approvalsList posts awaiting approvalposts:read
GET/v1/webhooksList webhook subscriptionswebhooks:read
POST/v1/webhooksCreate a webhook subscriptionwebhooks:write
PATCH/v1/webhooks/:idUpdate a subscriptionwebhooks:write
DELETE/v1/webhooks/:idDelete a subscriptionwebhooks:write
Full reference →

What the API covers

Multi-platform publish — one call, up to 9 platforms

Scheduling — future date with timezone support

Delivery tracking — per-platform status via poll or webhook

Media uploads — presigned URL or by-URL ingest, up to 500 MB (PNG/JPEG/WebP/GIF, MP4/MOV/WebM)

Webhooks — HMAC-SHA256 signed, retried automatically

Account groups — bundle accounts for one-call fan-out

Approval queue — review drafts before they go live

Team-aware keys — scope a key to one team or your whole user


Authentication

Bearer token via Settings → API Keys. Every key carries an explicit set of scopes, so a CMS integration that only needs to publish can be locked out of webhook config and billing.

Rate limits

Publishing: 30 req/min. Others: 120 req/min. Use Idempotency-Key to prevent duplicate publishes.

Scopes

Seven fine-grained permissions you can mix on any key.

posts:readRead posts and approvals
posts:writeCreate, delete posts
accounts:readRead accounts, members, groups
accounts:writeManage account groups
webhooks:readList webhook subscriptions
webhooks:writeCreate, update, delete subscriptions
billing:readRead plan + usage

Team-aware API

Two flavors of API keys

One token model, two intents. Pick the one that matches who is allowed to touch which accounts — the API enforces the rest.

User key

sk_…

The default. Scoped to your user — every team you belong to, every account you can see in the dashboard, all reachable through the same key.

Team key

sk_… (tagged at creation time)

Locked to a single team at creation time. Cross-team requests are rejected automatically — handy for agency clients, contractor access, or per-brand pipelines.

Same sk_ prefix — the team scope is stored server-side at key creation. A team key carries its team context implicitly: no extra header, no team_id in the body.

curl https://api.solnk.com/v1/accounts \
  -H "Authorization: Bearer sk_xxx"

# Response is automatically scoped to that team's
# accounts. A request for an account in another team
# returns 403 — even if the key owner is a member of both.

Every post the API creates is stamped with its origin so you can attribute it back to a teammate or a workflow.

{
  "id": "post_01HXY…",
  "content": "Launch day!",
  "team_id": "team_01HXY…",
  "created_by": "user_01HXY…",
  "status": "scheduled"
}

Webhooks

Approval loops that close themselves

Subscribe once, get notified for every state change a post goes through. Pair it with the approval queue and your CMS stays in sync without polling.

Events

post.pending_approvalpost.approvedpost.rejectedpost.publishedsoonpost.failedsoon

Approval events fire today. Publish/fail events ship as the worker delivery pipeline lands — subscribe now and you'll receive them as soon as they go live.

Signed deliveries

Every payload is signed with HMAC-SHA256 using your subscription secret. Verify the header before you trust the body.

X-Solnk-Signature: sha256=<hex>

Retries that give up cleanly

Non-2xx responses are retried with exponential backoff. Persistent failures eventually disable the subscription so a broken endpoint never blocks the queue — you'll see the disabled state in the dashboard.

How it flows

1

Your CMS

Pushes a draft post to Solnk.

2

Approval queue

Editor reviews in the Solnk dashboard.

3

Webhook fires

post.approved or post.rejected lands on your endpoint.

4

External system

Reacts — schedules, archives, or notifies the author.


By design

What we deliberately keep out of the API

A few admin actions stay in the dashboard on purpose. It is the same line the rest of the industry draws — these are identity-sensitive moves, and we'd rather they leave a human paper trail than sit behind an automation token.

Member invitations

Invite, remove, and resend flows live in the team admin UI.

Role changes

Owner / admin / editor assignments happen in the dashboard.

Approve / reject actions

A human clicks the decision in the approval queue — the API just reads it.

Pair these UI flows with the approval webhook above and your external system still sees every outcome — without holding the privileges to override a human decision.

Ready to automate your publishing?

API access is included with the Pro plan.

Run social media
the way it should be.

Get started for free