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