Códigos de erro da API do Instagram: quais repetir

A Meta documenta o que cada erro de publicação do Instagram significa, não o que fazer com ele. Aqui estão os códigos documentados em quatro decisões: repetir, corrigir, avisar ou parar.

InvisibleAPI Team 13 min de leitura
View as Markdown
Códigos de erro da API do Instagram: quais repetir
I

InvisibleAPI Team

InvisibleAPI Team

Toda falha de publicação no Instagram termina em uma de quatro ações: repetir, corrigir a requisição, passar para o responsável pela conta, ou parar e encaminhar. Acertar essa decisão é o trabalho inteiro. Se você repete algo permanente, gasta cota em uma requisição que nunca vai funcionar. Se desiste de algo temporário, perde uma publicação que sairia na segunda tentativa.

A Meta documenta o que cada código de erro significa. Ela não documenta qual das quatro ações tomar, e sua tabela de referência não tem nenhuma coluna de erro temporário. Este guia liga os códigos que a Meta publica hoje a uma decisão, usando as quatro categorias de falha com as quais a API de publicação unificada da InvisibleAPI já classifica cada publicação. Todos os códigos abaixo foram lidos na documentação da Meta em 14 de setembro de 2026, e as páginas estão no final.

Uma API no lugar do encanamento da Graph API. A InvisibleAPI é uma única API baseada em jobs para Instagram e X. Conecte a conta, crie um job de publicação e consulte-o até chegar a published.

Obter chave de API

As quatro decisões por trás de cada erro de publicação no Instagram

A InvisibleAPI classifica cada falha de publicação em uma de quatro categorias. Elas não são níveis de gravidade. Cada uma aponta um responsável diferente e um próximo passo diferente.

Categoria O que aconteceu O que o seu código faz
invalid_publish_data A requisição quebrou uma regra da plataforma. Legenda longa demais, proporção fora da faixa, itens demais no carrossel. Não repita. Corrija o conteúdo e crie um job novo.
retryable_provider_failure O provedor falhou de um jeito que costuma se resolver sozinho. Mídia ainda em processamento, um contêiner expirado, um erro de servidor. Repita após esperar. Este caso é repetido automaticamente.
provider_action_required Uma pessoa com acesso à conta precisa fazer algo. Reconectar uma permissão expirada, resolver uma restrição. Pare de repetir e avise o responsável pela conta.
platform_software_failure A falha é nossa, não da plataforma nem sua. Nada. Ela é encaminhada ao suporte técnico.
Quatro categorias de falha de publicação no Instagram com a ação que cada uma implica, de repetir a encaminhar.
Quatro categorias de falha de publicação no Instagram com a ação que cada uma implica, de repetir a encaminhar.

Leia a tabela de novo pelo lado do leitor. As categorias um e três chegam as duas como um erro em formato 400 vindo do Instagram, e as duas são permanentes para a requisição do jeito que ela está escrita. A diferença é quem consegue resolver. Essa distinção é a que uma tabela de códigos crua não consegue dar, e é a que decide se o seu produto mostra uma mensagem de validação ou um alerta pedindo que alguém faça login.

Por que a referência de erros da Meta não decide por você

A documentação da Meta é precisa e detalhada. Ela só foi feita para responder outra pergunta. Três coisas atrapalham quem quer usá-la como política de repetição.

Os códigos ficam em três páginas separadas. Subcódigos de publicação como 9007 e 2207027 estão na referência de códigos de erro do Instagram. Os códigos 190 e 368 estão no guia de tratamento de erros da Graph API. Os códigos 4, 17 e 32 são definidos na página de limites de requisição. Quem recebe um código 4 puro e quem recebe um código 4 com subcódigo 2207051 têm problemas diferentes e precisam de páginas diferentes.

Não existe classificação de erro temporário por código. A referência traz uma mensagem e uma ação recomendada em prosa. A palavra “transient” aparece no exemplo de resposta, não na tabela. As respostas de erro da Meta carregam sim um booleano is_transient ao lado de error_user_title e error_user_msg, então o sinal existe no momento da falha. Ele simplesmente não é algo que você consulte com antecedência para montar um switch.

