X API

X (Twitter) posting API for social media agents

Blotato's X (Twitter) posting API publishes a single post or a whole thread in one request, with the reply chaining handled for you.

You never buy an X API tier or capture tweet ids between calls.

REST
POST https://backend.blotato.com/v2/posts
Auth
blotato-api-key: YOUR_API_KEY
MCP
https://mcp.blotato.com/mcp

Updated September 2026. API access is included on every paid plan and excluded from the free trial.

What the X (Twitter) posting API does in Blotato

POST /v2/posts with targetType twitter needs no extra target fields. content.text is the first post. Put the rest of a thread in content.additionalPosts, each entry with its own text and mediaUrls, and Blotato chains the replies. Up to 4 photos, 1 GIF, or 1 video per post. Scheduling and the status poll work the same as on every other platform.

Threads in one call

One request, one array. Each additionalPosts entry becomes the next reply, and there is no tweet id to store between calls.

Media without the OAuth 1.0a detour

X still uses OAuth 1.0a for media uploads, and Blotato is the one holding that flow. You send a public URL.

Post analytics

GET /analytics ranks your published posts by views, reach, likes, or comments. GET /posts/:id/analytics returns the snapshot history for one.

Scheduling into the calendar

scheduledTime queues the post or the entire thread. GET /schedules lists what is waiting, PATCH moves it, DELETE cancels it.

What a thread looks like on the wire

The first post is content.text. Every additionalPosts entry becomes the next reply in order. Media goes on whichever post it belongs to. Nothing has to be stored between calls, because there is only one call to Blotato.

POST https://backend.blotato.com/v2/posts
{
  "post": {
    "accountId": "98432",
    "content": {
      "text": "We ran a posting agent unattended for 30 days. Thread. (1/3)",
      "mediaUrls": [],
      "platform": "twitter",
      "additionalPosts": [
        { "text": "Day 1 to 10: it published 42 posts and failed twice, both media rejections. (2/3)", "mediaUrls": [] },
        { "text": "Day 11 to 30: zero silent failures, because it polled status instead of trusting the 200. (3/3)", "mediaUrls": ["https://cdn.example.com/log.png"] }
      ]
    },
    "target": { "targetType": "twitter" }
  }
}

Response: { "postSubmissionId": "uuid" }, a receipt. Poll GET /posts/:postSubmissionId for published or failed. Every field: help.blotato.com/api/llm. X's own reference: the X API docs.

What building on the X API costs you that this does not

  • No X API tier to buy. X moved write access behind paid tiers with pay-per-use pricing that has changed more than once. Blotato's price is flat and does not reference X's.
  • A thread is a data structure, not a loop. Against the X API you post, read the id, reply, read the id, reply. Here it is one array in one request.
  • Same key, eight more platforms. The thread envelope also works for Bluesky and Threads. Change targetType, respect each network's character limit, and the rest of the request is identical.
  • Publishing and analytics, and nothing we do not ship. Comments and DMs are Instagram and Facebook only. On X, the surface is publishing, scheduling, and post analytics.

Posting to X, from key to live thread

  1. Connect X. Sign in to Blotato and connect the X account. Blotato holds the OAuth tokens, including the OAuth 1.0a pair media uploads still need.
  2. Generate an API key. Generate the key on the API tab in Settings and copy it with any trailing = characters. Paid Starter begins at that moment, because the trial excludes the API.
  3. Fetch the accountId. GET /users/me/accounts?platform=twitter.
  4. POST and poll. Send the thread above, then poll GET /posts/:postSubmissionId. The whole thread reports as one submission.

Threads from Claude rather than from code? The X tools are on the MCP server at https://mcp.blotato.com/mcp. Setup per client is on the X MCP server page, and the walkthrough of posting to X from Claude Code shows the prompt-to-post flow. A prompt like "Post this as a three-part thread on X and schedule it for 9am tomorrow." calls the same endpoint this page documents.

See every plan and its limits

X posting limits, character counts, and what it costs

Blotato publishes no X-specific daily cap in its posting limits. X itself returns a 429 after 100 requests per user per 24 hours, and that error surfaces on the post status rather than being hidden.

X limitValue through Blotato
Blotato daily capnone; X returns 429 after 100 requests per user per 24 hours
Text280 characters, 25,000 on Premium
Media per post4 photos, 1 GIF, or 1 video
Imagesup to 5 MB; GIFs up to 15 MB
Videoup to 512 MB, 0.5 to 140 seconds
Off-spec videoconverted by Blotato only under 120 seconds

What X's own tiers cost, which endpoints left the self-serve tiers, and how the credit math works is the entire subject of the X API pricing guide.

On X, this API covers publishing, scheduling and analytics. Comments, DMs and DM automation are Instagram and Facebook only. Caps are listed at help.blotato.com/settings/social-accounts.

MCP tools that reach X

The tool names an agent calls on the MCP server for this platform, verbatim from the server's tool list. The REST endpoint behind each one is in the API reference.

  • blotato_list_accounts
  • blotato_create_post
  • blotato_get_post_status
  • blotato_list_posts
  • blotato_list_schedules
  • blotato_get_schedule
  • blotato_update_schedule
  • blotato_delete_schedule
  • blotato_create_presigned_upload_url
  • blotato_list_top_posts
  • blotato_get_post_analytics
FAQ

X posting API FAQs

01 Can I post a thread to X with one API call?
Yes. Put the first post in content.text and the rest in content.additionalPosts, each with its own text and mediaUrls. Blotato posts them as a reply chain and you never handle a tweet id.
02 Do I need an X developer account or API credits to use Blotato?
No. Blotato holds the X integration and its credentials, and the plan price is set by Blotato's tiers, not X's. You would need them only if you built directly on the X API.
03 Is this a Twitter API or an X API?
The same network under both names. The targetType value is still twitter, the platform is X, and the request publishes to your X account whichever name you searched for.
04 Does the API return X post analytics?
Yes. GET /analytics ranks published X posts by views, reach, likes, or comments, and GET /posts/:id/analytics returns the metric history for one post.

Same key, eight more platforms

X is one targetType on the same endpoint. The social media API page has the comparison table of every platform's required fields and caps.