Buscar en la documentación
ctrl+4K
Primeros pasos
Homologación
Sobre nuestras APIs

Visión general

Rate limit, o límite de solicitud, es el número máximo de solicitudes que una sola aplicación puede hacer en un período de tiempo determinado. Cuando la aplicación excede este límite, la solicitud de la API fallará y retornará un código de estado HTTP 429 (Too Many Requests).Estos límites nos ayudan a proporcionar una API confiable y escalable para todos los usuarios.
Cada módulo y endpoint de la API de iFood posee políticas específicas de límites de solicitud. Los límites varían con base en:
  • El endpoint específico siendo accedido.
  • El tipo de tu aplicación.
  • Ventana de tiempo (por minuto, hora o día).
Si recibes un error 429:
  1. Revisa el comportamiento de tu aplicación.
  2. Verifica si hay código que pueda estar en un loop.
  3. Implementa retroceso exponencial y lógica de nuevos intentos.
  4. Considera almacenar respuestas en caché cuando sea apropiado.
Errores 429
Muchos errores 429 ocurren cuando aplicaciones entran en estado de loop debido a fallas inesperadas. Verifica si tu aplicación realmente necesita hacer solicitudes frecuentes al endpoint afectado.
  • Implementa monitoreo de tasa de solicitudes en tu aplicación.
  • Añade tratamiento de errores específico para respuestas 429.
  • Usa nuestros headers de respuesta para acompañar tu uso actual:
    • X-RateLimit-Limit: Tu asignación total de solicitudes.
    • X-RateLimit-Remaining: Solicitudes restantes en la ventana actual.
    • X-RateLimit-Reset: Tiempo (en segundos) hasta que tu límite sea redefinido.
Mejores prácticas
Consulta la documentación sobre Mejores prácticas.
Consulta abajo los límites específicos de solicitud que se aplican a cada módulo.
EndpointLímite
POST /oauth/token20 req/min
POST /oauth/userCode20 req/min
EndpointLímite
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
EndpointLímite
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
EndpointLímite
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
EndpointLímite
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
EndpointLímite
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
EndpointLímite
Todos los endpoints del módulo Catalog15000 req/min
EndpointLímite
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
EndpointLímite
POST /merchants/{merchantId}/promotions1000 req/min
EndpointLímite
POST /ingestion/{merchantId}1000 req/min
PATCH /ingestion/{merchantId}1000 req/min
EndpointLímite
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
EndpointLímite
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 fue útil?
Evalúa tu experiencia en el nuevo portal de desarrolladores: