Skip to main content
POST
/
2
/
media
/
upload
Upload media
curl --request POST \
  --url https://api.x.com/2/media/upload \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "media": "<string>",
  "media_category": "tweet_image",
  "additional_owners": [
    "2244994945"
  ],
  "media_type": "image/png",
  "shared": false
}
'
{
  "data": {
    "expires_after_secs": 123,
    "id": "1146654567674912769",
    "media_key": "<string>",
    "processing_info": {
      "check_after_secs": 123,
      "progress_percent": 123,
      "state": "succeeded"
    },
    "size": 123
  },
  "errors": [
    {
      "title": "<string>",
      "type": "<string>",
      "detail": "<string>",
      "status": 123
    }
  ]
}

Documentation Index

Fetch the complete documentation index at: https://docs.x.com/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Body

media
required

The file to upload.

media_category
enum<string>
required

A string enum value which identifies a media use-case. This identifier is used to enforce use-case specific constraints (e.g. file size) and enable advanced features.

Available options:
tweet_image,
dm_image,
subtitles
Example:

"tweet_image"

additional_owners
string[]

Unique identifier of this User. This is returned as a string in order to avoid complications with languages and tools that cannot handle large integers.

Pattern: ^[0-9]{1,19}$
media_type
enum<string>

The type of image or subtitle.

Available options:
text/srt,
text/vtt,
image/jpeg,
image/bmp,
image/png,
image/webp,
image/pjpeg,
image/tiff
Example:

"image/png"

shared
boolean
default:false

Whether this media is shared or not.

Response

The request has succeeded.

A response from getting a media upload request status.

data
object
errors
object[]
Minimum array length: 1

An HTTP Problem Details object, as defined in IETF RFC 7807 (https://tools.ietf.org/html/rfc7807).