GET /deliveries. Add the path to the base URL:
Choose an endpoint
GET means read data. POST means calculate, create, or change something. DELETE means stop or remove 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.
Save a pickup location
If you ship from the same shop or warehouse every day, save it once and pass its ID instead of the fullpickup object. Quotes accept pickup_location_id too.
"pickup_location_id": "pkp_..." in place of pickup. On live keys, pickup locations are your business’s warehouses, so they also show in the HaulStow merchant app.
Create many deliveries at once
UsePOST /deliveries/bulk to send 1–100 deliveries in one request. Each item in deliveries is exactly the body you would send to POST /deliveries. See bulk deliveries for the full guide.
422 BULK_VALIDATION_FAILED. Otherwise each item is created on its own, so one failure does not stop the rest. The response is 201 when every item was created and 207 when at least one failed:
index is the item’s position in your deliveries array, starting at 0. One bulk call counts as one request against your rate limit.
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.