Tracking events
GET/v1/orders/{id}/tracking
scope orders.read
The courier's own history where we have it; before an AWB exists it falls back to the order's own milestones so you always have something to render.
Response#
| Field | Type | Description |
|---|---|---|
order_id | integer | The order. |
status | string|null | Where the parcel is: the status of the latest COURIER event, in the courier's own wording (the same text as that event's status). null until the courier has reported anything. Use events[].is_final rather than matching on the text to know the parcel arrived. |
internal_status | string | The order status, same vocabulary as status on GET /v1/orders/{id}. It stays accepted while the parcel travels and after it is delivered — delivery is recorded in delivered_at on the order, not here. |
awb | object|null | The waybill, or null before one exists. |
awb. | string | The AWB number. |
awb. | string|null | Where the parcel can be followed. |
events | array | What has happened to the parcel, oldest first. Before an AWB exists there is no courier history at all, so this FALLS BACK to the order's own milestones — you always get something to render, and source tells you which you are looking at. |
events[]. | string | What happened. From the courier this is their own wording, not our status vocabulary, so do not match on it. |
events[]. | string | ISO-8601 UTC. |
events[]. | string|null | Where it was scanned, on courier events. |
events[]. | boolean | Whether this is a terminal event for the parcel. |
events[]. | string | courier is a real scan; order is one of our own milestones, used when there is no courier history yet.Accepts |
Example
{
"order_id": 711,
"status": "Livrat",
"internal_status": "accepted",
"awb": {
"number": "SBX0000007112",
"tracking_url": "https://sandbox-api.biklo.com/track/SBX0000007112"
},
"events": [
{
"status": "accepted",
"at": "2026-09-09T19:40:19Z",
"location": null,
"source": "order",
"is_final": false
},
{
"status": "Livrat",
"at": "2026-09-11T14:22:05Z",
"location": "Craiova",
"source": "courier",
"is_final": true
}
]
}