The social media API and MCP server for AI agents
Let Claude Code, Cursor or your own code post to social media through one API, and decide how much your agent can publish without asking.
Upload the slides in ~/content/launch and post them to our TikTok and Instagram Tuesday at 6pm ET. Dry-run first.
upload_media12 slides, in filename ordercreate_postdry_run: true- TikTok: 12 slides, inbox mode
- Instagram: 10 slides, padded to 4:5
create_postwaiting for your approval
import { TurboyapClient } from "@turboyap/sdk";
const ty = new TurboyapClient({ apiKey: process.env.TURBOYAP_API_KEY! });
const plan = await ty.createPost({
type: "slideshow",
media_ids, // from ty.uploadMedia()
caption: "Launch day. Swipe for the changelog.",
targets: [{ account_id: tiktok.id }, { account_id: instagram.id }],
schedule_at: "2026-10-20T18:00:00-04:00",
fit: { overflow: "truncate", aspect: "pad" },
dry_run: true,
}); Same post, two ways. Both end up as one POST /v1/posts.
One API for every platform your audience is on
- TikTok
- Bluesky
- Telegram
- Discord
- Threads
- X
- YouTube
Early access means it's built and being tested. Each platform opens to early-access users as it approves Turboyap. Instagram needs Meta App Review, and public TikTok posting needs TikTok's audit. Beta means early-access users can connect an account and post to it through the API today; it just hasn't been proven with a real production post yet.
Works with Claude Code and Cursor (early access), ChatGPT (coming soon) and n8n (coming soon).
How it works
Connect once, check what each platform will get, then publish. Your agent can do all three.
- TikTok @yourbrandConnectedInstagram @yourbrandConnectedAutonomyLevel 1, review
1. Connect
Sign in to each account once on the platform's own screen. Tokens are encrypted at rest and refreshed for you.
-
{ "dry_run": true, "ok": true, "targets": [ { "platform": "tiktok", "slides": 12, … }, { "platform": "instagram", "slides": 10, "media_changes": [ "convert PNG → JPEG", "pad to 0.8:1", "max width 1440px" ], … } ] }2. Preview with a dry run
See exactly what each platform will get, plus every problem with a fix your agent can apply on its own.
- TikTok
sent_to_inboxOpen TikTok, add a sound, and post.InstagrampublishedLive at instagram.com/p/…3. Publish
Turboyap converts the media, publishes the post, and reports each account's status with a plain-language next step.
The autonomy dial
Every connected account has a level. It decides what happens when an agent schedules a post. Posts written by humans always go straight to the schedule.
- 1
Review everything Early access
Agent posts wait in the approval queue until a human approves them. This is where every account starts.
- 2
Guardrails Coming soon
Posting windows, volume caps and keyword filters. Posts inside the rails go out; the rest wait for review.
- 3
Full autopilot Early access
Agent posts schedule directly. Every action is logged, and one kill switch stops all publishing.
- Agents can't approve. Approving and changing levels take a human key, whatever scopes an agent key has, so an agent can't approve its own posts or raise its own level.
- Edits re-open review. An agent changing an approved post on a level-1 account sends it back to the queue.
- Everything is logged. Every create, approval, edit and publish records who did it: human or agent, key and MCP client.
- One kill switch. Pause the workspace and every publish stops. Resume and it picks up where it left off.
On TikTok, autopilot goes to the inbox. TikTok requires a person to pick the privacy level of every direct post, so by default autopilot sends TikTok posts to the creator's inbox as drafts. The creator picks the privacy level, adds a sound and posts them in the app.
Built for the agent on the other end
Every response is written so an agent can act on it without stopping to ask you.
Errors an agent can fix
Every error names the field that caused it and a concrete fix. Agents apply it and retry, and only come back to you when the fix needs a human, like reconnecting an account.
{
"error": {
"code": "too_many_items",
"message": "instagram allows 10 slides per post; got 12.",
"field": "media_ids",
"fix": "Set fit.overflow to \"truncate\" to post the first 10, or pass targets[1].media_ids with your best 10 slides."
}
} Dry run anything
Send dry_run: true and get back each platform's slide count, media changes and starting status, without creating a thing.
Idempotency keys
Retry with the same idempotency_key and you get the original post back, not a duplicate. If Turboyap stops mid-publish, say for a restart, it marks the outcome unknown instead of posting again.
Rules as data
Limits for every post type come from get_platform_rules or GET /v1/platform-rules, so agents check before they build.
Media fitted per platform
One upload becomes a 9:16 TikTok slideshow and a 4:5 Instagram carousel. Turboyap converts, resizes, pads or crops.
Scoped keys and test mode
Keys carry scopes (read, draft, schedule, publish) and can be limited to some accounts. Test keys run the whole flow against simulated accounts, no platform approval needed.
Docs agents can read
Every doc is clean markdown at a stable URL, indexed in /llms.txt and /llms-full.txt.
One API, every surface
Each surface calls the same public REST API, so anything an agent can do, your code can do too.
-
REST API
Early accesshttps://api.turboyap.com/v1, JSON over HTTPS with bearer keys -
TypeScript SDK
Early access@turboyap/sdk, a typed client for every endpoint. Not on npm yet. -
Local MCP server
Early access@turboyap/mcpfor Claude Code, Cursor and other MCP clients. Not on npm yet. -
Webhooks
Signed post and account events pushed to your server
Early access -
Remote MCP
Connect from claude.ai and ChatGPT without installing anything
Coming soon -
CLI
Coming soon@turboyap/clifor scripts, CI and approving from the terminal -
Dashboard
Calendar, approval queue and per-post metrics for the humans
Coming soon
Questions developers and agencies ask
What is Turboyap?
Which platforms does Turboyap support?
How do I connect Claude Code or Cursor?
claude mcp add turboyap -e TURBOYAP_API_KEY=ty_agent_… -- npx -y @turboyap/mcp. Cursor and other MCP clients run the same npx -y @turboyap/mcp command from their MCP config. The package isn't on npm yet, so the command works once it's published. Start with a test key (ty_agent_test_…) to try it without a real account. See the MCP quickstart.Does it work with ChatGPT, claude.ai or n8n?
Can an agent post without my approval?
How does Turboyap prevent duplicate posts?
idempotency_key with each post, and retries return the original post instead of creating a second one. Each scheduled post is claimed by one worker at a time, so two workers can't publish the same post at once. If Turboyap stops mid-publish, say for a restart, it marks the post failed with unknown_outcome instead of posting again, so you can check the platform first.Can agencies use it for client accounts?
How much does it cost?
Just turboyap it.
Early access is open to developers and agencies, starting with TikTok and Instagram. Tell us what you want your agent to post.