> ## Documentation Index
> Fetch the complete documentation index at: https://generaltranslation.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Bonnes pratiques

Il y a quelques concepts importants à comprendre lors de l’utilisation de l’endpoint [`POST /2/media/upload`](/fr/x-api/media/media-upload). Le téléversement de médias avec OAuth peut être un peu délicat, c’est pourquoi nous avons rassemblé ci-dessous certains éléments à garder à l’esprit, ainsi qu’un exemple fonctionnel d’utilisation de cet endpoint.

<div id="keep-in-mind">
  ## À garder à l’esprit
</div>

* Vous pouvez joindre jusqu’à 4 photos, 1 GIF animé ou 1 vidéo dans une Publication.
* L’image transmise doit être le binaire brut de l’image ou un binaire encodé en base64 ; il n’est pas nécessaire d’encoder ou d’échapper le contenu autrement tant que le Content-Type est correctement défini (en cas de doute : `application/octet-stream`).
* Lorsque vous publiez des images encodées en base64, veillez à définir « Content-Transfer-Encoding: base64 » pour la partie image du message.
* Les délimitations de message multipart (boundaries) doivent se trouver sur leur propre ligne et être terminées par un CRLF.
* Pour des exemples concrets d’utilisation de POST avec ce point de terminaison, nous vous recommandons de faire des tests avec [xurl](https://github.com/xdevplatform/xurl). Consultez également les [bibliothèques X](/fr/resources/tools-and-libraries) disponibles.
* Utilisez le `media_id_string` fourni dans la réponse de l’API pour JavaScript et tout autre langage qui ne peut pas représenter correctement un entier long.

<div id="media-categories">
  ## Catégories de médias
</div>

Le paramètre de catégorie de média définit le cas d’utilisation du fichier média à téléverser et peut affecter les limites de taille de fichier ou d’autres contraintes appliquées aux téléversements de médias. Il est important d’utiliser la catégorie de média appropriée lors du téléversement afin d’éviter des problèmes au moment d’utiliser ce média. Il s’agit d’une valeur optionnelle transmise dans la requête INIT dans le cadre du flux de téléversement. Si aucune catégorie de média n’est spécifiée, le média téléversé est considéré comme un média destiné à une Publication (`tweet_image`, `tweet_video` ou `tweet_gif`), en fonction du type de contenu.

Les catégories de médias les plus courantes sont les suivantes :

* `tweet_image`
* `tweet_video`
* `tweet_gif`
* `dm_image`
* `dm_video`
* `dm_gif`
* `subtitles`

Si vous êtes un partenaire de l’Ads API, veuillez consulter [cette documentation](/fr/x-ads-api/creatives#promoted-video) pour plus d’informations sur la catégorie de média recommandée pour les vidéos sponsorisées.

<div id="image-specifications-and-recommendations">
  ## Spécifications et recommandations pour les images
</div>

Les fichiers image doivent respecter tous les critères suivants :

* **Types de médias image pris en charge** : `JPG`, `PNG`, `GIF`, `WEBP`
* **Taille de l'image** : `<= 5 MB`
* **Taille du GIF animé** : `<= 15 MB`

La limite de taille de fichier ci‑dessus est appliquée par l'endpoint de téléchargement de médias. En outre, il existe une limite de taille de fichier propre à une entité de produit spécifique, qui est appliquée lors de l'appel des endpoints de création de Publication (ou similaires) avec `media_id`. La limite de taille de fichier et d'autres contraintes peuvent varier en fonction du paramètre `media_category`.

<div id="animated-gif-recommendations">
  ## Recommandations pour les GIF animés
</div>

Un GIF peut échouer lors de la création d’une Publication même s’il respecte la limite de taille de fichier. Respectez les contraintes suivantes pour augmenter les chances de réussite.

* **Résolution** : `<= 1280x1080` (`width` x `height`)
* **Nombre d’images** : `<= 350`
* **Nombre de pixels** : `<= 300 millions` (`width` \* `height` \* `num_frames`)
* **Taille de fichier** : `<= 15Mb`

Pour traiter des GIF plus volumineux, utilisez le point de terminaison de [téléversement en segments](/fr/x-api/media/quickstart/media-upload-chunked) avec le paramètre `media_category`. Cela permet au serveur de traiter le fichier GIF de manière asynchrone, ce qui est nécessaire pour traiter des fichiers plus volumineux. Indiquez `media_category=tweet_gif` pour activer le comportement de téléversement asynchrone pour les Publications contenant un GIF animé.

<div id="video-specifications-and-recommendations">
  ## Spécifications et recommandations pour la vidéo
</div>

Veuillez utiliser l’Async Path pour les téléversements de médias.

<div id="recommended">
  ### Recommandé
</div>

* **Codec vidéo** : `H264 High Profile`
* **Fréquences d’images** : `30 FPS`, `60 FPS`
* **Résolution vidéo** : `1280x720` (paysage), `720x1280` (portrait), `720x720` (carré). Les utilisateurs abonnés peuvent téléverser une vidéo en 1080p et obtenir une lecture en 1080p. Les utilisateurs non abonnés peuvent téléverser une vidéo en 720p et obtenir une lecture en 720p.
* **Débit vidéo minimal** : `5,000 kbps`
* **Débit audio minimal** : `128 kbps`
* **Codec audio** : `AAC LC`
* **Format d’image** : `16:9` (paysage ou portrait), `1:1` (carré)

<div id="advanced">
  ### Avancé
</div>

* **Fréquence d’image** : doit être de `60 FPS` ou moins
* **Dimensions** : doivent être comprises entre `32x32` et `1280x1024`
* **Taille du fichier** : ne doit pas dépasser `512 MB`
* **Durée** : doit être comprise entre `0,5 seconde` et `140 secondes`
* **Ratio d’aspect** : doit être compris entre `1:3` et `3:1`
* **[Ratio d’aspect des pixels](https://en.wikipedia.org/wiki/Pixel_aspect_ratio)** : doit être de `1:1`
* **Format de pixels** : seul le format [YUV](https://en.wikipedia.org/wiki/YUV) 4:2:0 est pris en charge
* L’audio doit être au format [`AAC` avec profil Low Complexity](https://en.wikipedia.org/wiki/Advanced_Audio_Coding#Modular_encoding). (`AAC` High-Efficiency n’est pas pris en charge)
* L’audio doit être en `mono` ou `stéréo`, pas en 5.1 ou plus
* Ne doit pas contenir de [`open GOP`](https://en.wikipedia.org/wiki/Group_of_pictures)
* Doit utiliser un [`progressive scan`](https://en.wikipedia.org/wiki/Progressive_scan)

<div id="additional-information">
  ### Informations supplémentaires
</div>

Dans le tableau ci-dessous, chaque ligne correspond à une recommandation de téléversement, sans caractère obligatoire. Tous les téléversements sont traités afin d’être optimisés pour plusieurs plateformes.

| Orientation | Largeur | Hauteur | Débit vidéo | Débit audio |
| :---------- | :------ | :------ | :---------- | :---------- |
| Paysage     | 1280    | 720     | 2048K       | 128K        |
| Paysage     | 640     | 360     | 768K        | 64K         |
| Paysage     | 320     | 180     | 256K        | 64K         |
| Portrait    | 720     | 1280    | 2048K       | 128K        |
| Portrait    | 360     | 640     | 768K        | 64K         |
| Portrait    | 180     | 320     | 256K        | 64K         |
| Carré       | 720     | 720     | 2048K       | 128K        |
| Carré       | 480     | 480     | 768K        | 64K         |
| Carré       | 240     | 240     | 256K        | 32K         |

Pour un exemple de téléversement de média, consultez la [documentation sur le téléversement de médias par segments](/fr/x-api/media/quickstart/media-upload-chunked).

<div id="troubleshooting">
  ### Dépannage
</div>

En cas de problème avec les API Media, consultez la [catégorie Media API](https://devcommunity.x.com/c/x-api/media-apis) sur les forums pour développeurs pour trouver une réponse.
