Skip to main content
Every response from the Now Shipping API uses the same JSON envelope, regardless of the endpoint or HTTP method. The envelope always contains a success boolean that tells you whether the request succeeded, plus either a data object (on success) or an error object (on failure). Checking success first is the recommended pattern for all response handling in your integration.

Success response

A successful request returns HTTP 2xx and a body shaped like this:
The contents of data vary by endpoint. For resource-creation endpoints (e.g. POST /orders), data contains the created object. For retrieval endpoints (e.g. GET /orders/{orderNumber}), it contains the full resource.
success is always a boolean. Check success === true before reading data — do not rely on the HTTP status code alone.

Paginated list responses

List endpoints (e.g. GET /orders, GET /pickups, GET /merchants) include a pagination object nested inside data:

Pagination fields

Use the page and limit query parameters to navigate pages. The default page size varies by endpoint; check the individual endpoint reference for defaults and maximums.

Error response

When a request fails, the API returns an appropriate 4xx or 5xx HTTP status and a body shaped like this:

Error fields

Log both error.code and error.message in your integration. When contacting Now Shipping support, including the code from the error body speeds up diagnosis significantly.

Example: cancel conflict error

Some errors include details to give you extra context for recovery:

Example: validation error

Zone values must be exact strings from GET /delivery-zones. Free-text zone names like "Nasr City" will fail validation — always build your address forms from the zone catalog.
For the complete list of error codes and their meanings, see the Error Reference.