Docs
/v1/posts · Posts

Posts API

Create, list, update, and cancel posts you send through the API. This is the endpoint for bring-your-own tweet text and media, with optional auto-reply and auto-retweet — the same engines used in the XBeast app.

Post object

{
  "id": "10932",
  "account_id": "123456789",
  "status": "scheduled",
  "scheduled_at": "2026-08-25T16:00:00.000Z",
  "tweets": [
    { "text": "Hello from my CMS.", "media_url": "https://example.com/image.jpg" }
  ],
  "auto_reply": {
    "enabled": true,
    "max": 10,
    "like": false,
    "verified_only": false
  },
  "auto_retweet": { "enabled": true, "after_hours": 8 },
  "tweet_id": null,
  "url": null,
  "source": "api",
  "created_at": "2026-08-24T18:01:00.000Z"
}
FieldTypeRequiredDescription
idstringXBeast post id.
account_idstringConnected account id.
statusstringscheduled, posted, cancelled, error, or draft.
scheduled_atstring (ISO 8601)When the tweet should go live (UTC).
tweetsarrayThread items. One item is a single tweet.
tweets[].textstringsee noteTweet body. Required if media_url is omitted.
tweets[].media_urlstringsee noteHTTPS image or video URL. Required if text is empty.
auto_replyobjectAuto-reply settings applied after publish.
auto_retweetobjectenabled and after_hours (1–24).
tweet_idstring | nullNetwork post id after publish.
urlstring | nullPublic post URL after publish.
sourcestringAlways api for posts created here.

Create a post

POST/api/v1/posts
Omit scheduled_at (or send null) to publish immediately. A future ISO 8601 datetime schedules the post. Past times are rejected.

Body

FieldTypeRequiredDescription
account_idstringYesFrom GET /api/v1/accounts.
tweetsarrayYesAt least one { text, media_url? }.
scheduled_atstring | nullNoFuture ISO 8601. Omit or null to post now.
auto_reply.enabledbooleanNoReply to early comments (within 3 hours). Paid plans.
auto_reply.maxnumberNo10, 20, 30, 40, or 50. Default 10.
auto_reply.likebooleanNoLike the comment when replying.
auto_reply.verified_onlybooleanNoOnly reply to verified accounts.
auto_retweet.enabledbooleanNoRepost after after_hours. Undo happens automatically ~12 hours later.
auto_retweet.after_hoursintegerNo1–24. Default 8.
Schedule
curl -X POST "https://xbeast.io/api/v1/posts" \
  -H "Authorization: Bearer xb_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": "YOUR_ACCOUNT_ID",
    "tweets": [{ "text": "Shipping at noon.", "media_url": "https://example.com/img.jpg" }],
    "scheduled_at": "2026-08-25T16:00:00.000Z",
    "auto_reply": { "enabled": true, "max": 10, "like": false, "verified_only": false },
    "auto_retweet": { "enabled": true, "after_hours": 8 }
  }'
Post now
curl -X POST "https://xbeast.io/api/v1/posts" \
  -H "Authorization: Bearer xb_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": "YOUR_ACCOUNT_ID",
    "tweets": [{ "text": "Going out now." }]
  }'
Immediate posts return status: posted, tweet_id, and url when the network accepts them. The account must belong to you and have posting enabled. Publishing to X costs 1 credit per post (a thread counts as one). Posts with a URL cost 2 extra credits. Daily cap: 7 scheduled + posted tweets per account per day.

List posts

GET/api/v1/posts
Lists posts created via the API for the key owner.

Query

FieldTypeRequiredDescription
statusstringNoscheduled, posted, cancelled, error, or draft.
account_idstringNoFilter by connected account.
limitnumberNoDefault 50, max 100.
curl "https://xbeast.io/api/v1/posts?status=scheduled&limit=20" \
  -H "Authorization: Bearer xb_live_YOUR_KEY"
Response: { "posts": [ ...Post ] }

Get a post

GET/api/v1/posts/:id
curl "https://xbeast.io/api/v1/posts/10932" \
  -H "Authorization: Bearer xb_live_YOUR_KEY"

Update a post

PATCH/api/v1/posts/:id
Only unsent posts. You cannot update a posted or cancelled post. Changing scheduled_at or account_id re-checks the daily cap.

Body (all optional)

FieldTypeRequiredDescription
account_idstringNoMove to another connected account.
tweetsarrayNoReplace thread content.
scheduled_atstringNoMust be a future datetime (cannot clear to post-now via PATCH).
auto_replyobjectNoSame shape as create.
auto_retweetobjectNoSame shape as create.
curl -X PATCH "https://xbeast.io/api/v1/posts/10932" \
  -H "Authorization: Bearer xb_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "scheduled_at": "2026-08-25T18:00:00.000Z" }'

Cancel or delete

DELETE/api/v1/posts/:id
Scheduled posts are cancelled (they stay in history as cancelled). Drafts are deleted. Posted posts cannot be deleted via the API.
curl -X DELETE "https://xbeast.io/api/v1/posts/10932" \
  -H "Authorization: Bearer xb_live_YOUR_KEY"
{ "message": "Post cancelled" }

Related