Erros comuns da API do Instagram
Os erros mais comuns ao integrar com a API do Instagram, o que cada um significa e como resolver.
Todo erro que a API do Instagram (Graph API) devolve vem embrulhado no mesmo formato: uma OAuthException (ou, ocasionalmente, outro tipo de exceção), um code numérico, às vezes um error_subcode, e uma message legível que varia de precisa a genuinamente enganosa. Esta página reúne os erros que você realmente encontra construindo uma integração de publicação no Instagram, agrupados por onde eles costumam aparecer no fluxo.
Subcódigos e o texto exato das mensagens podem mudar conforme a Meta atualiza a plataforma — trate o código numérico como o identificador estável e a mensagem como uma pista, não um contrato. A lista abaixo foi cruzada com o guia oficial de tratamento de erros da Graph API e a referência de códigos de erro da Instagram Platform; revalide contra essas páginas antes de fixar um comportamento de tratamento de erro em torno de um código específico.
Erros de autenticação e OAuth
190— Token de acesso inválido ou expirado. Subcódigos comuns:460(senha ou configuração de segurança mudou desde que o token foi emitido),463(token expirado),467(token inválido — frequentemente emitido para outro app ou já revogado). Exige reconectar a conta; nenhuma quantidade de novas tentativas resolve.102— Chave de sessão inválida ou não é mais válida. Costuma aparecer com um token que era válido recentemente mas foi invalidado do lado do servidor (por exemplo, o usuário removeu o acesso do seu app nas configurações da conta da Meta).2500— "Erro validando parâmetros" genérico. Esse código cobre um leque amplo de requisições malformadas, não só autenticação — inclui casos de criação de container de mídia detalhados na seção abaixo.
Erros de permissão
10— Permissão negada. O token é válido, mas o app ou os escopos concedidos não cobrem a ação tentada — na maioria das vezes falta um escopo de negócio comoinstagram_business_content_publishouinstagram_business_manage_comments.200— Erro de permissões genérico. Um balde mais amplo que o código10; pode aparecer quando o papel da conta conectada ou o status de App Review do app não cobre a operação pedida, mesmo que o escopo específico tenha sido tecnicamente concedido.
Erros de mídia e container
2500— "An ID has already been specified" e outras falhas de validação de parâmetro durante a criação do container. A Meta não publica uma lista definitiva de causa raiz para essa mensagem, e relatos públicos sobre o gatilho exato variam; a causa mais bem documentada e verificável de falha na criação de container em geral é uma URL de mídia que os servidores da Meta não conseguem buscar (não publicamente acessível, tipo de conteúdo errado, ou URL assinada expirada).100(subcódigo33) — Objeto não existe, ou não pode ser carregado com as permissões atuais. Em um fluxo de publicação, normalmente significa um ID de container inválido ou já expirado, ou um ID do tipo de nó errado.9007(subcódigo2207027) — "The media is not ready for publishing." A própria documentação da Meta trata isso como um estado de "ainda não pronto" para tentar de novo após uma pequena espera; na prática também é amplamente reportado para um container que já expirou ou já foi publicado — trate como "este container não está publicável agora" em vez de assumir qual dos três é, sem checar ostatus_codeprimeiro.- Container com
status_code: ERROR— não é um código de erro de topo, e sim um dos cinco estados (IN_PROGRESS,FINISHED,PUBLISHED,EXPIRED,ERROR) que a Meta documenta para o próprio container. Significa que o processamento falhou depois da criação — diferente de um container apenas lento.
Erros de limite de requisições
4— Limite de requisições do app atingido. Um throttle no nível do seu app da Meta, ligado ao volume total de chamadas em todas as contas conectadas, não a um único usuário.17— Limite de requisições do usuário atingido. Restrito a uma conta conectada específica, em vez do app inteiro.9(subcódigo2207042) — "Você atingiu o número máximo de posts permitidos pela Content Publishing API." Diferente do rate limit genérico: veja o guia dedicado sobre o limite de publicação para o número atual documentado pela Meta e como consultar o consumo de uma conta específica.
Como o PostGate simplifica isso
Em vez de cada integração precisar aprender esse catálogo de códigos por conta própria, o PostGate traduz o erro específico da plataforma para um envelope estruturado único, com um código estável, retryable explícito e um request_id para correlacionar com o log de entrega do post. profile_disconnected pede reconexão, platform_content_rejected pede conteúdo diferente, e rate_limited pede backoff — sem que o seu código precise saber o código numérico exato que a Meta devolveu por trás.
{
"error": {
"code": "platform_content_rejected",
"message": "Instagram rejected this content.",
"platform": "instagram",
"retryable": false,
"request_id": "req_01JXYZ"
}
}