Use case
AI agent social media posting without sharing account tokens
An AI agent can post to social media safely if it holds a revocable API key instead of your platform logins. With Socifyr you connect accounts once in the dashboard, then hand the agent an API key and a workspace ID. The agent publishes to any of 18 platforms through MCP, REST, the CLI, or the TypeScript SDK, and the OAuth tokens stay encrypted on our side.
cURLTypeScript SDKCLIMCP prompt
How it works
- 1
Connect accounts once, as a human
You authorize Instagram, LinkedIn, X and the rest in the dashboard. Each account gets a stable slug such as instagram-mybrand. The slug is the only identifier an agent ever needs. - 2
Create a key for the agent
Create a dedicated API key and add guardrails: a daily post cap, a monthly X spend cap, or "require approval" so every agent post waits for a human. Revoking the key cuts the agent off immediately. - 3
Point the agent at a surface
Claude Desktop, Claude Code and Cursor use the MCP server. Scripts and CI jobs use the CLI or SDK. Custom agent frameworks call REST. All of them go through the same guarded key. - 4
Let it publish, then read the result
Every post returns a request ID. The agent can check per-platform status, retry only the channels that failed, and report back in plain language.
Working code
curl -X POST https://api.socifyr.com/api/content/text \
-H "Authorization: Bearer sk_your_key" \
-H "X-Workspace-Id: your_workspace_id" \
-H "Content-Type: application/json" \
-d '{
"connections": ["linkedin-mybrand", "x-mybrand"],
"text": "We just shipped v2.0. Details in the release notes."
}'import { Socifyr } from '@socifyr/sdk'
const socifyr = new Socifyr({
apiKey: process.env.SOCIFYR_API_KEY!,
workspaceId: process.env.SOCIFYR_WORKSPACE_ID!,
})
const post = await socifyr.uploads.text({
connections: ['linkedin-mybrand', 'x-mybrand'],
text: 'We just shipped v2.0.',
})
const status = await socifyr.uploads.getStatus(post.requestId)socifyr post "We just shipped v2.0." --to linkedin-mybrand,x-mybrand --waitDraft a short launch post about v2.0 and publish it to
linkedin-mybrand and x-mybrand. Tell me which channels succeeded.Replace sk_your_key and the workspace ID with your own from the dashboard, and use your own connection slugs.
Who this is for
Developers building agents
You want a tool call that publishes, not a weekend spent on thirteen OAuth flows and their token refresh rules.Teams using Claude or Cursor for marketing ops
You want the assistant to draft and publish while a guardrail, not trust alone, limits what it can do.Founders running a one-person content engine
You want an agent to keep the feed alive without handing it the keys to every account.
Frequently asked questions
Does the AI agent ever see my Instagram or LinkedIn tokens?
No. The agent authenticates with a Socifyr API key and a workspace ID. Platform OAuth tokens are stored encrypted by Socifyr and are never returned through the API, MCP server, CLI or SDK.
What stops an agent from posting too much?
Per-key guardrails. You can set a daily post limit, a monthly spend cap for X posts, and require approval so key-created posts wait in a pending state. Past a limit the API returns a 403 with a clear message.
Can the agent approve its own posts?
No. A key with require-approval enabled is blocked from approving, rejecting, or publishing directly. It can only submit for approval, and a human with approval rights publishes.
Which AI tools work with Socifyr?
Any MCP client such as Claude Desktop, Claude Code and Cursor can use the MCP server. Anything else can call the REST API, the CLI, or the TypeScript SDK.
How do I revoke an agent?
Delete or disable its API key in the dashboard. The agent loses access immediately, and your connected accounts and other keys are untouched.