Create Post With Media

POST/tw-v2/interaction/create-post-with-media

Description

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

ParameterTypeRequiredDescription
authTokenstringrequiredAccount authentication token (auth_token cookie value)
textstringrequiredThe text content of the tweet (max 280 characters for non-premium, 25,000 for premium)
mediaarrayrequiredArray of media objects (1-4 items). Each object must use exactly one source: {url: string}, {data: string, type: string}, or {media_id: string}.
proxystringrequiredProxy in format 'hostname:port@username:password' (required for better success rates)
disableLinkPreviewbooleanoptionalWhen true, disables link preview cards for tweets containing URLs (defaults to false)
replyOptionobjectoptionalOptional 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 omitting replyOption
  • accounts_you_follow: only accounts you follow can reply
  • accounts_you_follow_and_followed: accounts you follow and accounts they follow can reply
  • mentioned_accounts: only accounts mentioned in the post can reply
  • verified_accounts: only verified accounts can reply
  • regions: 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-media

Sensitive 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