Order status
GET /api/vendor/v1/orders/{orderId}Returns the current state of one delivery, together with its history. There is no bulk or "changed since" endpoint — status is delivered by webhook; this call is the fallback for when your endpoint was unreachable.
Request
GET /api/vendor/v1/orders/e5a9f0d3-7c21-4b88-a06e-3f9182bd4471
Authorization: Bearer <token>Use the orderId we returned when the order was created. Your own externalOrderId is echoed in the response but is not a lookup key.
Response
{
"success": true,
"data": {
"orderId": "e5a9f0d3-7c21-4b88-a06e-3f9182bd4471",
"externalOrderId": "ADS-ORD-99213",
"status": "Delivering",
"courier": {
"name": "Emre K.",
"phone": "5307654321",
"vehicleType": "Motorcycle"
},
"etaDropoffAt": "2026-08-04T19:14:00+03:00",
"updatedAt": "2026-08-04T19:06:40+03:00",
"events": [
{ "status": "Searching", "at": "2026-08-04T18:42:14+03:00" },
{ "status": "Assigned", "at": "2026-08-04T18:44:02+03:00" },
{ "status": "PickingUp", "at": "2026-08-04T18:51:30+03:00" },
{ "status": "PickedUp", "at": "2026-08-04T19:03:22+03:00" },
{ "status": "Delivering", "at": "2026-08-04T19:04:10+03:00" }
]
}
}Everything except events matches the data object of a delivery.status_changed webhook exactly — one parser covers both.
events is the full timeline. It exists so that when a restaurant asks "what happened at seven o'clock", you can answer without contacting us.
Rate limit
One request per order per 10 seconds
The limit is per order, not per account. Polling the same delivery in a tight loop returns 429 regardless of how much account quota you have left.
Status arrives by webhook. Query when you have a reason to — a support call, a reconnect after downtime — not on a timer.
HTTP/1.1 429 Too Many Requests
Retry-After: 7{
"success": false,
"message": "Query frequency exceeded for this order. Receive status changes via webhook.",
"data": { "errorCode": "RATE_LIMITED", "retryAfterSeconds": 7 }
}Statuses
| Status | Terminal | Meaning |
|---|---|---|
Searching | no | Looking for a courier |
Assigned | no | A courier accepted the job |
PickingUp | no | Courier is heading to the restaurant |
PickedUp | no | Package collected — cancellation is no longer possible |
Delivering | no | On the way to the customer |
Delivered | yes | Handed over |
Failed | yes | Could not be delivered; failureReason is present |
Cancelled | yes | Cancelled before pickup |
Once a terminal status is reached, no further webhooks are sent for that order.
After downtime
If your webhook endpoint was unavailable, do not sweep every order you have ever created. Query only the ones still in a non-terminal status on your side. Their number is small — an order lives for under an hour — and each one costs a single request.