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.

Terminal showing a POST request to the AdaptlyPost twitter posting API publishing a tweet with two images to a connected X account

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.

Denys Zinych
Denys Zinych

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.

Irena
Irena

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.

Dorian Opacki
Dorian Opacki

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.

Denys Zinych
Denys Zinych

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.

Irena
Irena

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.

Dorian Opacki
Dorian Opacki

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.

Denys Zinych
Denys Zinych

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.

Irena
Irena

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.

Dorian Opacki
Dorian Opacki

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.

Denys Kholin
Denys Kholin

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.

Taras Shynkarenko
Taras Shynkarenko

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.

Denys Kholin
Denys Kholin

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.

Taras Shynkarenko
Taras Shynkarenko

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.

Denys Kholin
Denys Kholin

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.

Taras Shynkarenko
Taras Shynkarenko

Startup Founder

How it works

Step 1

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.

Step 2

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.

Step 3

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

Creator

Perfect for individuals and solopreneurs

$19

/month

  • 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

Pro

For professionals and growing teams

$39

/month

  • 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

Enterprise

For agencies and enterprises ready to scale

$89

/month

  • 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.