Early access · TikTok and Instagram first

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.

Claude CodeMCP

Upload the slides in ~/content/launch and post them to our TikTok and Instagram Tuesday at 6pm ET. Dry-run first.

  1. upload_media12 slides, in filename order
  2. create_postdry_run: true
  3. TikTok: 12 slides, inbox mode
  4. Instagram: 10 slides, padded to 4:5
  5. create_postwaiting for your approval
TypeScript@turboyap/sdk
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

Early access
  • TikTok
  • Instagram
Beta
  • Bluesky
  • Telegram
  • Discord
Coming soon
  • Facebook
  • Threads
  • X
  • LinkedIn
  • YouTube
  • Pinterest

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.

  1. TikTok @yourbrandConnected
    Instagram @yourbrandConnected
    AutonomyLevel 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.

  2. {
      "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.

  3. TikToksent_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. 1

    Review everything Early access

    Agent posts wait in the approval queue until a human approves them. This is where every account starts.

  2. 2

    Guardrails Coming soon

    Posting windows, volume caps and keyword filters. Posts inside the rails go out; the rest wait for review.

  3. 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.

See every Instagram carousel error
{
  "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

    https://api.turboyap.com/v1, JSON over HTTPS with bearer keys

    Early access
  • TypeScript SDK

    @turboyap/sdk, a typed client for every endpoint. Not on npm yet.

    Early access
  • Local MCP server

    @turboyap/mcp for Claude Code, Cursor and other MCP clients. Not on npm yet.

    Early access
  • 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

    @turboyap/cli for scripts, CI and approving from the terminal

    Coming soon
  • Dashboard

    Calendar, approval queue and per-post metrics for the humans

    Coming soon

Questions developers and agencies ask

What is Turboyap?
Turboyap is a social media API and MCP server built for AI agents. Your agent, or your own code, uploads media, previews what each platform will get, and schedules or publishes posts through one API. Each connected account has an autonomy dial that decides whether agent posts wait for a human. Turboyap is in early access, starting with TikTok and Instagram. Bluesky, Telegram and Discord are in beta.
Which platforms does Turboyap support?
TikTok and Instagram come first, and both are in early access: publishing TikTok photo posts and slideshows (sent to the creator's TikTok inbox or posted directly) and Instagram single images and carousels is built and being tested. Each opens to early-access users as the platform approves Turboyap. Instagram needs Meta App Review, and public TikTok posting needs TikTok's audit. Bluesky, Telegram and Discord are in beta: early-access users can connect them and post text, single images and multi-image posts through the API today, but they haven't been proven with a real production post yet. Facebook, Threads, X, LinkedIn, YouTube and Pinterest are coming soon. Meanwhile, test mode runs the whole flow against simulated accounts, and the API guides cover each post type.
How do I connect Claude Code or Cursor?
With the local MCP server, which is in early access. Add it with an agent key: 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?
Not directly yet. The local MCP server runs on your machine, which suits Claude Code and Cursor. A remote MCP server for claude.ai and ChatGPT is coming soon, and so is n8n support. Anything that can send HTTP requests, including n8n's HTTP Request node, can call the REST API, which is in early access.
Can an agent post without my approval?
Only if you allow it. Accounts start at level 1, where every post an agent schedules waits for a human to approve it. Agent keys can't approve posts or change the level, whatever their scopes. A human can move an account to level 3, full autopilot, and one kill switch pauses all publishing. On TikTok, autopilot sends posts to the creator's inbox by default, because TikTok requires a person to pick the privacy level of every direct post.
How does Turboyap prevent duplicate posts?
Send an 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?
Yes, in early access. A workspace holds many connected accounts, each with its own autonomy level, so client accounts can require review while yours run on autopilot. API keys can be limited to some accounts, so an agent key can only post to the accounts you list. Separate workspaces for each client are on the roadmap.
How much does it cost?
There's a free tier, and every plan includes unlimited posts. Paid plan prices aren't final yet. Ask for early access and you'll hear first.

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.