Twitter Media Status API | Check Upload Readiness
Return the async processing state of a media_id from Upload Media, so a caller can verify readiness before attaching a video, GIF, or large-media id to a tweet. Runs as your own logged-in account. Billed at $0.0008 per call. Cost: $0.0008 per call.
Media Status returns the async processing state of an uploaded media_id, so you can confirm a video, GIF, or large image finished processing before you attach it to a tweet. It is a single $0.0008 read with bearer auth, returning the current state, a suggested retry delay, and the progress percentage.
Authorization
bearerAuth Pass your API key as a bearer token on every request: Authorization: Bearer <API_KEY>.
In: header
Query Parameters
Numeric media ID (as a string) returned by media/upload.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/media/status?media_id=1899999999999999999"{ "media_id": "1899999999999999999", "state": "succeeded", "check_after_secs": 0, "progress_percent": 100}{ "error": "bad_request", "message": "Missing or malformed parameter. Fix the request before retrying."}{ "error": "unauthorized", "message": "The API key is missing, malformed, or revoked. Check the Authorization header."}{ "error": "insufficient_credits", "message": "Your balance is exhausted. Top up your credits to continue."}{ "error": "not_found", "message": "The resource does not exist, for example a deleted tweet or a private account."}{ "error": "rate_limited", "message": "Too many requests. Back off and retry with exponential backoff."}{ "error": "server_error", "message": "Something failed on our side. Retry with backoff; if it persists, contact support."}Pricing
| Unit | Price |
|---|---|
| Per call | $0.0008 |
| Per 1,000 calls | $0.80 |
When to use
Use it after Upload Media to poll a media_id until state is succeeded, then call Create Tweet. Small images return succeeded immediately; videos, GIFs, and large media process asynchronously and need this check before they can be attached.
Related endpoints
- Upload Media: Upload an image and get a media_id to attach to a tweet.
FAQ
How do I know when an uploaded media_id is ready?
Poll GET /twitter/media/status with the media_id. When state is succeeded the media is ready to attach to a tweet; while it is pending or in_progress, wait check_after_secs seconds and poll again.
Do images need a status check?
Small images usually return succeeded on the first check, so one call is enough. Videos, GIFs, and large media process asynchronously, so poll until state is succeeded before creating the tweet.
What does a failed state mean?
Processing failed upstream and the media_id cannot be attached. The error field carries the reason; upload the media again to get a fresh media_id.
Upload Media POST
Upload a base64-encoded image as the authenticated account and receive a media_id you can attach when creating a tweet. Runs as your own logged-in account. Billed at $0.0008 per call. Cost: $0.0008 per call.
Overview
Direct Messages: Read your account's DM inbox and the message history of a single conversation. Read-only; requires a registered session.