Buscar na documentação
ctrl+4K
Primeiros passos
Homologação
Sobre nossas APIs

Visão geral

Rate limit, ou limite de requisição, é o número máximo de requisições que um único aplicativo pode fazer em um determinado período de tempo. Quando o aplicativo excede esse limite, a solicitação da API falhará e retornará um código de status HTTP 429 (Too Many Requests).Esses limites nos ajudam a fornecer uma API confiável e escalável para todos os usuários.
Cada módulo e endpoint da API do iFood possui políticas específicas de limites de requisição. Os limites variam com base em:
  • O endpoint específico sendo acessado.
  • O tipo da sua aplicação.
  • Janela de tempo (por minuto, hora ou dia).
Se você receber um erro 429:
  1. Revise o comportamento da sua aplicação.
  2. Verifique se há código que possa estar em um loop.
  3. Implemente recuo exponecial e lógica de novas. tentativas.
  4. Considere armazenar respostas em cache quando apropriado.
Erros 429
Muitos erros 429 ocorrem quando aplicações entram em estado de loop devido a falhas inesperadas. Verifique se sua aplicação realmente precisa fazer requisições frequentes ao endpoint afetado.
  • Implemente monitoramento de taxa de requisições na sua aplicação.
  • Adicione tratamento de erros específico para respostas 429.
  • Use nossos cabeçalhos de resposta para acompanhar seu uso atual:
    • X-RateLimit-Limit: Sua alocação total de requisições.
    • X-RateLimit-Remaining: Requisições restantes na janela atual.
    • X-RateLimit-Reset: Tempo (em segundos) até que seu limite seja redefinido.
