Create Post With Media
POST
/tw-v2/interaction/create-post-with-mediaDescription
Post a new tweet with media attachments to the platform. Supports text content up to 280 characters for non-premium users (or 25,000 for premium users) and up to 4 images or 1 video.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| authToken | string | required | Account authentication token (auth_token cookie value) |
| text | string | required | The text content of the tweet (max 280 characters for non-premium, 25,000 for premium) |
| media | array | required | Array of media objects (1-4 items). Each object must use exactly one source: {url: string}, {data: string, type: string}, or {media_id: string}. |
| proxy | string | required | Proxy in format 'hostname:port@username:password' (required for better success rates) |
| disableLinkPreview | boolean | optional | When true, disables link preview cards for tweets containing URLs (defaults to false) |
| replyOption | object | optional | Optional reply controls. Use mode: everyone, accounts_you_follow, accounts_you_follow_and_followed, mentioned_accounts, verified_accounts, or regions. |
Media Input
Each item in media can be one of:
{ "url": "https://example.com/image.jpg" }: TweetAPI fetches and uploads the media.{ "data": "<base64>", "type": "image/png" }: TweetAPI uploads base64 media with the provided MIME type.{ "media_id": "1971008286821380096" }: attach a caller-managed Twitter media ID directly.
When using media_id, upload and finalize the media with the same Twitter/X account first, wait for video or GIF processing to finish, then pass the returned media_id_string. TweetAPI does not pre-validate ownership, expiry, processing state, or media category.
Reply Options
Use replyOption to control who can reply to the post.
everyone: everyone can reply, same as omittingreplyOptionaccounts_you_follow: only accounts you follow can replyaccounts_you_follow_and_followed: accounts you follow and accounts they follow can replymentioned_accounts: only accounts mentioned in the post can replyverified_accounts: only verified accounts can replyregions: only accounts from selected region buckets can reply
For regions, include a regions array with one or more of: NAM, EAS, AFR, SEA, SAM, EUR, AUS, SAS, WES, CAS.
Code Examples
const body = {
authToken: 'YOUR_AUTH_TOKEN',
text: 'Hello, world!',
media: [{"url":"https://example.com/link-94089/profile-29900/image.jpg"}],
replyOption: {
mode: 'verified_accounts'
}
};
const response = await fetch('https://api.tweetapi.com/tw-v2/interaction/create-post-with-media', {
method: 'POST',
headers: {
'X-API-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify(body)
});
const data = await response.json();
console.log(data);
Response
Success Response (200 OK)
200
{
"data": {
"id": "1001316498357235765",
"action": "create_tweet",
"timestamp": "2025-10-02T09:18:23.079Z",
"success": true,
"metadata": {
"tweet_id": "2001123465058274004",
"author_username": "username",
"text": "Sample post text 25423 for documentation.",
"created_at": "Thu Oct 02 09:18:22 +0000 2025",
"url": "https://example.com/link-94089/profile-41921/username/status/2001524548149483403"
}
}
}API Playground
POST
/tw-v2/interaction/create-post-with-mediaSensitive Credentials Required
Requires your Twitter authToken. Use a test account.
Press ⌘ + Enter to execute
curl -X POST "https://api.tweetapi.com/tw-v2/interaction/create-post-with-media" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json"Response
Click "Try It!" to see the response