Guia da API do Threads para desenvolvedores (2026)

Guia da API do Threads para desenvolvedores (2026)

O que a API do Threads publica, o modelo de app e token da Meta por trás dela, o fluxo de container em duas etapas, e o limite de 250 posts a cada 24 horas.

Publicar no Threads leva duas chamadas de API, não uma: você cria um container de mídia, depois publica ele. Perfis são limitados a 250 posts publicados via API a cada 24 horas, posts de texto têm teto de 500 caracteres, e cada permissão que seu app usa precisa passar pela App Review da Meta antes que qualquer pessoa fora da sua lista de testers consiga se conectar.

O que a API do Threads consegue publicar, e o que não consegue?

Posts únicos suportam três tipos de mídia: TEXT, IMAGE e VIDEO. Carrosséis suportam filhos do tipo IMAGE e VIDEO, entre 2 e 20 deles, e um carrossel conta como um único post no seu limite de publicação.

As especificações, da própria documentação da Meta:

RestriçãoValor
Tamanho do texto500 caracteres
Filhos do carrossel2 a 20
Formatos de imagemJPEG, PNG
Tamanho do arquivo de imagem8 MB no máximo
Largura da imagem320 a 1440 pixels
Proporção da imagem10:1 no máximo
Container de vídeoMOV ou MP4
Codecs de vídeovídeo H264 ou HEVC, áudio AAC
Taxa de quadros do vídeo23 a 60 FPS
Duração do vídeo300 segundos (5 minutos)
Tamanho do arquivo de vídeo1 GB no máximo
Bitrate do vídeo100 Mbps de vídeo, 128 kbps de áudio

Um detalhe que surpreende: emojis contam nos 500 caracteres pelo valor em bytes UTF-8, não como caracteres únicos. Uma legenda que parece ter 480 caracteres no seu editor pode ser rejeitada. Se você está contando no lado do cliente, conte bytes pra emojis. O post sobre o limite de caracteres do Threads e o contador de caracteres do Threads gratuito lidam com isso.

Nota: os números aqui foram verificados contra developers.facebook.com/docs/threads/posts e /docs/threads/overview em setembro de 2026. Plataformas mudam isso sem aviso.

Qual é o modelo de autenticação?

O Threads roda na infraestrutura de apps da Meta, mas com credenciais próprias. Você cria um app da Meta com o caso de uso Threads, e esse app emite um ID e um secret específicos do Threads, distintos dos mostrados em outras partes do painel. Usar o par errado é um erro comum na primeira hora.

Os escopos são granulares:

  • threads_basic (exigido por todos os endpoints)
  • threads_content_publish (publicação)
  • threads_manage_replies e threads_read_replies
  • threads_manage_insights
  • threads_delete
  • threads_location_tagging

A revisão do app não é opcional. Cada permissão precisa ser aprovada pela App Review, e o app precisa estar publicado em produção, antes que qualquer pessoa que não seja tester consiga concedê-la. Até lá, você só consegue postar em perfis do Threads que você convidou explicitamente como testers pelo painel do app, e que aceitaram o convite nas configurações do Threads deles. A documentação da Meta não informa quanto tempo a revisão leva, então não vamos chutar.

O ciclo de vida do token que você precisa construir

Essa é a parte que vira um trabalho em segundo plano.

  1. A janela de autorização retorna um código.
  2. Troque por um token de acesso de curta duração, válido por 1 hora.
  3. Troque esse por um token de longa duração via GET /access_token com grant_type=th_exchange_token. Válido por 60 dias.
  4. Renove via GET /refresh_access_token com grant_type=th_refresh_token. Um token precisa ter pelo menos 24 horas e ainda não ter expirado pra ser renovável. Um token renovado vale por mais 60 dias.

Um token que passa 60 dias sem renovação expira e o usuário precisa reautorizar. Permissões concedidas por usuários de app com perfis privados são válidas por 90 dias.

Nota: os números aqui foram verificados contra developers.facebook.com/docs/threads/get-started e /get-started/long-lived-tokens em setembro de 2026. Plataformas mudam isso sem aviso.

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

Pra um post único:

  1. POST /{threads-user-id}/threads com media_type e seu texto ou URL de mídia. Isso retorna um ID de container.
  2. Espere. A Meta recomenda em média 30 segundos antes de publicar, pra deixar o servidor terminar de processar a mídia.
  3. POST /{threads-user-id}/threads_publish com esse ID de container.

Pra um carrossel, insira uma etapa: crie um container por filho, depois crie um container de carrossel referenciando eles, depois publique esse.

# 1. create the container
curl -X POST "https://graph.threads.net/v1.0/$USER_ID/threads" \
  -d "media_type=IMAGE" \
  -d "image_url=https://example.com/photo.jpg" \
  -d "text=Shipping notes for this week." \
  -d "access_token=$TOKEN"
# -> {"id":"1789..."}

# 2. wait ~30s for processing, then publish
curl -X POST "https://graph.threads.net/v1.0/$USER_ID/threads_publish" \
  -d "creation_id=1789..." \
  -d "access_token=$TOKEN"

Note que imagens e vídeos são passados por URL pública, não enviados como bytes. Os servidores da Meta buscam eles. Isso significa que sua mídia precisa estar publicamente acessível, sem autenticação, e ainda no ar quando a busca acontece, o que é um requisito de hospedagem que a maioria das pessoas não planeja.

Quais são os limites de taxa?

AçãoLimite
Posts publicados250 por período móvel de 24 horas
Respostas1.000 a cada 24 horas
Exclusões100 a cada 24 horas
Buscas de localização500 a cada 24 horas
Chamadas gerais de API4800 x número de impressões, a cada 24 horas (mínimo de 10 impressões)

Vale a pena ler a fórmula das impressões duas vezes. Seu orçamento de chamadas gerais escala com o alcance real do perfil, com um piso. Um perfil novinho em folha tem o orçamento mínimo.

Nota: os números aqui foram verificados contra developers.facebook.com/docs/threads/overview em setembro de 2026. Plataformas mudam isso sem aviso.

O que realmente vai te custar três semanas?

App Review. Preparar gravações de tela, uma política de privacidade, um caminho de demonstração funcionando e uma verificação de negócio, depois iterar sobre rejeições. A duração não é publicada, então planeje isso como um risco de cronograma, não como uma tarefa.

O trabalho de renovação de token. Tokens de longa duração expiram em 60 dias e só são renováveis quando têm 24 horas de vida. Isso é um trabalho agendado, um armazenamento de tokens criptografados, um caminho de alerta quando a renovação falha, e um fluxo de reconexão na sua interface.

Falha assíncrona. A chamada de criação de container retornar 200 não significa que sua mídia é válida. A chamada de publicação é onde um vídeo com problema aparece, cerca de 30 segundos depois, em uma requisição diferente. Seu modelo de post precisa de um estado de processing e uma forma de reportar uma falha que chegou depois que o usuário fechou a aba.

Hospedagem de mídia pública. Como a Meta busca por URL, você precisa de URLs públicas duráveis com comportamento de cache sensato, e um plano pro que acontece quando a busca é limitada por taxa ou bloqueada pela proteção contra bots do seu CDN.

Contagem de bytes pra emojis. Barato de corrigir, caro de descobrir em produção.

Resumo

  • Duas chamadas pra publicar: criar um container, esperar cerca de 30 segundos, publicar. Três pra um carrossel.
  • Mídia é passada por URL pública. A Meta busca ela.
  • 500 caracteres. Emojis contam como bytes UTF-8.
  • 250 posts publicados via API por perfil a cada 24 horas.
  • Tokens de curta duração duram 1 hora, os de longa duração 60 dias, renováveis a partir de 24 horas de vida.
  • App Review é exigida por permissão antes que não-testers consigam se conectar. Nenhuma duração é publicada.

Agendar Threads junto com tudo o resto

Se o Threads é uma plataforma entre várias em vez de o produto inteiro, a maior parte do trabalho acima se repete por rede com formatos diferentes. O X usa OAuth 2.0 PKCE e envios de bytes em blocos. O Bluesky não precisa de nenhuma revisão de app. O LinkedIn precisa de dois apps separados: perfis pessoais usam w_member_social, páginas de empresa usam r_organization_social, w_organization_social e rw_organization_admin, revisados separadamente.

O BulkPublish cobre 15 plataformas por trás de uma única API REST, incluindo o Threads, com a sequência de container, a renovação de 60 dias e a consulta de status assíncrona tratadas do lado do servidor. A documentação para desenvolvedores e a referência da API REST listam os endpoints, e agendar posts no Threads cobre o caminho pra quem não é desenvolvedor.

Relacionados