Saltar al contenido principal
En esta guía aprenderás a cargar videos y archivos multimedia grandes mediante el flujo de trabajo de carga fragmentada. Para cargas de video o contenido multimedia de gran tamaño, debes:
  1. INIT — Inicializar la carga y obtener un media_id
  2. APPEND — Cargar cada fragmento del archivo
  3. FINALIZE — Completar la carga
  4. STATUS — (Si es necesario) Esperar a que finalice el procesamiento
Consulta este código de ejemplo para ver un ejemplo completo en Python.

Paso 1: Inicializar la carga (INIT)

Inicia la sesión de carga para obtener un media_id:
cURL
curl -X POST "https://api.x.com/2/media/upload" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  -H "Content-Type: multipart/form-data" \
  -F "command=INIT" \
  -F "media_type=video/mp4" \
  -F "total_bytes=1048576" \
  -F "media_category=amplify_video"
Respuesta:
{
  "data": {
    "id": "1880028106020515840",
    "media_key": "13_1880028106020515840",
    "expires_after_secs": 1295999
  }
}

Paso 2: Cargar fragmentos (APPEND)

Carga cada fragmento del archivo. Por ejemplo, divide un archivo de 3 MB en 3 fragmentos:
cURL
curl -X POST "https://api.x.com/2/media/upload" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  -H "Content-Type: multipart/form-data" \
  -F "command=APPEND" \
  -F "media_id=1880028106020515840" \
  -F "segment_index=0" \
  -F "media=@/path/to/chunk1.mp4"
Ventajas de usar fragmentos:
  • Mayor fiabilidad en redes lentas
  • Las cargas se pueden pausar y reanudar
  • Los fragmentos que fallen se pueden volver a intentar de forma individual

Paso 3: Finalizar la carga (FINALIZE)

Completa la carga después de enviar todos los fragmentos:
cURL
curl -X POST "https://api.x.com/2/media/upload" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  -H "Content-Type: multipart/form-data" \
  -F "command=FINALIZE" \
  -F "media_id=1880028106020515840"
Respuesta:
{
  "data": {
    "id": "1880028106020515840",
    "media_key": "13_1880028106020515840",
    "size": 1048576,
    "expires_after_secs": 86400,
    "processing_info": {
      "state": "pending",
      "check_after_secs": 1
    }
  }
}
Si se devuelve processing_info, continúa con el Paso 4 para esperar a que finalice el procesamiento. Si no, el contenido multimedia está listo para usarse.

Paso 4: Comprobar el estado (STATUS)

Si se devolvió processing_info, realiza consultas periódicas hasta que finalice el procesamiento:
cURL
curl "https://api.x.com/2/media/upload?command=STATUS&media_id=1880028106020515840" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN"
Estados de procesamiento: pendingin_progresssucceeded o failed

Paso 5: Crea una Publicación con contenido multimedia

Cuando haya finalizado el procesamiento, crea una Publicación con el contenido multimedia:
cURL
curl -X POST "https://api.x.com/2/tweets" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Check out this video!",
    "media": {
      "media_ids": ["1880028106020515840"]
    }
  }'

Categorías de medios

CategoríaDescripción
tweet_imageImagen para una Publicación
tweet_gifGIF animado para una Publicación
tweet_videoVideo para una Publicación
amplify_videoVideo de Amplify

Próximos pasos

Mejores prácticas

Requisitos y limitaciones de archivos

Crear Publicaciones

Publicación con contenido multimedia

Referencia de la API

Documentación completa del endpoint