List Orders
Retrieve orders belonging to the authenticated client. Supports two modes — cursor-based pagination for listing, and direct OID lookup for fetching specific orders.
Retrieve orders associated with your account. The endpoint operates in two mutually exclusive modes depending on whether the oids parameter is present.
Request
Method: GET
Endpoint: /api/v1/orders
Authorization: Bearer <token>
Mode 1: Cursor Pagination
Used when oids is not provided. Returns a sorted, paginated list of orders, newest first.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number | ❌ | Number of orders to return per page. Min 1, max 100. Defaults to 20. |
cursor | string | ❌ | ISO 8601 date string used for cursor-based pagination. Pass the nextCursor value from the previous response to retrieve the following page. Omit on the first request. |
status | string | ❌ | Comma-separated list of order statuses to filter by. Must be a single value string — repeated params (e.g. ?status=pending&status=processing) are rejected. See Valid Status Values below. |
type | string | ❌ | Comma-separated list of order types / providers to filter by. Must be a single value string. See Valid Type Values below. |
Valid Status Values
| Value | Description |
|---|---|
pending | Order has been created and is awaiting processing |
processing | Order is being prepared for dispatch |
packed | Order has been packed and is ready for pickup |
pickedUp | Order has been picked up by the courier |
outForDelivery | Order is out for delivery |
delivered | Order has been delivered to the customer |
collected | Payment for the order has been collected |
returned | Order was returned to the warehouse |
cancelled | Order was cancelled |
postponed | Delivery has been postponed |
unreachable | Customer could not be reached |
outOfStock | One or more products were out of stock |
invalidAddress | Customer address could not be validated |
RTW | Return to warehouse in progress |
QC | Order is undergoing quality control |
Valid Type Values
Standard order types:
| Value | Description |
|---|---|
NORMAL | A standard fulfillment order |
PROMOTIONAL | A promotional / gifting order |
EXCHANGE | An exchange order |
REFUND | A refund/return order |
Integration order providers:
| Value | Description |
|---|---|
SHOPIFY | Order originated from a Shopify store |
WOOCOMMERCE | Order originated from a WooCommerce store |
OPENAPI | Order created via the Open API |
Example Requests
Fetching the next page using a cursor:
Response — ✅ 200 OK
Orders were successfully retrieved.
Response Body
| Field | Type | Description |
|---|---|---|
data | array | Array of order objects for the current page |
pagination | object | Pagination metadata |
pagination.limit | number | The effective page size used |
pagination.hasNextPage | boolean | true if more results are available after this page |
pagination.nextCursor | string | null | ISO 8601 date string to pass as cursor on the next request. null when on the last page. |
Order Object Fields
| Field | Type | Description |
|---|---|---|
OID | string | Unique Turuq order identifier |
status | string | Current order status |
source | string | Unified type/provider field (e.g. NORMAL, SHOPIFY, OPENAPI) |
deliveryAttempts | number | Number of delivery attempts made |
customer | object | Customer details |
customer.name | string | Customer's full name |
customer.phone | string | Customer's phone number |
customer.address | string | Customer's street address |
customer.governorate | string | Customer's governorate |
subtotal | number | Order subtotal (EGP) |
shippingFees | number | Shipping fees applied to the order (EGP) |
total | number | Total order value including fees (EGP) |
createdAt | string | ISO 8601 timestamp of when the order was created |
Example Response (First Page)
Example Response (Last Page)
Mode 2: OID Lookup
Used when the oids query parameter is provided. Fetches one or more specific orders by their numeric order ID. This mode is mutually exclusive with cursor, limit, status, and type.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
oids | string | ✅ | Comma-separated list of numeric order IDs. Maximum 100 OIDs per request. Must be provided as a single CSV string — repeated params (e.g. ?oids=1&oids=2) are rejected. OIDs are numeric and do not need to be zero-padded; the API handles formatting internally. |
Example Request
Response — ✅ 200 OK
All requested OIDs were found.
Response — ✅ 206 Partial Content
Some OIDs were found, but others were not (not found or belong to another client).
Response — ❌ 404 Not Found
None of the requested OIDs matched any orders belonging to the authenticated client.
Error Responses
❌ 400 Bad Request
Returned when query parameter validation fails.
OID mode combined with pagination/filter params:
OIDs provided as repeated params instead of CSV:
More than 100 OIDs requested:
Non-numeric OID:
Invalid cursor value:
Status provided as repeated params instead of CSV:
Invalid status value:
Invalid type value:
❌ 500 Internal Server Error
Pagination Guide
This endpoint uses cursor-based pagination for efficient traversal of large result sets. Unlike offset-based pagination, cursors are stable across concurrent writes and do not degrade in performance as you navigate deeper into the dataset.
- First request — omit
cursor. The response will contain the firstlimitresults. - Subsequent requests — pass the
nextCursorvalue from the previous response as thecursorparameter. - End of results — when
hasNextPageisfalseandnextCursorisnull, you have retrieved all matching orders.
The
cursorvalue is an ISO 8601 timestamp. Results with acreatedAtstrictly before the cursor are returned, ensuring no page overlap.
For an overview of all order-related endpoints, visit the Orders Overview.
