Skip to main content
POST
/
2
/
media
/
upload
/
initialize
Initialize media upload
curl --request POST \
  --url https://api.x.com/2/media/upload/initialize \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "additional_owners": [
    "2244994945"
  ],
  "media_category": "tweet_video",
  "media_type": "video/mp4",
  "shared": true,
  "total_bytes": 8589934592
}
'
{
  "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

application/json
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_category
enum<string>

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

Available options:
amplify_video,
tweet_gif,
tweet_image,
tweet_video,
dm_gif,
dm_image,
dm_video,
subtitles
Example:

"tweet_video"

media_type
enum<string>

The type of media.

Available options:
video/mp4,
video/webm,
video/mp2t,
video/quicktime,
text/srt,
text/vtt,
image/jpeg,
image/gif,
image/bmp,
image/png,
image/webp,
image/pjpeg,
image/tiff,
model/gltf-binary,
model/vnd.usdz+zip
Example:

"video/mp4"

shared
boolean

Whether this media is shared or not.

total_bytes
integer

The total size of the media upload in bytes.

Required range: 0 <= x <= 17179869184

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