Passer au contenu principal
Ce guide vous explique étape par étape comment téléverser des vidéos et des fichiers média volumineux à l’aide du flux de travail de téléversement par segments. Pour les téléversements de vidéos ou de médias volumineux, vous devez :
  1. INIT — Initialiser le téléversement et obtenir un media_id
  2. APPEND — Téléverser chaque segment du fichier
  3. FINALIZE — Terminer le téléversement
  4. STATUS — (Si nécessaire) Attendre que le traitement soit terminé
Consultez cet exemple de code pour un exemple complet en Python.

Étape 1 : Initialiser le téléversement (INIT)

Démarrez la session de téléversement pour obtenir 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"
Réponse :
{
  "data": {
    "id": "1880028106020515840",
    "media_key": "13_1880028106020515840",
    "expires_after_secs": 1295999
  }
}

Étape 2 : Téléverser les segments (APPEND)

Téléversez chaque segment du fichier. Par exemple, découpez un fichier de 3 Mo en 3 segments :
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"
Avantages du découpage en segments :
  • Fiabilité améliorée sur les réseaux lents
  • Les téléversements peuvent être mis en pause et repris
  • Les segments qui ont échoué peuvent être retentés individuellement

Étape 3 : Finaliser le téléversement (FINALIZE)

Finalisez le téléversement après l’envoi de tous les blocs :
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"
Réponse :
{
  "data": {
    "id": "1880028106020515840",
    "media_key": "13_1880028106020515840",
    "size": 1048576,
    "expires_after_secs": 86400,
    "processing_info": {
      "state": "pending",
      "check_after_secs": 1
    }
  }
}
Si processing_info est retourné, passez à l’étape 4 pour attendre la fin du traitement. Sinon, le média est prêt à être utilisé.

Étape 4 : Vérifier le statut (STATUS)

Si processing_info est renvoyé, interrogez l’API jusqu’à la fin du traitement :
cURL
curl "https://api.x.com/2/media/upload?command=STATUS&media_id=1880028106020515840" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN"
États de traitement : pendingin_progresssucceeded ou failed

Étape 5 : Créer une Publication avec un média

Une fois le traitement terminé, créez une Publication avec un média :
cURL
curl -X POST "https://api.x.com/2/tweets" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Regardez cette vidéo !",
    "media": {
      "media_ids": ["1880028106020515840"]
    }
  }'

Catégories de médias

CatégorieDescription
tweet_imageImage pour une Publication
tweet_gifGIF animé pour une Publication
tweet_videoVidéo pour une Publication
amplify_videoVidéo Amplify

Prochaines étapes

Bonnes pratiques

Contraintes et exigences relatives aux fichiers

Créer des Publications

Publication avec des médias

Référence de l’API

Documentation complète de l’endpoint