Skip to content

Post a tweet

POST/v1/x/tweets
MCPx_tweet5 creditsLiveNeeds a connected X account

Updated

Description

Post a tweet or a reply from a connected X account. Needs accountId, text (up to 280 characters) and an idempotencyKey; pass replyToTweetId to reply. Costs 5 credits on success. Tip: never post the same text twice; X rejects duplicates and that reply fails.

Parameters

accountId body, string, required
Id of an X account you connected in the dashboard.
text body, string, required
Tweet text, up to 280 characters.
replyToTweetId body, string
Tweet id or URL to reply to.

Send an Idempotency-Key header with every write, so a retry never acts twice.

Request examples

curl -X POST "https://chatterapi.com/v1/x/tweets" \
  -H "Authorization: Bearer $CHATTERAPI_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "accountId": "8b0e6a52-1f7c-4a3e-9d2b-5c1e7f0a9b11",
  "text": "Shipping notes for this week are up."
}'

Response

data is one XWriteResult. Fields:

FieldTypeNullableDescription
okbooleannoAlways true on success.
actionenumnoWhat was done.
accountIdstringnoConnected account that acted.
targetIdstringyesTarget user or tweet id.
resultIdstringyesId of what was created, if any.
dryRunbooleannoTrue when nothing was sent.
response
{
  "data": {
    "ok": true,
    "action": "tweet",
    "accountId": "8b0e6a52-1f7c-4a3e-9d2b-5c1e7f0a9b11",
    "targetId": null,
    "resultId": "dry_tweet",
    "dryRun": true
  },
  "credits": {
    "charged": 5,
    "remaining": 24997
  },
  "requestId": "req_01JA7Q3V8K2N4P5R6S7T8V",
  "cached": false
}

Recorded live response captured 2026-10-14T00:00:00.000Z, truncated to 3 items. Credits and request id are illustrative.

Credits

5 credits per call. Failed calls cost 0. Cached responses cost the same. Test keys cost 0.

Errors this endpoint can return

Try it