API de Publicação de Conteúdo do TikTok: Guia para Desenvolvedores

API de Publicação de Conteúdo do TikTok: Guia para Desenvolvedores

O que a API de Publicação de Conteúdo do TikTok consegue publicar, por que apps não auditados só conseguem postar em modo privado, a sequência de init e polling, e os limites de taxa documentados.

A API de Publicação de Conteúdo do TikTok publica vídeo e foto em nome de um criador, por meio de uma chamada de init, um upload ou busca por URL, e um monitoramento de status. O fato mais importante antes de começar: até seu cliente passar pela auditoria do TikTok, tudo que você publica fica restrito à visualização privada. Você pode construir e testar a integração inteira e ainda assim não conseguir fazer um único post público.

O que a API de Publicação de Conteúdo consegue publicar, e o que fica bloqueado?

A API cobre a publicação direta de vídeo e foto, além de um caminho de rascunho que envia o conteúdo para a caixa de entrada do criador para ele finalizar. Os endpoints são POST /v2/post/publish/video/init/ para vídeo, POST /v2/post/publish/content/init/ para fotos, e POST /v2/post/publish/status/fetch/ para checar o resultado. Também há POST /v2/post/publish/creator_info/query/, que se espera que você chame primeiro para saber o que a conta do criador permite.

O bloqueio é a auditoria. Nas palavras do próprio TikTok: “Todo conteúdo publicado por clientes não auditados ficará restrito ao modo de visualização privada.” A documentação é igualmente direta na página de referência de post direto, onde clientes não auditados “só podem postar em uma conta privada”, com a tentativa bloqueada em /publish/video/init/.

PontoO que a documentação diz
Escopo exigidovideo.publish, aprovado para o seu app e autorizado pelo usuário
Apps não auditadosConteúdo restrito ao modo de visualização privada
Níveis de privacidadePUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY
Origem da mídiaFILE_UPLOAD ou PULL_FROM_URL
Busca por URLExige verificar a posse do prefixo de URL ou do domínio

SELF_ONLY é o valor com o qual você vai conviver durante o desenvolvimento. Também vale notar que o conjunto de níveis de privacidade que um determinado criador pode usar não é fixo: você consulta creator_info e usa o que voltar, em vez de fixar PUBLIC_TO_EVERYONE e torcer.

Nota: Os números aqui foram verificados na documentação da API de Publicação de Conteúdo do TikTok até setembro de 2026. As plataformas mudam isso sem aviso.

Como funciona a autenticação, e quanto tempo leva a auditoria?

OAuth padrão para obter um token de acesso do usuário carregando video.publish. Duas aprovações se somam: seu app precisa receber o escopo, e o criador individual precisa autorizá-lo no momento da conexão. Nenhuma das duas sozinha é suficiente.

A auditoria é separada, de novo. Ela acontece depois que você já tem uma integração funcionando, porque o TikTok espera que você tenha testado o fluxo antes de solicitá-la. O TikTok não declara uma duração de revisão na documentação da API de Publicação de Conteúdo, então trate o prazo como não publicado e desconhecido. Planeje sua data de lançamento em torno de uma aprovação que você não controla.

Qual é a sequência de chamadas de publicação?

  1. POST /v2/post/publish/creator_info/query/ para checar os níveis de privacidade permitidos ao criador e as configurações de interação.
  2. POST /v2/post/publish/video/init/ com post_info (título, privacy_level, as flags de desativação, video_cover_timestamp_ms, os toggles de conteúdo comercial) e source_info.
  3. Se source for FILE_UPLOAD, faça PUT dos bytes para o upload_url retornado pelo init, em blocos correspondentes ao chunk_size e total_chunk_count que você declarou. Se source for PULL_FROM_URL, o TikTok busca o arquivo do seu domínio verificado em vez disso.
  4. POST /v2/post/publish/status/fetch/ com o publish_id do init, e monitore.
  5. Trate PUBLISH_COMPLETE como sucesso e FAILED como terminal. Nada antes disso é um post publicado.
# 1. init a direct post
curl -X POST "https://open.tiktokapis.com/v2/post/publish/video/init/" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{
    "post_info": { "title": "Ship it.", "privacy_level": "SELF_ONLY" },
    "source_info": { "source": "PULL_FROM_URL",
                     "video_url": "https://verified.example.com/clip.mp4" }
  }'
# -> { "data": { "publish_id": "v_pub_url~..." } }

# 2. poll
curl -X POST "https://open.tiktokapis.com/v2/post/publish/status/fetch/" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{ "publish_id": "v_pub_url~..." }'

Os valores de status documentados são PROCESSING_UPLOAD (caminho de upload de arquivo), PROCESSING_DOWNLOAD (caminho de busca por URL), SEND_TO_USER_INBOX (rascunho entregue ao criador), PUBLISH_COMPLETE e FAILED.

Quais são os limites de taxa?

Dois números são declarados claramente na documentação de referência, ambos por token de acesso de usuário:

  • Init de post direto: 6 requisições por minuto.
  • Busca de status: 30 requisições por minuto.

Seis inits por minuto por usuário é generoso para um agendador e apertado para uma importação em massa. Trinta buscas de status por minuto parece muito até você ter centenas de posts em andamento compartilhando um poller, ponto em que você precisa de backoff por token em vez de um loop global.

Não conseguimos confirmar uma cota diária de publicação documentada por usuário, um tamanho máximo de arquivo de vídeo ou uma duração máxima nas páginas da API de Publicação de Conteúdo que lemos. A resposta de informações do criador é a fonte pretendida para o teto de duração de vídeo por conta, então leia ela em vez de fixar um número.

Nota: Os números aqui foram verificados na documentação da API de Publicação de Conteúdo do TikTok até setembro de 2026. As plataformas mudam isso sem aviso.

O que realmente vai custar três semanas?

A auditoria. Esse é o grande vilão, e é diferente da revisão do Instagram ou do LinkedIn de uma forma específica: você pode publicar código, conectar contas e postar, e ainda assim ter todo post invisível. Nada nos seus logs vai parecer errado. Não deixe um stakeholder ver um PUBLISH_COMPLETE bem-sucedido em staging e concluir que o recurso está pronto.

Verificação de domínio para PULL_FROM_URL. Deixar o TikTok buscar sua mídia é muito mais simples do que uploads em blocos, mas exige provar que você é dono do prefixo de URL. Se sua mídia está em um bucket com um hostname gerado, você vai precisar adicionar um domínio próprio ao seu armazenamento antes de poder usar o caminho fácil.

Renovação de token. Os tokens de acesso do TikTok são renovados com um refresh token, e uma conexão expirada significa que o criador precisa reconectar. Como em toda plataforma, o trabalho não é a chamada de renovação, é a máquina de estados e a notificação para quando a renovação falha.

Tratamento de falhas assíncronas. O init retornando um publish_id não é uma publicação. Um upload bem-sucedido também não é. Só PUBLISH_COMPLETE é, e FAILED pode chegar minutos depois por motivos como codificação não suportada. Guarde o publish_id, mantenha um estado processing, e reconcilie. Nosso guia da API de agendamento de redes sociais cobre o modelo de estados que isso exige.

Se você também está escrevendo as legendas, o contador de caracteres do TikTok vai te dizer onde o título é cortado.

A versão resumida

  • Init, upload ou busca, depois monitore o status. PUBLISH_COMPLETE é o único sucesso.
  • Clientes não auditados só conseguem postar em modo privado. A auditoria é exigida para posts públicos.
  • O escopo video.publish precisa de aprovação para o seu app e consentimento do criador.
  • 6 requisições de init por minuto e 30 buscas de status por minuto, por token de usuário.
  • O TikTok não publica durações de revisão e auditoria.

Publicando no TikTok sem passar pela auditoria você mesmo

Uma forma de contornar o custo de configuração é publicar por meio de uma API que já passou por ela. O BulkPublish cobre o TikTok junto com outras 14 plataformas por meio de uma única API REST, então o init, o upload, o monitoramento e a nova tentativa ficam do nosso lado e a sua chamada é uma única requisição de criação de post com um ID de canal. A mesma chamada atinge Instagram Reels e YouTube Shorts se você estiver fazendo cross-posting. Os endpoints estão documentados em /pt-br/developers/, e a visão geral da integração REST está em /pt-br/integrations/rest-api/.

Relacionados