Track a Shipment¶
Shipments
Movement data
Surface the live journey of any shipment by referencing the tracking ID, shipment ID, booking ID, or your custom booking ID. Each call returns the latest scan events, timestamps, and delivery ETA.
Verb
GET
Data freshness
Events stream in near real time
Retry guidance
Use exponential backoff when polling
Endpoint¶
GET
Authenticated
URL: {{base_url}}/partner/shipment/track-shipment/{{identifier}}
Query Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
extraDetails |
boolean | No | Set to true to include additional shipment details. Default: false |
Identifier Options¶
You can track using any of these identifiers:
| Identifier | When to use | Example |
|---|---|---|
trackingId |
Most common; shared with customers via labels and emails. | 692986D4 |
shipmentId |
Internal AAJ GUID used when you already have the shipment payload. | bf214001-b3bb-4d49-a433-e5ef5177a732 |
bookingId |
Use when you only captured the commerce booking identifier. | bf214001-b3bb-4d49-a433-e5ef5177a732 |
Required Headers¶
| Header | Value |
|---|---|
Authorization |
Bearer {{ token }} |
cURL Example¶
curl -X GET "https://booking.aajexpress.org/api/v2/partner/shipment/track-shipment/692986D4?extraDetails=false" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Response¶
{
"success": true,
"message": "Shipment tracked successfully",
"data": {
"carrier": "AAJ",
"serviceType": "",
"trackingNumber": "692986D4",
"customBookingId": "FAV123456",
"events": [
{
"meta": {
"hub": null,
"hubId": null,
"status": 0,
"location": "Online Branch",
"userName": "Faith Philz"
},
"user": "68d51bf76d726a7296c52dbf",
"bagTag": "",
"category": "",
"dateTime": "2025-11-28T12:26:25.000000+01:00",
"exception": null,
"scanType": "LABEL_CREATED",
"description": "Label documents have been created",
"manifestId": "",
"objectType": "SHIPMENT",
"shipmentTrackingId": "692986D4",
"additionalInfo": null,
"_id": "692986e163136da39a6af133",
"createdAt": "2025-11-28T11:26:25.775Z",
"updatedAt": "2025-11-28T11:26:25.775Z"
}
],
"status": 0,
"timestamp": "2025-11-28T11:26:25.777Z",
"description": "Label documents have been created",
"weight": 90,
"packageDimension": {
"length": 32,
"width": 25,
"height": 2,
"unit": "KGS",
"dimensionalWeight": 0.32,
"actualWeight": 90
},
"labelCreated": "2025-11-28T11:26:25.777Z",
"eta": {
"numberOfDays": 3,
"dateOfArrival": "2025-12-01T11:26:12.000000+01:00",
"lastTrack": "2025-11-28T11:26:12.843Z"
},
"senderLocation": {
"city": "iKEJA",
"state": "LA",
"country": "Nigeria",
"countryCode": "NG",
"postcode": "23949",
"location": "location"
},
"receiverLocation": {
"city": "Ikeja",
"state": "LA",
"country": "Nigeria",
"countryCode": "NG",
"postcode": "23994",
"location": "location"
},
"shipmentTrackingId": "692986D4",
"bookingSearchId": "09130967",
"searchedBy": "692986D4",
"acknowledgementCopy": null
}
}
Response Fields¶
| Field | Description |
|---|---|
trackingNumber |
The public-facing tracking value printed on labels. |
customBookingId |
Your custom reference ID (if provided during booking creation). |
carrier |
The carrier handling the shipment (e.g., AAJ). |
events |
Chronological list of scan milestones with metadata about hub, user, and scan type. |
status |
Integer status that maps to the shipment lifecycle (see table below). |
timestamp |
When the shipment was last updated in the network. |
description |
Human-readable summary of the latest state. |
weight |
Total weight of the shipment in the configured unit. |
packageDimension |
Declared dimension + chargeable weight for billing reconciliation. |
labelCreated |
Timestamp when the shipping label was generated. |
eta |
Promise window, including arrival estimate and last update date. |
senderLocation / receiverLocation |
Sanitized address data for sender and receiver contacts. |
shipmentTrackingId |
The unique shipment tracking identifier. |
bookingSearchId |
Alternative search ID linked to the original booking. |
searchedBy |
The identifier used to perform this tracking lookup. |
Shipment Status Codes¶
| Status | Description |
|---|---|
0 |
Label Created |
1 |
Picked Up / Received |
2 |
In Transit |
3 |
Out for Delivery |
4 |
Delivered |
For complete status information, see Shipment Statuses.
Event Scan Types¶
| Scan Type | Description |
|---|---|
LABEL_CREATED |
Shipping label has been generated |
PICKED_UP |
Package picked up from sender |
IN_TRANSIT |
Package in transit to destination |
OUT_FOR_DELIVERY |
Package out for final delivery |
DELIVERED |
Package successfully delivered |
EXCEPTION |
Delivery exception occurred |
Real-time Notifications
For real-time customer notifications, poll until status reaches 4 (delivered), then confirm proof-of-delivery via the Single Shipment endpoint.