Skip to content

Order status ​

http
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 ​

http
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 ​

json
{
  "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
HTTP/1.1 429 Too Many Requests
Retry-After: 7
json
{
  "success": false,
  "message": "Query frequency exceeded for this order. Receive status changes via webhook.",
  "data": { "errorCode": "RATE_LIMITED", "retryAfterSeconds": 7 }
}

Statuses ​

StatusTerminalMeaning
SearchingnoLooking for a courier
AssignednoA courier accepted the job
PickingUpnoCourier is heading to the restaurant
PickedUpnoPackage collected — cancellation is no longer possible
DeliveringnoOn the way to the customer
DeliveredyesHanded over
FailedyesCould not be delivered; failureReason is present
CancelledyesCancelled 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.

Hızlıyo Vendor API v1