Endpoints
Technical reference for all Merchant API endpoints.Base URL
https://merchant-api.ifood.com.br/merchant/v1.0
All requests must include the authentication header:Authorization: Bearer YOUR_TOKEN
Merchants
List stores
Returns all stores linked to your token.Query parameters:page (optional) — Page number (starts at 1)size (optional) — Number of stores per page (default: 100)
Response 200:[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Pizzaria Central",
"corporateName": "Pizzaria Central LTDA"
}
]
Error codes:401 Unauthorized — Invalid or expired token500 InternalServerError — Error fetching stores
Get store details
GET /merchants/{merchantId}
Returns complete information about a specific store.Path parameters:merchantId (required) — Store ID
Response 200:{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Pizzaria Central",
"corporateName": "Pizzaria Central LTDA",
"description": "Specializes in Neapolitan pizza",
"averageTicket": 85.50,
"exclusive": false,
"type": "RESTAURANT",
"status": "AVAILABLE",
"createdAt": "2024-01-15T10:30:00",
"address": {
"street": "Rua das Flores",
"number": "123",
"city": "São Paulo",
"state": "SP",
"postalCode": "01310-100",
"country": "BR",
"district": "Centro",
"latitude": -23.5505,
"longitude": -46.6333
},
"operations": [
{
"name": "DELIVERY",
"salesChannels": [
{
"name": "MARKETPLACE",
"enabled": true
}
]
}
]
}
Error codes:401 Unauthorized — Invalid token403 Forbidden — No access500 InternalServerError — Error fetching details
Status
Check status
GET /merchants/{merchantId}/status
Returns the operational status of a store.Path parameters:merchantId (required) — Store ID
Response 200:[
{
"operation": "DELIVERY",
"salesChannel": "MARKETPLACE",
"available": true,
"state": "OK",
"validations": [
{
"id": "val-001",
"code": "is-connected",
"state": "OK",
"message": {
"title": "Connected",
"subtitle": "Store is responding",
"description": "Polling received in the last 30 seconds"
}
}
],
"message": {
"title": "Store Online",
"subtitle": "Ready to receive orders",
"description": "All validations passed successfully"
}
}
]
Error codes:400 BadRequest — Invalid parameters401 Unauthorized — Invalid token403 Forbidden — No access500 InternalServerError — Error fetching status
Check operation status
GET /merchants/{merchantId}/status/{operation}
Returns the status of a specific operation.Path parameters:merchantId (required) — Store IDoperation (required) — Operation type
Interruptions
List interruptions
GET /merchants/{merchantId}/interruptions
Returns all active and future pauses.Path parameters:merchantId (required) — Store ID
Response 200:[
{
"id": "interrupt-001",
"description": "Equipment maintenance",
"start": "2025-02-05T14:00:00Z",
"end": "2025-02-05T15:30:00Z"
}
]
Create interruption
POST /merchants/{merchantId}/interruptions
Creates a pause in order receipt.Path parameters:merchantId (required) — Store ID
Request body:{
"description": "Equipment maintenance",
"start": "2025-02-05T14:00:00Z",
"end": "2025-02-05T15:30:00Z"
}
Required fields:description — Pause reason (max 255 chars)start — Start time (ISO 8601)end — End time (ISO 8601)
Response 201:{
"id": "interrupt-001",
"description": "Equipment maintenance",
"start": "2025-02-05T14:00:00Z",
"end": "2025-02-05T15:30:00Z"
}
Validations:start must be before end- Minimum duration: 1 minute
- Maximum duration: 7 days
- No overlapping pauses
Error codes:400 BadRequest — Invalid parameters409 InterruptionOverlap — Overlapping pause401 Unauthorized — Invalid token403 Forbidden — No access500 InternalServerError — Error creating interruption
Delete interruption
DELETE /merchants/{merchantId}/interruptions/{interruptionId}
Removes a pause and reopens the store.Path parameters:merchantId (required) — Store IDinterruptionId (required) — Interruption ID
Response 204:No content. Interruption removed successfully.Error codes:401 Unauthorized — Invalid token403 Forbidden — No access500 InternalServerError — Error deleting interruption
Opening Hours
List hours
GET /merchants/{merchantId}/opening-hours
Returns configured operating hours.Path parameters:merchantId (required) — Store ID
Response 200:[
{
"shifts": [
{
"id": "shift-001",
"dayOfWeek": "MONDAY",
"start": "09:00:00",
"duration": 360
}
]
}
]
PUT /merchants/{merchantId}/opening-hours
Updates operating hours (complete replacement).Path parameters:merchantId (required) — Store ID
Request body:{
"storeId": "550e8400-e29b-41d4-a716-446655440000",
"shifts": [
{
"dayOfWeek": "MONDAY",
"start": "09:00:00",
"duration": 360
}
]
}
Required fields:storeId — Store IDshifts — Array of shiftsdayOfWeek — Day of weekstart — Opening timeduration — Duration in minutes
Response 201:{
"storeId": "550e8400-e29b-41d4-a716-446655440000",
"shifts": [
{
"id": "shift-001",
"dayOfWeek": "MONDAY",
"start": "09:00:00",
"duration": 360,
"enabled": true,
"createdAt": "2025-02-06T10:30:00Z"
}
]
}
Validations:dayOfWeek must be valid daystart must be valid timeduration must be positive- No overlapping shifts
- List cannot be empty
Error codes:400 BadRequest — Invalid parameters401 Unauthorized — Invalid token403 Forbidden — No access500 InternalServerError — Error updating hours
Check-in
Generate QR Code
POST /merchants/checkin-qrcode
Generates PDF file with QR codes for driver check-in.Request body:{
"merchantIds": [
"550e8400-e29b-41d4-a716-446655440000",
"550e8400-e29b-41d4-a716-446655440001"
]
}
Required fields:merchantIds — Store IDs (max 20)
Response 200:Binary PDF file ready for printing.Limits:- Max 20 stores per request
- Grocery stores only
- QR codes never expire
Error codes:400 BadRequest — Invalid store list401 Unauthorized — Invalid token403 Forbidden — No access404 NotFound — Stores not found500 InternalServerError — Error generating QR code
HTTP Status Codes
| Code | Meaning |
|---|
200 | Request successful |
201 | Resource created |
204 | No content |
400 | Invalid parameters |
401 | Invalid token |
403 | No access |
404 | Not found |
409 | Conflict |
429 | Rate limit exceeded |
500 | Server error |
Was this page helpful? Rate your experience in the new Developer portal: