API + MCP · LIVE

Your social media team, now programmable.

Everything Taka does, generate, schedule, publish, brand, analytics, behind a scoped API key. Plain REST, or a native MCP server your AI assistant already knows how to use.

Quickstart · two minutes

1. Mint a key. In the app, open Business → API & MCP, pick the scopes the task needs, and copy the key. It is shown once; Taka keeps only a hash.

2. Say hello. The account endpoint returns your business, plan, credits, and connected channels.

3. Ship something. Create a draft, generate it with AI, then schedule or publish it. Long work comes back as a job you poll.

hello.taka
curl https://api.taka.ai/v1/public/account \
  -H "Authorization: Bearer taka_live_..."
first.post
curl -X POST https://api.taka.ai/v1/public/posts \
  -H "Authorization: Bearer taka_live_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: first-post-1" \
  -d '{"platform": "instagram", "idea": "Weekend special: fresh croissants"}'

# then generate it (draws 1 credit, returns a job to poll)
curl -X POST https://api.taka.ai/v1/public/posts/POST_ID/generate \
  -H "Authorization: Bearer taka_live_..."
Connect your AI assistant

Taka speaks MCP natively: 36 tools, guided prompts like plan_my_week, and live resources, all over the same key with the same scopes.

Claude Code: one command, shown on the right.

Claude Desktop, Cursor, anything else: paste the config block into your client's MCP settings. Then just ask: “plan my social week and schedule the drafts for my review.”

claude.code
claude mcp add --transport http taka https://api.taka.ai/mcp \
  --header "Authorization: Bearer taka_live_..."
mcp.config.json
{
  "mcpServers": {
    "taka": {
      "type": "http",
      "url": "https://api.taka.ai/mcp",
      "headers": { "Authorization": "Bearer taka_live_..." }
    }
  }
}
How Taka thinks

Posts and variants

A post is one piece of content with a variant per platform (Instagram, LinkedIn, TikTok, and friends). Edit the primary and the other variants re-derive; edit a specific variant and it pins. Published content is immutable, create a new post instead.

Jobs

Generation, revision, and async publishing return 202 with a job id. Poll GET /v1/public/jobs/{id} every 10-30 seconds. Statics land in 1-3 minutes, reels can take 20. Stuck jobs fail themselves with code "timeout", so polling never hangs.

Idempotency

Send an Idempotency-Key header on writes. The same key replays the original response for 24 hours instead of double-charging credits or double-publishing. Same key with a different body returns 409 IDEMPOTENCY_CONFLICT.

Scopes

Keys carry only what you grant: account:read, content:read, content:write, generate, publish, brand:read, brand:write, analytics:read. Write implies read on the same resource; generate and publish are never implied. Scheduling requires publish, because outside review mode a schedule ships the post at its slot.

Honesty flags

Revision results tell you what actually happened: revisionApplied false means the quality floor kept the old version, noVisibleChange means the same words came back, imageryReverted means the photo stayed. Building an agent? Narrate from these, never from intentions.

Limits and errors

Per key, per hour: 600 general requests, 60 AI generations, 20 outward writes (publish, approve, schedule). Errors use a stable envelope, {"error": {"code", "message", "requestId"}}, with machine codes like INSUFFICIENT_CREDITS and CHANNEL_NOT_CONNECTED.

Reference

Two things need a browser and stay in the app: connecting a social channel (OAuth) and billing. Everything else, your code can do.