As ações recomendadas não são intervalos. “Tente novamente” aparece em vários códigos sem nenhuma indicação de quanto esperar. Em toda a tabela de publicação do Instagram existe exatamente um código com uma janela concreta: o código 24 com subcódigo 2207008, onde a Meta indica repetir uma ou duas vezes entre 30 segundos e 2 minutos.

Confira a URL que você está citando. developers.facebook.com/docs/instagram-platform/reference/error-codes retorna 404. Ela foi repetida em artigos de terceiros o suficiente para parecer canônica. A página que existe é developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/error-codes, que também é para onde o caminho antigo /docs/instagram-api/reference/error-codes redireciona agora. Verificado em 14 de setembro de 2026.

Códigos de erro de publicação do Instagram, agrupados pelo que fazer

Abaixo estão os códigos que a Meta documenta para publicação de conteúdo, ordenados pela decisão e não pelo número. Onde a Meta indica o comportamento de forma explícita, isso está marcado. No resto, o agrupamento é a nossa leitura da ação recomendada pela Meta, e vale tratar o campo is_transient em tempo de execução como a autoridade quando os dois discordarem.

Corrija a requisição, não repita

Correspondem a invalid_publish_data. O mesmo conteúdo vai falhar do mesmo jeito para sempre.

Código Subcódigo O que a Meta documenta
100 2207028 Um carrossel precisa de pelo menos 2 itens e no máximo 10
100 2207040 Mais marcações por mídia do que o permitido, com máximo de 20 menções
36000 2207004 A imagem é grande demais para baixar, e deve ter menos de 8 MiB
36003 2207009 A proporção está fora da faixa permitida de 4:5 a 1.91:1
36004 2207010 A legenda passa do máximo de 2.200 caracteres
352 2207026 O formato de vídeo não é suportado, então use MOV ou MP4
9004 2207052 A mídia não pôde ser obtida a partir da URI que você informou

A última linha merece uma segunda olhada. Uma URI que não esteja publicamente acessível falha aqui, e nenhuma quantidade de repetições torna um bucket privado público. A mídia precisa ser servida a partir de uma URL pública, e essa é uma restrição que vale considerar no projeto em vez de descobrir em produção.

Repita após esperar

Correspondem a retryable_provider_failure.

Código Subcódigo O que a Meta documenta
9007 2207027 A mídia não está pronta para publicação, então consulte o status do contêiner
24 2207008 O construtor de mídia não existe ou expirou. A Meta chama isso de erro temporário e indica repetir uma ou duas vezes entre 30 segundos e 2 minutos.
-2 2207003 O download da mídia demora demais
-2 2207020 A mídia expirou, então gere um contêiner novo
-1 2207001 Um erro de servidor do Instagram
-1 2207032 A criação da mídia falhou, então crie de novo

O 9007 é o mais mal tratado com frequência. Na verdade ele nem é uma falha: o contêiner de mídia ainda está processando. A própria orientação de publicação da Meta é consultar o status do contêiner e publicar quando ele marcar FINISHED, verificando cerca de uma vez por minuto durante no máximo cinco minutos. Os status do contêiner são EXPIRED, ERROR, FINISHED, IN_PROGRESS e PUBLISHED. Recriar o contêiner diante de um 9007 coloca na fila um segundo upload para uma publicação que ia dar certo.

O responsável pela conta precisa agir

Correspondem a provider_action_required. O seu laço de repetição não resolve nenhum deles.

Código Subcódigo O que a Meta documenta
25 2207050 A conta do Instagram está restrita, e o usuário precisa resolver no aplicativo
4 2207051 A atividade está restrita porque a publicação é suspeita de spam
190 . O token de acesso expirou, então é preciso um novo
368 . Bloqueio temporário por violação de políticas

O código 190 é a falha mais comum em uma integração de vida longa, e é o exemplo mais claro de por que um laço de repetição é a ferramenta errada. O token acabou. A conta precisa ser reconectada antes que qualquer outra coisa funcione, que é o que o guia de reconexão e scopes cobre. Uma permissão que expira não quebra a conta em si, porque cada concessão de credencial é separada, então outra concessão válida na mesma conta continua publicando.

Encaminhe

platform_software_failure não tem nenhum código correspondente na Meta, e é exatamente por isso que ela existe. Ela cobre o caso em que a requisição era válida, a plataforma estava saudável, e mesmo assim algo no meio quebrou. O Instagram não tem um código para isso, porque do lado do Instagram não aconteceu. Sem uma quarta categoria, falhas desse formato são arquivadas errado como temporárias e repetidas para sempre, ou arquivadas errado como erros de quem chamou e mostradas a um usuário que não pode fazer nada a respeito. Na InvisibleAPI elas vão para o suporte técnico em vez de para o responsável pela conta.

Caminho de decisão de um erro de publicação do Instagram até uma de quatro saídas: consultar, repetir, corrigir o conteúdo, avisar o responsável pela conta ou encaminhar.
Caminho de decisão de um erro de publicação do Instagram até uma de quatro saídas: consultar, repetir, corrigir o conteúdo, avisar o responsável pela conta ou encaminhar.

Erros de limite são um caso à parte

Erros de limite podem ser repetidos, mas não agora, e a espera é a resposta inteira. Tratá-los como uma falha temporária qualquer é o jeito de uma integração ficar bloqueada por mais tempo.

O limite de publicação. A documentação de publicação de conteúdo da Meta indica 100 publicações via API dentro de uma janela móvel de 24 horas, e um carrossel conta como uma única publicação. Ultrapassar isso retorna o código 9 com o subcódigo 2207042, e a orientação da Meta é repetir no dia seguinte. O número de 25 publicações por dia ainda aparece em muito material de terceiros. Não é o que a documentação diz hoje, então planeje com 100 e confirme o número você mesmo antes de construir um agendador em cima disso.

Os limites de requisição. O código 4 é o limite no nível do aplicativo, o 17 no nível do usuário, o 32 o limite da Pages API, o 613 um limite personalizado e o 80002 o limite por caso de uso de negócio do Instagram. A instrução da Meta quando você é limitado é direta e vale seguir: pare de fazer chamadas, porque continuar aumenta o tempo até que elas voltem a funcionar. Os cabeçalhos X-App-Usage e X-Business-Use-Case-Usage carregam o seu consumo atual, e o segundo inclui estimated_time_to_regain_access em minutos. Esse campo é o único número de espera concreto que a Meta publica, então ele ganha de qualquer intervalo que você fosse chutar.

O seu próprio teto. Publicando pela InvisibleAPI, cada conta conectada pode publicar 100 publicações por período de faturamento, e um endpoint de limites informa o uso em tempo real para que o seu código consulte antes de iniciar um lote. Verificar o limite antes sai mais barato que uma fila de jobs que falham no provedor. Se o que trouxe você aqui foi a questão do volume, como funciona o preço por volume explica contra o que a conta é medida, e o guia de preços da API do Instagram cobre a comparação de custos mais ampla.

Lógica de repetição que lê a categoria, não o número do código

Uma política de repetição construída sobre uma lista fixa de inteiros apodrece. A Meta não publica um mapa estável de erros temporários, subcódigos são adicionados, e um código que se comporta de um jeito na publicação se comporta de outro nos limites de requisição. A lista que você escreveu em janeiro para de bater com a realidade sem que nada avise.

Baseie a decisão na classificação. Crie o job:

curl -X POST "https://api.invisibleapi.ai/api/v1/organizations/$ORGANIZATION/publishing/jobs" \
  -H "Authorization: Bearer $INVISIBLE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "targets": ["acct_ig_01"],
    "caption": "New drop, live now.",
    "mediaItems": [{ "mediaType": "image", "sourceUrl": "https://cdn.example.com/drop.jpg" }],
    "clientRequestId": "drop-0914-ig"
  }'

Um job que falha volta com a categoria, e com uma entrega para cada destino:

{
  "id": "job_01K2M4P7",
  "status": "failed",
  "clientRequestId": "drop-0914-ig",
  "deliveries": [
    {
      "target": "acct_ig_01",
      "platform": "instagram",
      "status": "failed",
      "failureCategory": "retryable_provider_failure"
    }
  ]
}

Aí a decisão é um switch sobre quatro valores em vez de uma tabela de consulta de inteiros:

type Category =
  | "invalid_publish_data"
  | "retryable_provider_failure"
  | "provider_action_required"
  | "platform_software_failure";

export function decide(category: Category) {
  switch (category) {
    case "retryable_provider_failure":
      return { retry: true, backoffMs: 60_000 };
    case "invalid_publish_data":
      return { retry: false, notify: "developer" };
    case "provider_action_required":
      return { retry: false, notify: "account_owner" };
    case "platform_software_failure":
      return { retry: false, notify: "support" };
  }
}

Sobre os nomes dos campos. O formato do pedido está confirmado na referência da API: targets, mediaItems com o seu mediaType e sourceUrl, caption, requestedPublishAt e clientRequestId, e a chamada de criação a devolver 202. O que continua por confirmar é a resposta do trabalho: o nome do array deliveries e o campo failureCategory. Verifique-os na referência da API antes de publicar código que os leia.

Repetir só é seguro porque a chamada de criação carrega clientRequestId. Essa é a parte que quase todo conselho sobre repetição deixa de fora. Quando uma requisição estoura o tempo limite você não consegue distinguir uma chamada que falhou de uma que funcionou e perdeu a resposta, então repetir às cegas é jogar uma moeda sobre uma publicação duplicada. Uma chave de idempotência tira a moeda do ar: a chamada repetida não publica duas vezes. Se você quer a versão de varredura e repetição como uma construção funcionando, o modelo de recuperação de publicações que falharam é a receita.

Vale conhecer os status do job antes de escrever o laço: pending, scheduled, processing, preparing, submitted, polling, published, partial_failure, failed, action_required e canceled. Repare que action_required é um status final próprio, então um job à espera do responsável pela conta nunca fica numa fila de repetição fingindo estar em andamento.

Os erros que você consegue parar antes de chegarem ao Instagram

Volte à primeira tabela deste artigo. Quase toda linha é uma regra que poderia ter sido checada antes de a requisição sair do seu prédio. Tamanho da legenda, proporção, número de itens do carrossel e formato de vídeo são todos conhecidos de antemão.

É para isso que serve a validação prévia. Cada adaptador de plataforma valida as próprias regras antes de enviar qualquer coisa, então uma violação falha com uma chave de erro específica em vez de uma ida e volta ao provedor. Um exemplo real é publishing.validation.media_items.media_type_unsupported, que pega um tipo de mídia não suportado na porta.

O efeito prático é que uma família inteira de códigos da Meta para de aparecer nos seus registros, e os que aparecem são de fato sobre a plataforma e não sobre o seu conteúdo. Isso também muda onde o erro aparece: na criação do job, onde o seu código ainda tem o contexto, e não minutos depois em um retorno assíncrono.

Quando um job aponta para várias contas

Um job de publicação pode apontar para muitas contas conectadas ao mesmo tempo, e o resultado por destino fica nas entregas do job. Isso importa mais do que parece, porque o mesmo conteúdo pode passar em uma plataforma e falhar em outra. Uma legenda de 500 caracteres publica no Instagram e falha na regra de 280 caracteres do X, no mesmo job.

Um único status de job não dá conta disso, e é por isso que partial_failure existe como status próprio. Se você lê as entregas e não apenas o job, obtém uma resposta por conta: qual destino publicou, qual falhou na validação prévia e sob qual categoria. Para uma agência que distribui uma publicação de cliente por uma dúzia de contas, essa é a diferença entre um relatório útil e um ponto vermelho.

Pare de adivinhar quais falhas o seu código deve repetir

Os códigos de erro da API do Instagram dizem o que deu errado. Uma classificação diz ao seu código o que fazer em seguida, e é isso que transforma uma publicação que falhou em uma recuperada em vez de um alerta que alguém precisa ler. Conecte uma conta do Instagram, crie um job e deixe as categorias conduzirem a sua lógica de repetição em vez de uma lista de inteiros que você tem que manter. Cada conta começa com um teste gratuito de 7 dias.

Publique no X e no Instagram a partir de uma única API.

Conecte as contas uma vez, crie um job de publicação e consulte-o até ele ser publicado. A validação prévia detecta uma publicação inválida antes de ela chegar à plataforma, e um clientRequestId torna as tentativas seguras.

Fontes

As quatro páginas foram consultadas em 14 de setembro de 2026.

Perguntas frequentes

O que significa o código de erro 9007 da API do Instagram?
O subcódigo 2207027 dentro do código 9007 significa que a mídia ainda não está pronta para publicação. A orientação da Meta é consultar o status do contêiner e publicar quando ele marcar FINISHED. Não recrie o contêiner e não trate isso como uma falha: consulte. A Meta sugere verificar cerca de uma vez por minuto durante no máximo cinco minutos.
O erro 190 da API do Instagram pode ser repetido?
Não. O código 190 significa que o token de acesso expirou. Repetir a mesma chamada com o mesmo token produz o mesmo erro. A conta precisa ser reconectada para que um token novo seja emitido, o que faz disso uma ação do usuário e não uma falha temporária.
Quantas publicações a API de publicação de conteúdo do Instagram permite por dia?
A documentação de publicação de conteúdo da Meta indica 100 publicações via API dentro de uma janela móvel de 24 horas, e um carrossel conta como uma única publicação. O número antigo de 25 publicações ainda circula bastante e não é o que a documentação diz hoje. Ultrapassar o limite retorna o código 9 com o subcódigo 2207042.
A Meta informa quais erros da API do Instagram são temporários?
Não na tabela de referência. A referência de códigos de erro da Meta traz uma mensagem e uma ação recomendada em prosa, sem coluna de erro temporário. A resposta de erro em tempo de execução carrega um booleano is_transient, então o sinal existe no momento da falha mesmo que a documentação não publique um mapa por código.
Como repito uma publicação do Instagram que falhou sem publicar duas vezes?
Anexe uma chave de idempotência à requisição original. Com a InvisibleAPI você define clientRequestId ao criar o job de publicação, e uma chamada repetida com o mesmo valor não publica duas vezes. Sem uma chave de idempotência, qualquer repetição após um tempo limite arrisca uma publicação duplicada, porque você não consegue distinguir uma requisição que falhou de uma que funcionou em silêncio.
Tags: #API de publicação

Pronto para começar com o InvisibleAPI?

Comece a construir com o InvisibleAPI hoje.

Posts relacionados

Ver todos os artigos
Alternativas ao Ayrshare: 5 APIs de redes sociais

Alternativas ao Ayrshare: 5 APIs de redes sociais

Compare as melhores alternativas ao Ayrshare para desenvolvedores em 2026. Análise de limites de preços, multi-inquilino, suporte a MCP e confiabilidade.

Como automatizar publicações no Instagram

Como automatizar publicações no Instagram

Automatizar o Instagram é uma fila, um despachante e uma política de falhas. Aqui está a construção, com a verificação de limites e a chave de idempotência.

Preço da API do X em 2026: quanto custa publicar

Preço da API do X em 2026: quanto custa publicar

A API do X é de pagamento por uso em 2026. Preços exatos por publicação, os níveis antigos, o fim do nível gratuito e o que muda para quem só precisa publicar.