Ship Tweets From Your Backend With a Twitter Posting API
One authenticated POST to /social-posts is the entire Twitter posting API integration: send text, up to four images, or a video to your connected X account, publish immediately or queue it with scheduledAt and an IANA timezone.

The X posting API surface, in full
REST over HTTPS at https://post.adaptlypost.com/post/api/v1, a bearer token, and a JSON body. The 280-character limit and the four-image ceiling are validated on our side, so a bad tweet fails with a 400 instead of a partial publish on X.
Trusted by Creators and Teams
See how creators, marketers, and small businesses use AdaptlyPost to stay consistent and save hours every week.
I'm a software engineer, not a marketer. My partner runs a TikTok page, so I help out by scheduling her posts, I batch everything in one sitting and let the AI handle the captions. Takes me about 20 minutes a week now.
Software Engineer
I run my nail art page and a personal brand. Scheduling both from one dashboard changed everything, I actually post consistently now and my engagement went up pretty noticeably within a month.
Content Creator
I'm an SWE and honestly terrible at posting consistently. I just line up a week of updates for my personal brand whenever I have a spare minute, and the AI drafts captions per platform so I'm not rewriting the same thing five different ways.
Software Engineer
I'm a software engineer, not a marketer. My partner runs a TikTok page, so I help out by scheduling her posts, I batch everything in one sitting and let the AI handle the captions. Takes me about 20 minutes a week now.
Software Engineer
I run my nail art page and a personal brand. Scheduling both from one dashboard changed everything, I actually post consistently now and my engagement went up pretty noticeably within a month.
Content Creator
I'm an SWE and honestly terrible at posting consistently. I just line up a week of updates for my personal brand whenever I have a spare minute, and the AI drafts captions per platform so I'm not rewriting the same thing five different ways.
Software Engineer
I'm a software engineer, not a marketer. My partner runs a TikTok page, so I help out by scheduling her posts, I batch everything in one sitting and let the AI handle the captions. Takes me about 20 minutes a week now.
Software Engineer
I run my nail art page and a personal brand. Scheduling both from one dashboard changed everything, I actually post consistently now and my engagement went up pretty noticeably within a month.
Content Creator
I'm an SWE and honestly terrible at posting consistently. I just line up a week of updates for my personal brand whenever I have a spare minute, and the AI drafts captions per platform so I'm not rewriting the same thing five different ways.
Software Engineer
I'm not a social media person but I need to post my work somewhere. The AI writer drafts something decent, I tweak it a bit, schedule it, done. Went from posting once a month to three times a week.
Freelance Designer
We connected our OpenClaw agent to AdaptlyPost and now our AI posts product updates across all channels automatically. It sounds futuristic but honestly it just works. The API integration was straightforward.
Startup Founder
I'm not a social media person but I need to post my work somewhere. The AI writer drafts something decent, I tweak it a bit, schedule it, done. Went from posting once a month to three times a week.
Freelance Designer
We connected our OpenClaw agent to AdaptlyPost and now our AI posts product updates across all channels automatically. It sounds futuristic but honestly it just works. The API integration was straightforward.
Startup Founder
I'm not a social media person but I need to post my work somewhere. The AI writer drafts something decent, I tweak it a bit, schedule it, done. Went from posting once a month to three times a week.
Freelance Designer
We connected our OpenClaw agent to AdaptlyPost and now our AI posts product updates across all channels automatically. It sounds futuristic but honestly it just works. The API integration was straightforward.
Startup Founder
How it works
Handle Twitter OAuth once, in the dashboard
There is no OAuth flow in the API - you connect X in the dashboard, then create a key under Settings > API Tokens. Every request carries Authorization: Bearer adaptly_..., and GET /social-accounts returns the connected X account id you pass in twitterConnectionIds. For white-label setups, POST /connect-links mints a link your own end user opens to connect their X account.
POST the tweet to /social-posts
text, platforms, timezone and twitterConnectionIds are required on every call. X has no config object in the API - there is no twitterConfigs, so there is nothing per-platform to set: no polls, no quote posts, no replies, no first comment, no link-preview control. One X account per request is enforced with a 400, so posting the same tweet from two X accounts means two calls.
Read the X result and retry that entry
The request body is checked synchronously at create time: text past 280 characters, more than four images, or two X accounts in one call return a 400 immediately and no post record is written. GET /social-posts/:id/results reports what happened after we accepted and dispatched the tweet - the X entry with status, publishedAt, and platformPostId, the native tweet id, never a permalink. When X itself refuses the post - duplicate text, a connection whose token was revoked, a video it rejects during its own processing - the reason lands in errorMessage, and POST /social-posts/:id/retry re-fires only that platformId. Every registered webhook endpoint receives all four events - post.published, post.failed, post.partially_failed and post.scheduled - with no per-event subscription to choose from.
Simple, transparent pricing
Choose the perfect plan for your needs
30 connected social accounts
Unlimited scheduled posts
1 team member
3 workspaces
150 credits/month
AI Captions
AI Image Studio
API access & OpenClaw integration
Image, video & carousel posts
Most Popular
60 connected social accounts
Unlimited scheduled posts
5 team members
15 workspaces
400 credits/month
AI Captions
AI Image Studio
API access & OpenClaw integration
Image, video & carousel posts
100 connected social accounts
Unlimited scheduled posts
20 team members
50 workspaces
1000 credits/month
AI Captions
AI Image Studio
API access & OpenClaw integration
Image, video & carousel posts
All plans include a 7-day free trial
Want to see the full feature comparison? View pricing page
What you can post to Twitter via the API
Text tweets, checked at 280 characters
The full payload is text, platforms set to TWITTER, an IANA timezone, and twitterConnectionIds. Anything past 280 characters comes back as a 400 before the call reaches X - no silent truncation, and no automatic splitting, because reply chains are not supported anywhere in the API. One call is one tweet.
Up to four images per tweet
Attach one to four image URLs. Four is X's hard ceiling, and a multi-image tweet is exactly that - several images in one post, not a native X carousel unit. POST /upload-urls accepts image/jpeg, image/png and image/webp only, so GIF, HEIC and AVIF files cannot be pushed through it.
One video, up to 140 seconds
MP4 or MOV, 512 MB maximum, one video per tweet. X itself will not take a video mixed with images, so keep the two apart. Unlike TikTok, X accepts mediaUrls on your own HTTPS host, so you can skip the upload step entirely - or push files through POST /upload-urls for presigned links that expire in an hour.
Publish now, schedule, draft, or bulk-queue
Send scheduledAt with the timezone to queue a tweet, or saveAsDraft and fire POST /social-posts/:id/publish later. POST /social-posts/bulk takes 1-100 tweets in a single request, all sharing the same X connection, with scheduledAt required on every item. PATCH /social-posts/:id edits anything still unpublished.
Post your first tweet from code
Connect X in the dashboard, create a key at Settings > API Tokens, and send one POST to /social-posts. The spec at /openapi.json needs no auth and imports straight into Make, n8n, or your own client generator.