Melhores práticas
Confira a documentação sobre Melhores práticas.
Confira abaixo os limites específicos de requisição que se aplicam a cada módulo.
EndpointLimite
POST /oauth/token20 req/min
POST /oauth/userCode20 req/min
EndpointLimite
GET /events:polling6000 req/min
POST /events/acknowledgment6000 req/min
GET /orders/{id}3000 req/min
GET /orders/{id}/virtual-bag1000 req/s
POST /orders/{id}/confirm3000 req/min
POST /orders/{id}/startPreparation3000 req/min
POST /orders/{id}/readyToPickup3000 req/min
POST /orders/{id}/dispatch3000 req/min
POST /orders/{id}/requestCancellation300 req/min
POST /orders/{id}/tracking5000 req/min
POST /order/v1.0/disputes/{disputeId}/accept1000 req/min
POST /order/v1.0/disputes/{disputeId}/reject1000 req/min
POST /order/v1.0/disputes/{disputeId}/alternatives/{alternativeId}1000 req/min
EndpointLimite
GET /merchants/{merchantId}/deliveryAvailabilities4000 req/min
GET /orders/{orderId}/deliveryAvailabilities4000 req/min
POST /merchants/{merchantId}/order4000 req/min
POST /orders/{orderId}/requestDriver4000 req/min
POST /orders/{orderId}/cancel600 req/min
POST /orders/{orderId}/cancelRequestDriver600 req/min
POST /orders/{orderId}/userConfirmAddress500 req/min
POST /orders/{orderId}/deliveryAddressChangeRequest500 req/min
POST /orders/{orderId}/acceptDeliveryAddressChange500 req/min
POST /orders/{orderId}/denyDeliveryAddressChange500 req/min
GET /orders/{orderId}/safeDelivery500 req/min
EndpointLimite
GET /merchants100 req/min
GET /merchants/{merchantId}300 req/min
GET /merchants/{merchantId}/status20000 req/min
GET /merchants/{merchantId}/interruptions100 req/min
POST /merchants/{merchantId}/interruptions200 req/min
DELETE /merchants/{merchantId}/interruptions/{interruptionId}100 req/min
GET /merchants/{merchantId}/opening-hours100 req/min
PUT /merchants/{merchantId}/opening-hours100 req/min
EndpointLimite
GET /merchants/{merchantId}/reviews2000 req/min
GET /merchants/{merchantId}/reviews/{reviewId}2000 req/min
POST /merchants/{merchantId}/reviews/{reviewId}/answers2000 req/min
GET /merchants/{merchantId}/summary2000 req/min
EndpointLimite
GET /merchants/{merchantId}/sales1000 req/min
GET /merchants/{merchantId}/payments1000 req/min
GET /merchants/{merchantId}/paymentDetails1000 req/min
GET /merchants/{merchantId}/occurrences1000 req/min
GET /merchants/{merchantId}/maintenanceFees1000 req/min
GET /merchants/{merchantId}/incomeTaxes1000 req/min
GET /merchants/{merchantId}/periods?competence={competence}1000 req/min
GET /merchants/{merchantId}/chargeCancellations1000 req/min
GET /merchants/{merchantId}/cancellations1000 req/min
GET /merchants/{merchantId}/receivableRecords1000 req/min
GET /merchants/{merchantId}/salesAdjustments1000 req/min
GET /merchants/{merchantId}/salesBenefits1000 req/min
GET /merchants/{merchantId}/adjustmentsBenefits1000 req/min
EndpointLimite
Todos os endpoints do módulo Catalog15000 req/min
EndpointLimite
GET /merchants/{merchantId}/catalogs/{catalogId}/categories3000 req/min
POST /merchants/{merchantId}/catalogs/{catalogId}/categories3000 req/min
GET /merchants/{merchantId}/catalogs/{catalogId}/categories/{categoryId}3000 req/min
PATCH /merchants/{merchantId}/catalogs/{catalogId}/categories/{categoryId}3000 req/min
GET /merchants/{merchantId}/categories/{categoryId}/items3000 req/min
DELETE /merchants/{merchantId}/categories/{categoryId}3000 req/min
GET /merchants/{merchantId}/catalogs3000 req/min
GET /merchants/{merchantId}/catalogs/{catalogId}/unsellableItems3000 req/min
GET /merchants/{merchantId}/catalogs/{groupId}/sellableItems3000 req/min
GET /merchants/{merchantId}/catalogs/{catalogId}/changelog3000 req/min
GET /merchants/{merchantId}/catalog/version3000 req/min
GET /merchants/{merchantId}/products3000 req/min
POST /merchants/{merchantId}/products3000 req/min
PUT /merchants/{merchantId}/products/{productId}3000 req/min
DELETE /merchants/{merchantId}/products/{productId}3000 req/min
PATCH /merchants/{merchantId}/products/status5000 req/min
PATCH /merchants/{merchantId}/products/price5000 req/min
GET /merchants/{merchantId}/product/{productId}3000 req/min
GET /merchants/{merchantId}/products/externalCode/{externalCode}3000 req/min
DELETE /merchants/{merchantId}/categories/{categoryId}/products/{productId}3000 req/min
GET /merchants/{merchantId}/items/{itemId}/flat3000 req/min
PATCH /merchants/{merchantId}/item/price5000 req/min
PATCH /merchants/{merchantId}/item/status5000 req/min
PATCH /merchants/{merchantId}/item/externalCode3000 req/min
PUT /merchants/{merchantId}/items3000 req/min
GET /merchants/{merchantId}/optionGroups5000 req/min
DELETE /merchants/{merchantId}/optionGroups/{optionGroupId}3000 req/min
PATCH /merchants/{merchantId}/optionGroups/{optionGroupId}5000 req/min
DELETE /merchants/{merchantId}/optionGroups/{optionGroupId}/products/{productId}5000 req/min
PATCH /merchants/{merchantId}/optionGroups/{optionGroupId}/status5000 req/min
DELETE /merchants/{merchantId}/optionGroups/{optionGroupId}/products/{productId}/option5000 req/min
PATCH /merchants/{merchantId}/options/price5000 req/min
PATCH /merchants/{merchantId}/options/status5000 req/min
PATCH /merchants/{merchantId}/options/externalCode5000 req/min
GET /merchants/{merchantId}/batch/{batchId}5000 req/min
POST /merchants/{merchantId}/inventory5000 req/min
GET /merchants/{merchantId}/inventory/{productId}5000 req/min
POST /merchants/{merchantId}/inventory/batchDelete5000 req/min
POST /merchants/{merchantId}/version/upgrade3000 req/min
POST /merchants/{merchantId}/version/downgrade3000 req/min
EndpointLimite
POST /ingestion/{merchantId}1000 req/min
PATCH /ingestion/{merchantId}1000 req/min
EndpointLimite
POST /logistics/v1.0/orders/{id}/assignDriver3000 req/min
POST /logistics/v1.0/orders/{id}/goingToOrigin3000 req/min
POST /logistics/v1.0/orders/{id}/arrivedAtOrigin3000 req/min
POST /logistics/v1.0/orders/{id}/dispatch3000 req/min
POST /logistics/v1.0/orders/{id}/arrivedAtDestination3000 req/min
POST /logistics/v1.0/orders/{id}/verifyDeliveryCode3000 req/min
EndpointLimit
POST /orders/{id}/startSeparation1000 req/s
POST /orders/{id}/endSeparation1000 req/s
POST /orders/{id}/items1000 req/s
PATCH /orders/{id}/items/{uniqueId}1000 req/s
DELETE /orders/{id}/items/{uniqueId}1000 req/s
Esta página foi útil?
Avalie sua experiência no novo Developer portal: