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

# Buenas prácticas

> Conceptos importantes y buenas prácticas para usar el endpoint POST /2/media/upload. Referencia para el nivel estándar de la X API v2 que cubre quickstart.

Hay algunos conceptos importantes que debes entender al usar el endpoint [`POST /2/media/upload`](/x-api/media/upload-media). Subir medios con OAuth puede ser un poco complicado, por lo que hemos descrito algunas cosas a tener en cuenta, así como una muestra funcional de cómo usar este endpoint aquí.

## Ten en cuenta

* Puedes adjuntar hasta 4 fotos, 1 GIF animado o 1 video en un Post.
* La imagen enviada debe ser el binario en bruto de la imagen o el binario codificado en base64, no es necesario codificar ni escapar el contenido siempre que el Content-Type esté configurado correctamente (en caso de duda: `application/octet-stream`).
* Al enviar imágenes codificadas en base64, asegúrate de establecer "Content-Transfer-Encoding: base64" en la parte de la imagen del mensaje.
* Los límites de mensajes multi-part deben estar en su propia línea y terminar con un CRLF.
* Para ejemplos funcionales de cómo hacer POST con este endpoint, recomendamos probar con [xurl](https://github.com/xdevplatform/xurl). También echa un vistazo a las [Bibliotecas de X](/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.

## Categorías de medios

El parámetro Media Category define el caso de uso del archivo de medios que se subirá, y puede afectar los límites de tamaño de archivo u otras restricciones aplicadas para las cargas de medios. Es importante usar la categoría de medio correcta al subir medios para evitar problemas al intentar usar el medio. Es un valor opcional que se pasa en la solicitud INIT como parte del flujo de carga. Si no se especifica la categoría de medio, se asume que el medio subido es para un Post (`tweet_image`, `tweet_video` o `tweet_gif`), dependiendo del 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 un partner de la Ads API consulta [estos documentos](/x-ads-api/creatives#promoted-video) para más información sobre la categoría de medio recomendada para videos promocionados.

## Especificaciones y recomendaciones para imágenes

Los archivos de imagen deben cumplir con todos los siguientes criterios:

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

El límite de tamaño de archivo anterior lo aplica el endpoint de carga de medios. Además, existe un límite de tamaño de archivo específico para la entidad del producto que se aplica al llamar a los endpoints de creación de Posts (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`.

## Recomendaciones para GIF animados

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

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

Para procesar GIFs más grandes, usa el endpoint de [carga por partes](/x-api/media/quickstart/media-upload-chunked) con el parámetro `media_category`. Esto permite al servidor procesar 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 para Posts con un GIF animado.

## Especificaciones y recomendaciones para videos

Utiliza la ruta asíncrona para las cargas de medios.

### Recomendado

* **Video Codec**: `H264 High Profile`
* **Frame Rates**: `30 FPS`, `60 FPS`
* **Resolución de video**: `1280x720` (horizontal), `720x1280` (vertical), `720x720` (cuadrado). Los usuarios suscritos pueden subir un video 1080p y obtener reproducción 1080p. Los usuarios no suscritos pueden subir un video 720p y obtener reproducción 720p.
* **Tasa de bits mínima de video**: `5,000 kbps`
* **Tasa de bits mínima de audio**: `128 kbps`
* **Audio Codec**: `AAC LC`
* **Relación de aspecto**: `16:9` (horizontal o vertical), `1:1` (cuadrado)

### Avanzado

* **Frame rate**: debe ser `60 FPS` o menos
* **Dimensiones**: deben estar entre `32x32` y `1280x1024`
* **Tamaño de archivo**: no debe exceder `512 mb`
* **Duración**: debe estar entre `0.5 seconds` y `140 seconds`
* **Relación de aspecto**: debe estar entre `1:3` y `3:1`
* **[Relación de aspecto de píxeles](https://en.wikipedia.org/wiki/Pixel_aspect_ratio)**: debe ser `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 Low Complexity](https://en.wikipedia.org/wiki/Advanced_Audio_Coding#Modular_encoding). (No se admite `AAC` High-Efficiency)
* El audio debe ser `mono` o `stereo`, no 5.1 o 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)

### Información adicional

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

| Orientación | Width | Height | Video Bitrate | Audio Bitrate |
| :---------- | :---- | :----- | :------------ | :------------ |
| 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 un ejemplo de cómo subir medios, consulta la [documentación de carga de medios por partes](/x-api/media/quickstart/media-upload-chunked).

### Solución de problemas

Para problemas con las APIs de Media, navega por la [categoría de Media API](https://devcommunity.x.com/c/x-api/media-apis) en los foros de desarrolladores para encontrar una respuesta.
