orderId. Este fluxo é ideal para usar logística iFood como backup ou para expandir sua capacidade de entrega.GET /shipping/v1.0/orders/{orderId}/deliveryAvailabilities| Parâmetro | Localização | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
orderId | path | uuid | Sim | ID do pedido existente na plataforma |
curl -X GET "https://merchant-api.ifood.com.br/shipping/v1.0/orders/{orderId}/deliveryAvailabilities" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json"200 OKid como quoteId na próxima etapa. A cotação é válida por ~24 horas.| Campo | Tipo | Descrição |
|---|---|---|
id | uuid | ID da cotação (use como quoteId na próxima etapa) |
expirationAt | datetime | Validade da cotação em UTC |
createdAt | datetime | Data de criação da cotação em UTC |
distance | integer | Distância de entrega em metros |
quote.grossValue | decimal | Valor bruto em reais |
quote.discount | decimal | Desconto em reais |
quote.netValue | decimal | Valor final (grossValue - discount) |
deliveryTime.min | integer | Tempo mínimo estimado em segundos |
deliveryTime.max | integer | Tempo máximo estimado em segundos |
hasPaymentMethods | boolean | Indica se há formas de pagamento |
paymentMethods[].id | uuid | ID do método de pagamento |
paymentMethods[].brand | string | Bandeira do cartão |
paymentMethods[].liability | string | Responsável pelo pagamento |
paymentMethods[].paymentType | string | Tipo de pagamento (ex: OFFLINE) |
paymentMethods[].method | string | CREDIT ou DEBIT |
{
"id": "57cd1046-2e06-446f-a2dd-18a518212c3c",
"expirationAt": "2023-08-18T19:49:06Z",
"createdAt": "2023-08-17T19:49:06Z",
"distance": 3000,
"quote": {
"grossValue": 7.99,
"discount": 0,
"netValue": 7.99
},
"deliveryTime": {
"min": 1200,
"max": 1800
},
"hasPaymentMethods": true,
"paymentMethods": [
{
"id": "21c65a8c-f29e-463f-b0bd-240edeb593c4",
"brand": "Visa",
"liability": "IFOOD",
"paymentType": "OFFLINE",
"method": "CREDIT"
}
]
}400 Bad Request| Código | Descrição | Ação |
|---|---|---|
BadRequest | Problema na requisição | Verifique se o orderId está no formato correto |
BadRequestMerchant | Sua loja está indisponível | Verifique o status da loja no painel |
DeliveryDistanceTooHigh | Endereço a mais de ~10km | Confirme o endereço com o cliente |
OffOpeningHours | Fora do horário de operação | Tente novamente no horário comercial |
OriginNotFound | Loja não encontrada | Registre sua loja nas áreas iFood |
ServiceAreaMismatch | Endereço fora da cobertura | Confirme se a região tem entrega iFood |
HighDemand | Logística saturada | Tente novamente em alguns minutos |
MerchantStatusAvailability | Sua conta tem pendências | Contate o suporte |
InvalidPaymentMethods | Forma de pagamento não suportada | Use outro método |
SaturatedOfflinePayment | Pagamento na entrega indisponível | Altere para outro método |
NRELimitExceeded | Limite de entregadores atingido | Aguarde conclusão de entregas |
{
"code": "DeliveryDistanceTooHigh",
"message": "Sob Demanda indisponível: o endereço da entrega está a mais de 10 km da sua loja.",
"details": ["Delivery distance too high"]
}500 Internal Server Error{
"code": "InternalServerError",
"message": "Ops. Houve uma falha. Tente novamente em alguns instantes.",
"details": ["Internal server error"]
}202 Accepted imediatamente e aloca o entregador em background.202 Accepted indica apenas que a requisição foi recebida. Monitore os eventos para saber o resultado final (sucesso ou falha).POST /shipping/v1.0/orders/{orderId}/requestDriver| Parâmetro | Localização | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
orderId | path | uuid | Sim | ID do pedido existente na plataforma |
quoteId | body | uuid | Sim | ID da cotação obtida na etapa anterior (válida por ~24h) |
curl -X POST "https://merchant-api.ifood.com.br/shipping/v1.0/orders/{orderId}/requestDriver" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"quoteId": "57cd1046-2e06-446f-a2dd-18a518212c3c"
}'{
"quoteId": "57cd1046-2e06-446f-a2dd-18a518212c3c"
}202 Accepted| Evento | Significado |
|---|---|
REQUEST_DRIVER | Requisição registrada |
REQUEST_DRIVER_SUCCESS | Entregador alocado com sucesso |
REQUEST_DRIVER_FAILED | Falha na alocação |
400 Bad Request| Código | Descrição | Ação |
|---|---|---|
BadRequest | Dados inválidos | Valide orderId e quoteId |
BadRequestCustomer | Cliente indisponível | Verifique dados do cliente |
BadRequestMerchant | Sua loja está indisponível | Verifique status da loja |
DeliveryDistanceTooHigh | Endereço fora da cobertura | Confirme endereço com o cliente |
HighDemand | Logística saturada | Tente novamente em minutos |
MerchantEasyDeliveryDisabled | Serviço não habilitado | Ative no painel |
OffOpeningHours | Fora do horário | Tente durante horário comercial |
OriginNotFound | Loja não localizada | Registre sua loja nas áreas iFood |
ServiceAreaMismatch | Endereço fora da área | Verifique cobertura iFood |
MerchantStatusAvailability | Sua conta tem restrições | Contate o suporte |
InvalidPaymentMethods | Forma de pagamento não suportada | Use outro método |
SaturatedOfflinePayment | Pagamento na entrega indisponível | Altere para outro método |
NRELimitExceeded | Limite de entregadores atingido | Aguarde conclusão de entregas |
{
"code": "HighDemand",
"message": "A logística iFood está temporariamente indisponível. Tente novamente mais tarde.",
"details": ["High demand"]
}HighDemand ou OffOpeningHours, implemente retry automático com backoff exponencial.POST /shipping/v1.0/orders/{orderId}/cancelRequestDriver| Parâmetro | Localização | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
orderId | path | uuid | Sim | ID do pedido a cancelar entrega |
curl -X POST "https://merchant-api.ifood.com.br/shipping/v1.0/orders/{orderId}/cancelRequestDriver" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json"202 Accepted| Evento | Significado |
|---|---|
DELIVERY_CANCELLATION_REQUESTED | Cancelamento solicitado |
DELIVERY_CANCELLATION_REQUEST_ACCEPTED | Cancelamento concluído, sem taxa |
DELIVERY_CANCELLATION_REQUEST_REJECTED | Entregador já aceitou |
400 Bad RequestorderId é um UUID válido.{
"code": "BadRequest",
"message": "Houve um problema ao solicitar o cancelamento. Verifique as informações enviadas.",
"details": ["Campo 'OrderID' deve estar no formato uuid."]
}500 Internal Server Error{
"code": "InternalServerError",
"message": "Ops. Houve uma falha. Tente novamente em alguns instantes.",
"details": ["Internal server error"]
}