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

# Mejores prácticas

Hay algunos conceptos importantes que debes comprender al usar el endpoint [`POST /2/media/upload`](/es/x-api/media/media-upload). Subir contenido multimedia con OAuth puede ser un poco complicado, por lo que hemos señalado algunas cosas que debes tener en cuenta, así como un ejemplo funcional de cómo usar este endpoint aquí.

<div id="keep-in-mind">
  ## Ten en cuenta
</div>

* Puedes adjuntar hasta 4 fotos, 1 GIF animado o 1 vídeo en una Publicación.
* La imagen enviada debe ser el binario sin procesar de la imagen o binario codificado en base64; no es necesario codificar ni escapar el contenido de otra forma siempre que el Content-Type esté configurado correctamente (en caso de duda: `application/octet-stream`).
* Al publicar imágenes codificadas en base64, asegúrate de establecer “Content-Transfer-Encoding: base64” en la parte de la imagen del mensaje.
* Los delimitadores de mensajes multiparte deben estar en su propia línea y terminar con un CRLF.
* Para ver ejemplos funcionales de cómo hacer POST usando este endpoint, recomendamos hacer pruebas con [xurl](https://github.com/xdevplatform/xurl). También, revisa las [bibliotecas de X](/es/resources/tools-and-libraries) disponibles.
* Usa el `media_id_string` proporcionado en la respuesta de la API para JavaScript y cualquier otro lenguaje que no pueda representar con precisión un entero largo.

<div id="media-categories">
  ## Categorías de medios
</div>

El parámetro de categoría de medios define el caso de uso del archivo multimedia que se va a cargar y puede afectar los límites de tamaño de archivo u otras restricciones aplicadas a las cargas de medios. Es importante utilizar la categoría de medios correcta al cargar contenido multimedia para evitar problemas al intentar usarlo. Es un valor opcional que se envía en la solicitud INIT como parte del flujo de carga. Si no se especifica la categoría de medios, se asume que el contenido cargado es para una Publicación (`tweet_image`, `tweet_video` o `tweet_gif`), según el tipo de contenido.

Las categorías de medios más comunes son las siguientes:

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

Si eres socio de la Ads API, consulta [esta documentación](/es/x-ads-api/creatives#promoted-video) para obtener más información sobre la categoría de medios recomendada para video promocionado.

<div id="image-specifications-and-recommendations">
  ## Especificaciones y recomendaciones para imágenes
</div>

Los archivos de imagen deben cumplir todos los siguientes criterios:

* **Tipos de medios de imagen admitidos**: `JPG`, `PNG`, `GIF`, `WEBP`
* **Tamaño de la imagen**: `<= 5 MB`
* **Tamaño del GIF animado**: `<= 15 MB`

El límite de tamaño de archivo anterior lo impone el endpoint de carga de medios. Además, existe un límite de tamaño de archivo específico de la entidad de producto correspondiente que se aplica al llamar a los endpoints de creación de Publicación (o similares) con `media_id`. El límite de tamaño de archivo y otras restricciones pueden variar según el parámetro `media_category`.

<div id="animated-gif-recommendations">
  ## Recomendaciones para GIF animados
</div>

Un GIF puede fallar durante la creación de la Publicación incluso si está dentro del límite de tamaño de archivo. Respeta las siguientes restricciones para mejorar las tasas de éxito.

* **Resolución**: `<= 1280x1080` (`width` x `height`)
* **Número de fotogramas**: `<= 350`
* **Número de píxeles**: `<= 300 millones` (`width` \* `height` \* `num_frames`)
* **Tamaño de archivo**: `<= 15 MB`

Para procesar GIF más grandes, usa el endpoint de [carga segmentada](/es/x-api/media/quickstart/media-upload-chunked) con el parámetro `media_category`. Esto permite que el servidor procese el archivo GIF de forma asíncrona, lo cual es un requisito para procesar archivos más grandes. Pasa `media_category=tweet_gif` para habilitar el comportamiento de carga asíncrona en Publicaciones con un GIF animado.

<div id="video-specifications-and-recommendations">
  ## Especificaciones y recomendaciones de video
</div>

Utiliza Async Path para las cargas de contenido multimedia.

<div id="recommended">
  ### Recomendado
</div>

* **Códec de video**: `H264 High Profile`
* **Frecuencias de fotogramas**: `30 FPS`, `60 FPS`
* **Resolución de video**: `1280x720` (horizontal), `720x1280` (vertical), `720x720` (cuadrado). Los usuarios con suscripción pueden subir un video en 1080p y obtener reproducción en 1080p. Los usuarios sin suscripción pueden subir un video en 720p y obtener reproducción en 720p.
* **Tasa de bits mínima de video**: `5,000 kbps`
* **Tasa de bits mínima de audio**: `128 kbps`
* **Códec de audio**: `AAC LC`
* **Relación de aspecto**: `16:9` (horizontal o vertical), `1:1` (cuadrado)

<div id="advanced">
  ### Avanzado
</div>

* **Frecuencia de fotogramas**: debe ser de `60 FPS` o menos
* **Dimensiones**: deben estar entre `32x32` y `1280x1024`
* **Tamaño de archivo**: no debe superar los `512 MB`
* **Duración**: debe estar entre `0,5 segundos` y `140 segundos`
* **Relación de aspecto**: debe estar entre `1:3` y `3:1`
* **[Relación de aspecto de píxel](https://en.wikipedia.org/wiki/Pixel_aspect_ratio)**: debe ser de `1:1`
* **Formato de píxel**: solo se admite [YUV](https://en.wikipedia.org/wiki/YUV) 4:2:0
* El audio debe ser [`AAC` con perfil de baja complejidad](https://en.wikipedia.org/wiki/Advanced_Audio_Coding#Modular_encoding). (`AAC` de alta eficiencia no es compatible)
* El audio debe ser `mono` o `stereo`, no 5.1 ni superior
* No debe tener [`open GOP`](https://en.wikipedia.org/wiki/Group_of_pictures)
* Debe usar [`progressive scan`](https://en.wikipedia.org/wiki/Progressive_scan)

<div id="additional-information">
  ### Información adicional
</div>

En la siguiente tabla, cada fila representa una recomendación de carga, pero no es obligatoria. Todas las cargas se procesan para optimizarlas en múltiples plataformas.

| Orientación | Ancho | Alto | Tasa de bits de vídeo | Tasa de bits de audio |
| :---------- | :---- | :--- | :-------------------- | :-------------------- |
| Horizontal  | 1280  | 720  | 2048K                 | 128K                  |
| Horizontal  | 640   | 360  | 768K                  | 64K                   |
| Horizontal  | 320   | 180  | 256K                  | 64K                   |
| Vertical    | 720   | 1280 | 2048K                 | 128K                  |
| Vertical    | 360   | 640  | 768K                  | 64K                   |
| Vertical    | 180   | 320  | 256K                  | 64K                   |
| Cuadrado    | 720   | 720  | 2048K                 | 128K                  |
| Cuadrado    | 480   | 480  | 768K                  | 64K                   |
| Cuadrado    | 240   | 240  | 256K                  | 32K                   |

Para ver un ejemplo de cómo cargar contenido multimedia, consulta la [documentación de carga de contenido multimedia por fragmentos](/es/x-api/media/quickstart/media-upload-chunked).

<div id="troubleshooting">
  ### Solución de problemas
</div>

Si tienes problemas con las Media APIs, revisa la [categoría Media API](https://devcommunity.x.com/c/x-api/media-apis) en los foros para desarrolladores para encontrar una solución.
