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

# Boas práticas

> Conceitos importantes e boas práticas para usar o endpoint POST /2/media/upload. Referência para o nível standard da API do X v2 cobrindo quickstart.

Há alguns conceitos importantes para entender ao usar o endpoint [`POST /2/media/upload`](/x-api/media/upload-media). Fazer upload de mídia com OAuth pode ser um pouco complicado, por isso descrevemos algumas coisas para manter em mente, bem como um exemplo funcional de como usar este endpoint aqui.

## Tenha em mente

* Você pode anexar até 4 fotos, 1 GIF animado ou 1 vídeo em um Post.
* A imagem passada deve ser o binário raw da imagem ou binário codificado em base64, sem necessidade de outra codificação ou escape do conteúdo, desde que o Content-Type esteja definido apropriadamente (na dúvida: `application/octet-stream`).
* Ao postar imagens codificadas em base64, certifique-se de definir "Content-Transfer-Encoding: base64" na parte da imagem da mensagem.
* As fronteiras de mensagens multi-part devem estar em sua própria linha e terminadas por um CRLF.
* Para exemplos funcionais de como fazer POST usando este endpoint, recomendamos testar com [xurl](https://github.com/xdevplatform/xurl). Além disso, dê uma olhada nas [Bibliotecas do X](/resources/tools-and-libraries) disponíveis.
* Use o `media_id_string` fornecido na resposta da API para JavaScript e quaisquer outras linguagens que não podem representar com precisão um inteiro longo.

## Categorias de mídia

O parâmetro Media Category define o caso de uso do arquivo de mídia a ser enviado e pode afetar limites de tamanho de arquivo ou outras restrições aplicadas para uploads de mídia. É importante usar a categoria de mídia correta ao fazer upload para evitar problemas ao tentar usar a mídia. É um valor opcional passado na solicitação INIT como parte do fluxo de upload. Se a categoria de mídia não for especificada, presume-se que a mídia enviada seja para um Post (`tweet_image`, `tweet_video` ou `tweet_gif`), dependendo do content type.

As categorias de mídia mais comuns são:

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

Se você é parceiro Ads API, consulte [esta documentação](/x-ads-api/creatives#promoted-video) para mais informações sobre a categoria de mídia recomendada para promoted video.

## Especificações e recomendações de imagem

Arquivos de imagem devem atender a todos os seguintes critérios:

* **Tipos de mídia de imagem suportados**: `JPG`, `PNG`, `GIF`, `WEBP`
* **Tamanho da imagem**: `<= 5 MB`
* **Tamanho do GIF animado**: `<= 15 MB`

O limite de tamanho de arquivo acima é aplicado pelo endpoint de upload de mídia. Além disso, há um limite separado específico de entidade de produto aplicado ao chamar endpoints de criação de Post (ou similares) com `media_id`. O limite de tamanho de arquivo e outras restrições podem variar dependendo do parâmetro `media_category`.

## Recomendações para GIF animado

Um GIF pode falhar durante a criação de Post mesmo estando dentro do limite de tamanho de arquivo. Siga as seguintes restrições para melhorar as taxas de sucesso.

* **Resolução**: `<= 1280x1080` (`width` x `height`)
* **Número de frames**: `<= 350`
* **Número de pixels**: `<= 300 milhões` (`width` \* `height` \* `num_frames`)
* **Tamanho do arquivo**: `<= 15Mb`

Para processar GIFs maiores, use o endpoint [chunked upload](/x-api/media/quickstart/media-upload-chunked) com o parâmetro `media_category`. Isso permite que o servidor processe o arquivo GIF de forma assíncrona, o que é um requisito para processar arquivos maiores. Passe `media_category=tweet_gif` para habilitar o comportamento de upload assíncrono para Posts com um GIF animado.

## Especificações e recomendações de vídeo

Use o Async Path para uploads de mídia.

### Recomendado

* **Video Codec**: `H264 High Profile`
* **Frame Rates**: `30 FPS`, `60 FPS`
* **Resolução de vídeo**: `1280x720` (paisagem), `720x1280` (retrato), `720x720` (quadrado). Usuários assinantes podem enviar um vídeo 1080p e obter reprodução 1080p. Usuários não assinantes podem enviar um vídeo 720p e obter reprodução 720p.
* **Bitrate mínimo de vídeo**: `5,000 kbps`
* **Bitrate mínimo de áudio**: `128 kbps`
* **Codec de áudio**: `AAC LC`
* **Aspect Ratio**: `16:9` (paisagem ou retrato), `1:1` (quadrado)

### Avançado

* **Frame rate**: deve ser `60 FPS` ou menos
* **Dimensões**: deve estar entre `32x32` e `1280x1024`
* **Tamanho do arquivo**: não deve exceder `512 mb`
* **Duração**: deve estar entre `0.5 segundos` e `140 segundos`
* **Aspect ratio**: deve estar entre `1:3` e `3:1`
* **[Pixel aspect ratio](https://en.wikipedia.org/wiki/Pixel_aspect_ratio)**: deve ter `1:1`
* **Formato de pixel**: Apenas [YUV](https://en.wikipedia.org/wiki/YUV) 4:2:0 é suportado
* Áudio deve ser [`AAC` com perfil Low Complexity](https://en.wikipedia.org/wiki/Advanced_Audio_Coding#Modular_encoding). (High-Efficiency `AAC` não é suportado)
* Áudio deve ser `mono` ou `stereo`, não 5.1 ou superior
* Não deve ter [`open GOP`](https://en.wikipedia.org/wiki/Group_of_pictures)
* Deve usar [`progressive scan`](https://en.wikipedia.org/wiki/Progressive_scan)

### Informações adicionais

Na tabela abaixo, cada linha representa uma recomendação de upload, mas não é um requisito. Todos os uploads são processados para otimização em várias plataformas.

| Orientação | Width | Height | Video Bitrate | Audio Bitrate |
| :--------- | :---- | :----- | :------------ | :------------ |
| Paisagem   | 1280  | 720    | 2048K         | 128K          |
| Paisagem   | 640   | 360    | 768K          | 64K           |
| Paisagem   | 320   | 180    | 256K          | 64K           |
| Retrato    | 720   | 1280   | 2048K         | 128K          |
| Retrato    | 360   | 640    | 768K          | 64K           |
| Retrato    | 180   | 320    | 256K          | 64K           |
| Quadrado   | 720   | 720    | 2048K         | 128K          |
| Quadrado   | 480   | 480    | 768K          | 64K           |
| Quadrado   | 240   | 240    | 256K          | 32K           |

Para um exemplo de como fazer upload de mídia, consulte a [documentação do chunked media upload](/x-api/media/quickstart/media-upload-chunked).

### Solução de problemas

Para problemas com as APIs de mídia, navegue pela [categoria Media API](https://devcommunity.x.com/c/x-api/media-apis) nos fóruns de desenvolvedores por uma resposta.
