Buscar na documentação
ctrl+4K
Módulos
Authentication
Merchant
Catalog
Order
Events
Logistics
Shipping
Review
Financial
Soluções

Erros e troubleshooting

Códigos de erro HTTP retornados pela API de Catálogo, diagnóstico de problemas comuns e boas práticas para integrações resilientes.
A requisição está malformada. Verifique:
  • Campos obrigatórios preenchidos.
  • Formato correto dos valores (datas em ISO 8601, preços como números).
  • IDs referenciados existem no sistema.
  • Corpo da requisição é JSON válido.
O token expirou ou é inválido. Obtenha um novo accessToken e tente novamente. Veja Autenticação.Você não tem permissão para a operação. Causas comuns:
  • Recurso exclusivo de outro vertical (ex.: preço por atacado em conta de restaurante).
  • Módulo não contratado para sua conta.
  • Tentativa de acessar dados de outra conta.
O recurso não existe. Confirme que merchantId, catalogId, itemId e outros IDs estão corretos e que o recurso foi de fato criado.Recurso duplicado ou alteração incompatível. Exemplos:
  • externalCode já em uso por outro item.
  • Tentativa de mudar o tipo de um item para um valor incompatível com a categoria.
A requisição excedeu o limite de tamanho. Ocorre em:
  • Upload de imagem acima de 5 MB.
  • Lote com muitos itens.
Divida em requisições menores.Os dados violam regras de negócio. Verifique:
  • Item tem price definido.
  • min de um grupo de complementos é menor ou igual a max.
  • A loja tem no máximo uma categoria do tipo PIZZA.
  • Categorias de pizza têm todos os grupos obrigatórios (SIZE, CRUST, EDGE, TOPPING).
Você excedeu o rate limit. Aguarde antes de repetir. Implemente backoff exponencial (veja boas práticas).Erro no servidor iFood. Tente novamente em alguns minutos. Se persistir, abra um chamado com o batchId ou timestamp da chamada.
Verifique nesta ordem:
  1. Item tem status: AVAILABLE
  2. Categoria tem status: AVAILABLE
  3. Item tem price.value definido
  4. Cada grupo de complementos obrigatório tem pelo menos uma opção AVAILABLE
  5. Disponibilidade por turno cobre a hora atual
  6. Contexto de venda está correto
Consulte a resposta do endpoint de listagem de itens ou catálogo para confirmar que o item foi criado e seus atributos estão corretos.Endpoints em lote rodam de forma assíncrona. Após chamar o endpoint:
  1. Salve o batchId retornado
  2. Consulte GET /batch/{batchId} a cada 5–10 segundos
  3. Aguarde status: COMPLETED
  4. Verifique result: SUCCESS para cada item em results
Se um item falhou, confirme que productId ou externalCode existe e que você tem permissão naquele contexto.Pizzas exigem esta estrutura:
  • Item com type: "PIZZA"
  • Omita categoryId (a API cria a categoria automaticamente)
  • Inclua os grupos SIZE, CRUST, EDGE e TOPPING
  • Cada grupo precisa de pelo menos uma opção com price definido
Exemplo de opção de tamanho:
{
  "id": "size-id",
  "status": "AVAILABLE",
  "productId": "size-product-id",
  "fractions": [1, 2],
  "externalCode": "size_code"
}
Veja o guia completo em Pizza.A API reutiliza produtos com o mesmo externalCode. Se você não quer reutilização, use códigos únicos. Se a reutilização é intencional (ex.: compartilhar um produto entre dois itens), mantenha o mesmo externalCode.Confirme:
  • catalogContext é um valor válido (DEFAULT, WHITELABEL, INDOOR).
  • contextModifiers é um array dentro da entidade (item ou opção).
  • O contexto existe no catálogo da loja.
  • Os valores em contextModifiers sobrescrevem os da raiz apenas no contexto especificado.
Confirme:
  • Formato jpg, jpeg ou png.
  • Tamanho menor que 5 MB.
  • imagePath foi preenchido com o retorno do endpoint de upload.
  • O upload retornou 200 OK.
Antes de ativar a integração:
  • Use o merchant de teste fornecido.
  • Teste cada fluxo (criar, atualizar, pausar, deletar).
  • Valide com GET /catalogs/{catalogId}/categories?include_items=true para confirmar que itens e complementos foram criados corretamente.
Inclua um externalCode único em cada item e complemento. Você consegue:
  • Atualizar recursos usando seu próprio ID
  • Rastrear mudanças originadas no seu sistema
  • Fazer sincronização bidirecional sem depender de IDs do iFood
Para operações sujeitas a falhas transitórias (5xx, 429, timeouts):
TentativaEspera
1Imediata
21 s
32 s
44 s
Não tente novamente em 4xx (exceto 429) — o problema é no payload, não no servidor.Não assuma que um lote terminou pelo retorno imediato:
  1. Salve o batchId
  2. Consulte GET /batch/{batchId} até status: COMPLETED
  3. Registre falhas individuais em results
{
  "batchId": "batch-123",
  "status": "COMPLETED",
  "results": [
    { "resourceId": "item-1", "result": "SUCCESS" },
    { "resourceId": "item-2", "result": "FAILURE" }
  ]
}
Crie o item uma vez e ajuste preço, status e código por contexto. Duplicar itens por canal dificulta manutenção e causa divergências.Armazene para cada operação:
  • Timestamp
  • Endpoint e método
  • Payload enviado
  • Resposta recebida (incluindo batchId)
Esses registros são essenciais para debug e para abrir chamados no suporte.
Se o problema persistir, abra um chamado no Suporte do Developer Portal com:
  • merchantId afetado.
  • Endpoint e método chamados.
  • IDs dos recursos envolvidos.
  • Resposta de erro completa.
  • Timestamp da chamada.
Esta página foi útil?
Avalie sua experiência no novo Developer portal: