GET /deliveries. Add the path to the base URL:
Choose an endpoint
GET means read data. POST means calculate, create, or change something. Text inside braces is a value you replace. For example:
Common workflows
Create a delivery quickly
UsePOST /deliveries with an inline recipient. This creates or reuses the recipient and address while creating the delivery. See the quickstart.
Reuse a recipient on many deliveries
POST /recipientsand save the returnedrcp_...ID.POST /recipients/{recipient_id}/addressesand save the returnedadr_...ID.- Send both IDs in each later
POST /deliveriesrequest.
Show a delivery-history page
- Call
GET /deliverieswith filters such asstatusorexternal_id. - Follow
meta.next_cursorwhilemeta.has_moreis true. - Call
GET /deliveries/{delivery_id}for one full snapshot. - Call
GET /deliveries/{delivery_id}/eventsfor its public timeline.
Cancel a delivery
CallPOST /deliveries/{delivery_id}/cancel. Cancellation works only before pickup. Cancelling an already-cancelled delivery returns the same cancelled delivery. Cancelling after pickup returns 409 DELIVERY_NOT_CANCELLABLE.
Visibility rules
Recipients and addresses belong to the HaulStow business, so two developer applications for the same business can reuse them. Deliveries belong to the developer application that created them. Another application receives404 instead of learning that the delivery exists.
The public delivery model intentionally excludes cargo contents, line items, rider details, internal operational state, platform notes, settlement data, and fee overrides.
IDs and filters
The letters at the beginning of an ID tell you what it identifies:
Copy IDs exactly. Do not remove the prefix or try to use an internal order ID.
Filters and pages
Delivery lists acceptstatus, external_id, created_after, created_before, cursor, and limit. Recipient lists accept cursor and limit. Cursors are opaque and must be passed back unchanged.
Example: list the first 25 in-transit deliveries:
next_cursor.