Guia de upload com a API de Dados do YouTube para desenvolvedores (2026)

Guia de upload com a API de Dados do YouTube para desenvolvedores (2026)

Como funciona o videos.insert, por que projetos não verificados só podem fazer upload de vídeos privados, a sequência de upload retomável, e quanto um videos.insert custa em cota.

A API de Dados do YouTube faz upload de vídeos pelo videos.insert, e dois fatos documentados decidem se ela é viável para o seu produto. Vídeos enviados a partir de projetos de API não verificados criados depois de 28 de julho de 2020 ficam restritos ao modo privado até o projeto passar por uma auditoria. E o videos.insert consome seu próprio bucket de cota de 100 chamadas por dia, separado do conjunto de 10.000 unidades que o resto da API compartilha.

Lendo os dois juntos, o quadro fica claro: sem auditoria você não pode publicar publicamente, e sem um aumento de cota você não pode publicar com frequência.

O que a API de Dados do YouTube pode publicar, e o que é a barreira de auditoria?

O videos.insert faz upload de um arquivo de vídeo e define seus metadados: título, descrição, tags, categoria, e um privacyStatus de public, private ou unlisted. O tamanho máximo de arquivo documentado é 256GB, e os tipos MIME aceitos são video/* e application/octet-stream.

A barreira é a auditoria. A documentação do Google afirma que vídeos enviados a partir de projetos de API não verificados criados depois de 28 de julho de 2020 ficam restritos ao modo privado até o projeto passar por uma auditoria. Na prática, isso significa que sua integração funciona de ponta a ponta durante o desenvolvimento, produz um ID de vídeo real, e o vídeo fica invisível para todos exceto o dono do canal. Passar na auditoria é o que remove a restrição, de forma que privacyStatus: 'public' passa a ser respeitado.

Nota: os números aqui foram verificados em developers.google.com/youtube em setembro de 2026. As plataformas mudam isso sem aviso.

PerguntaResposta da documentação
Endpoint de uploadPOST https://www.googleapis.com/upload/youtube/v3/videos
Escoposyoutube.upload, youtube, youtubepartner ou youtube.force-ssl
Tamanho máximo de arquivo256GB
Tipos MIMEvideo/*, application/octet-stream
Valores de privacidadepublic, private, unlisted
Projetos não verificadosUploads restritos a privado até o projeto ser auditado

Qual é o modelo de autenticação, e quanto tempo leva a auditoria?

OAuth 2.0 padrão com acesso offline. Você redireciona o dono do canal para a tela de consentimento do Google solicitando https://www.googleapis.com/auth/youtube.upload, troca o código por um token de acesso e um token de renovação, e renova o token de acesso conforme ele expira.

Como o escopo de upload é um escopo sensível, seu projeto também passa pela verificação OAuth do Google, além da auditoria da API do YouTube. São duas revisões separadas, e as pessoas costumam confundi-las: a verificação OAuth rege a tela de consentimento e quantos usuários podem concedê-lo, a auditoria do YouTube rege se seus uploads podem ser algo além de privados.

Não conseguimos encontrar uma duração de retorno publicada para a auditoria da API do YouTube na documentação oficial, então não vamos afirmar uma. Considere que é medida em semanas, não em dias, e comece o processo antes de precisar dele.

Qual é a sequência de upload de fato?

Os uploads são retomáveis: você abre uma sessão de upload e depois envia os bytes para o URI da sessão. O vídeo então processa de forma assíncrona do lado do YouTube depois que sua solicitação é concluída.

  1. Abra uma sessão retomável. Faça um POST ao endpoint de upload com os metadados do vídeo em JSON e uploadType=resumable. A resposta retorna um URI de sessão no cabeçalho Location. Note que uploadType=resumable e o URI de sessão Location são a mecânica geral de upload retomável do Google, e não algo que a página de upload específica do YouTube documenta, que só mostra a biblioteca cliente Python.
  2. Faça um PUT dos bytes para esse URI de sessão, em uma única solicitação ou em blocos. Dividir em blocos permite retomar depois de uma falha de rede em vez de reiniciar um arquivo grande.
  3. Leia o ID do vídeo na resposta final. O upload agora está completo.
  4. Consulte o processamento. O YouTube transcodifica de forma assíncrona. O ID do vídeo existe antes de o vídeo ficar assistível, e o processamento pode falhar depois de um upload bem-sucedido.
# 1. open the resumable session
curl -X POST \
  "https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&part=snippet,status" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "X-Upload-Content-Type: video/mp4" \
  -d '{"snippet":{"title":"Release notes","categoryId":"28"},
       "status":{"privacyStatus":"private"}}' -D -

# 2. PUT the bytes to the Location URI returned above
curl -X PUT "$SESSION_URI" \
  -H "Content-Type: video/mp4" --data-binary @video.mp4

# 3. then poll videos.list for processing status using the returned video id

O próprio guia de upload do Google é um exemplo em Python construído em torno de MediaFileUpload com resumable=True e recuo exponencial em novas tentativas, e ele afirma claramente que o script de exemplo não faz tratamento de erros. Leve isso ao pé da letra: o exemplo é um ponto de partida, não um modelo para produção.

Nota: os números aqui foram verificados em developers.google.com/youtube em setembro de 2026. As plataformas mudam isso sem aviso.

Quanto um upload custa em cota?

Esse é o número que encerra a maioria dos planos de integração com o YouTube, e vale a pena declarar com precisão.

MétodoCusto de cota
videos.insert1 unidade, contra um bucket dedicado de 100 chamadas por dia
videos.list1 unidade
thumbnails.set50 unidades
videos.update50 unidades

A alocação padrão, nas palavras do Google, é “100 chamadas de search.list, 100 chamadas de videos.insert, e 10.000 unidades por dia combinadas para todos os outros endpoints”.

A restrição vinculante para publicação é, portanto, uma contagem, não aritmética de unidades: 100 uploads por projeto por dia. O conjunto de 10.000 unidades é separado e precisa cobrir toda consulta de status, leitura de metadados e definição de miniatura em torno desses uploads, o que é generoso em comparação. A cota é reiniciada à meia-noite do horário do Pacífico. Um produto multiusuário atendendo mais do que um punhado de canais precisa de um pedido de aumento de cota, que é uma solicitação própria ao Google.

Guias mais antigos (e alguns ainda no ar) afirmam que o videos.insert custa 1.600 unidades do conjunto compartilhado de 10.000 unidades, o que dava seis uploads por dia. Isso não é mais o que a documentação de cota do Google diz, e vale a pena revisar qualquer orçamento construído sobre isso.

Nota: os números aqui foram verificados em developers.google.com/youtube em setembro de 2026. As plataformas mudam isso sem aviso.

O que realmente vai custar três semanas

  • Duas revisões, não uma. Verificação OAuth para o escopo sensível de upload, e a auditoria da API do YouTube que remove a restrição de upload privado. Nenhuma das duas publica um prazo de retorno. As duas bloqueiam o lançamento.
  • Cota, e o pedido para aumentá-la. 100 uploads por projeto por dia não é um orçamento de produção quando você está publicando para mais do que algumas dezenas de canais. O pedido de aumento é um formulário, uma justificativa e uma espera.
  • Transcodificação antes mesmo de chegar ao Google. Aceitar vídeo arbitrário de usuário significa normalizar contêiner e codec, gerar uma miniatura, e manter o arquivo em algum lugar de onde você consiga transmitir 256GB sem mantê-lo em memória.
  • Falha assíncrona depois de um upload bem-sucedido. Essa é a que surpreende as pessoas. Um 200 e um ID de vídeo significam que os bytes chegaram, não que o vídeo está no ar. O processamento pode falhar depois, e um upload rejeitado aparece como um status de processamento, não como um erro HTTP. Você precisa de um verificador periódico, um estado de post processing, e uma forma de avisar o usuário que o vídeo dele falhou uma hora depois da sua chamada de API ter tido sucesso.

Se você também planeja publicar o mesmo vídeo vertical em outras redes, o formato desse trabalho está coberto em cross-posting de Reels do Instagram para Shorts do YouTube e publicando no TikTok, Reels e Shorts ao mesmo tempo. Cada uma dessas plataformas tem sua própria auditoria, seu próprio modelo de cota e seu próprio modo de falha assíncrona, e é exatamente esse o ponto.

A versão resumida

  • O videos.insert faz upload para https://www.googleapis.com/upload/youtube/v3/videos, máximo de 256GB, escopo youtube.upload.
  • Projetos não verificados criados depois de 28 de julho de 2020 só podem fazer upload de vídeos privados até o projeto ser auditado.
  • O fluxo é: abrir uma sessão retomável, fazer PUT dos bytes, depois consultar o status, porque o processamento é assíncrono e pode falhar depois do upload ter sucesso.
  • O videos.insert custa 1 unidade de um bucket dedicado de 100 chamadas por dia. Um conjunto separado de 10.000 unidades por dia cobre tudo o mais.
  • Nenhuma duração de retorno de auditoria é publicada. Comece a revisão antes de precisar dela.

Fazer isso uma vez, em vez de uma vez por plataforma

O trabalho do YouTube acima é real, e nada dele se transfere para a próxima plataforma. O Pinterest tem uma revisão diferente, o TikTok tem sua própria auditoria de Content Posting API, e cada uma tem um pipeline de mídia separado. Essa repetição é o que a nossa API remove: o BulkPublish publica em 15 plataformas através de um único endpoint REST, com OAuth, renovação de token, tratamento de mídia e rastreamento de status assíncrono cuidados do nosso lado. Os estados de publicação incluem processing e partial justamente porque um 200 não é uma publicação.

A documentação para desenvolvedores lista os endpoints, e a página de integração da API REST cobre a autenticação e o ciclo de vida da publicação. Se você só precisa de agendamento em vez de uma integração, como agendar vídeos no YouTube cobre isso, e o contador de caracteres do YouTube gratuito verifica títulos e descrições contra os limites.

Relacionados