Polling é um método simples para receber atualizações de uma API. Seu sistema envia requisições regulares ao endpoint GET /events:polling e verifica se há novos eventos. A API retorna as informações novas desde a última requisição.Resposta da API:
200: Retorna lista de eventos
204: Nenhum evento novo disponível
O polling é fácil de implementar, mas pode aumentar o tráfego e causar atrasos em comparação com webhooks.
Intervalo recomendado
Execute polling a cada 30 segundos para manter a loja online e receber eventos sem atrasos.
Rate limit
O limite absoluto é de 6000 requisições por minuto (RPM) por token. Exceder esse limite resulta em erro 429 (Too Many Requests) e possível bloqueio temporário da sua integração.Para evitar problemas, mantenha o intervalo de 30 segundos sempre que possível. Se sua integração gerencia múltiplos merchants, agrupe as requisições sequencialmente dentro do mesmo ciclo de 30 segundos. Evite aproximar-se do limite de 6000 RPM para garantir estabilidade da integração.
Retenção de eventos
A API mantém eventos por até 8 horas após a entrega do pedido. Após esse prazo, os eventos não são mais retornados. A API retorna apenas eventos sem acknowledgment (ACK). Envie o ACK somente após garantir que armazenou o evento com segurança.
Ordenação de eventos
A API pode entregar eventos fora de ordem. Ordene os eventos pelo campo createdAt após recebê-los para garantir a sequência correta.
Filtros
Você pode filtrar os eventos recebidos no polling.
Filtro por categoria
Use o parâmetro categories para filtrar pedidos por categoria. Por padrão, a API retorna eventos das categorias FOOD e GROCERY.Exemplos:
GET /events:polling?categories=FOOD,GROCERY,ANOTAI,FOOD_SELF_SERVICEGET /events:polling?categories=ALL
categories=ALL retorna todas as categorias, incluindo novas categorias criadas futuramente.
Pedidos da categoria ANOTAI só aparecem se o restaurante usa Pagamento Online iFood no Anota AI.
Use types e groups para filtrar eventos específicos.Exemplos:
GET /events:polling?groups=STATUS,DELIVERY,TAKEOUTGET /events:polling?types=COL,CFM,CAN,AAOGET /events:polling?groups=ORDER_STATUS&types=AAO,AAD
Como funciona o filtro
Auto-acknowledgment de eventos não filtrados:
Quando você aplica filtros, os eventos que não correspondem aos critérios recebem acknowledgment automático. Isso significa que eventos já confirmados não serão retornados em requisições futuras.Impacto na mudança de filtros:
Se você alterar os filtros após já ter recebido eventos, os eventos anteriormente confirmados não serão retornados novamente. Por isso, recomendamos:
Defina seus filtros desde o início
Consuma todos os eventos em um único fluxo
Repasse os eventos conforme sua lógica de negócio
Relação entre groups e types:
Os groups já incluem os types correspondentes. Evite usar ambos simultaneamente para os mesmos eventos, como ?groups=ORDER_STATUS&types=PLC,CFM..., pois isso cria filtros duplicados desnecessários.Limitações:
Não é possível filtrar eventos do grupo OUTROS
Para receber todos os eventos sem filtros, não use os parâmetros types ou groups
Para maior flexibilidade, consuma todos os eventos sem filtros e implemente a lógica de seleção no seu sistema.
Filtro por merchants
O endpoint retorna eventos de até 500 merchants por requisição. Use o header x-polling-merchants para especificar quais lojas.Exemplo:
GET /events:polling--header 'x-polling-merchants: 0a0000aa-0aa0-00aa-aa00-0000aa000001,0a0000aa-0aa0-00aa-aa00-0000aa000002'
Aplicativos centralizados e distribuídos
Cenários de uso:
Merchants no token
Header obrigatório?
Comportamento
Até 500
Opcional
Sem header: retorna eventos de todos os merchants
Mais de 500
Obrigatório
Divida em lotes de até 100 merchants por requisição
Para aplicativos centralizados:
Sempre use x-polling-merchants para filtrar por merchant
Limite: 100 merchant IDs por header
Sem o header em tokens com muitos merchants: erro "Bad request. Too many polling merchants"
Para aplicativos com mais de 500 merchants, considere usar webhooks. Webhooks entregam eventos em tempo real e eliminam a necessidade de gerenciar múltiplas requisições de polling.
Erro 403 - Forbidden
Causa: Token sem permissão para um ou mais merchants especificados no header x-polling-merchants.Resposta da API:
Remova os merchants listados em unauthorizedMerchants do header
Envie nova requisição com apenas merchants autorizados
Como identificar a causa:
Verifique se o merchant revogou o acesso do aplicativo
Se o acesso foi aprovado recentemente, gere um novo token (o token atual pode ter sido criado antes da aprovação)
Múltiplos devices ou aplicativos
Múltiplos aplicativos podem consumir eventos da mesma loja simultaneamente. A API gera um identificador único ("device") para cada aplicativo baseado nas credenciais.Como funciona:
Cada device tem controle independente de acknowledgment
Você pode receber eventos de confirmação gerados por outros devices
Registre e atualize o status do pedido com base em todos os eventos recebidos, independente da origem
Exemplo: A loja pode usar seu aplicativo e o Gestor de Pedidos do iFood ao mesmo tempo.
Testamos o aplicativo completo, não apenas chamadas individuais da API. Certifique-se de que o aplicativo está totalmente funcional antes de solicitar homologação.
Contas Pessoal/Estudante (CPF) não são aceitas para homologação. Use apenas conta Profissional (CNPJ).
Integradoras Logísticas: Envie o parâmetro excludeHeartbeat=true no endpoint de polling para evitar abrir a loja indevidamente. Isso previne cancelamento de pedidos e penalização do merchant.Saiba mais sobre Status de Conexão