Skip to main content

Dispatch Lane

Endpoints for dispatch lane.

All endpoints require a bearer token (oh_... API key or user JWT) and are served under https://api.orderly-hub.com. Use the Try it consoles to run a request against the Preview (test) server.

Packing-slip template documents

A custom template's document contains page, header, body, footer, and itemTable.

Text blocks interpolate supported fields with {{binding}}. Order custom fields use metadata.custom.<field>; SKU custom fields use item.custom.<field>.

Text block fields

FieldTypeDescription
typetextBlock type
x, ynumberPosition in points inside the header, body, or footer region
valuestringLiteral text containing zero or more supported {{binding}} tokens
sizenumberFont size in points
boldbooleanUse the bold font
alignleft | rightHorizontal alignment
newLinebooleanFor a right-aligned editor row, force a new PDF row instead of sharing the preceding left row
formatstringdate_short, date_medium, date_long, uppercase, or lowercase
conditionobjectOptional structured visibility rule

Blocks on the same y position share one visual row. Conditional blocks are removed before layout, so a hidden row leaves no empty vertical space. Long text is measured against the embedded PDF font and truncated with an ellipsis before it can overlap adjacent content or leave the printable area.

Date formatters recognize ISO dates, validate the calendar date, and render in en-US using UTC. Invalid dates remain unchanged.

Conditions

{
"binding": "metadata.custom.gift",
"operator": "equals",
"value": "true"
}

operator must be exists, not_exists, equals, or not_equals. Values are exact strings with a maximum length of 500 characters. Header, body, and footer conditions use order bindings. Item-column conditions use item bindings and are evaluated independently for each item cell.

Item table columns

FieldTypeDescription
bindingstringSupported item.* or item.custom.* value
labelstringCustomer-defined column header, 1–80 characters
widthnumberPreferred width in points; all selected columns are proportionally fitted to the printable page
alignleft | rightCell alignment
formatstringOptional supported formatter
conditionobjectOptional per-item cell visibility rule

Uploaded template images must be PNG or JPEG. The portal limits uploads to 5 MB.

Get the organization's dispatch lane plan capabilities and usage allowances

GET/api/v1/dispatch-lane/entitlements

Responses

200 Entitlements

Response fields:

FieldTypeDescription
planstring
capabilitiesobject
usageobject
{
"data": {
"plan": "string",
"capabilities": {
"dispatch_lane_access": true,
"live_rating": true,
"carrier_service_assignment": true,
"label_purchase": true,
"bulk_label_purchase": true,
"label_voiding": true,
"packing_slip_generation": true,
"packing_slip_custom_templates": true,
"managed_carrier_accounts": true,
"customer_carrier_accounts": true
},
"usage": {}
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
GET/api/v1/dispatch-lane/entitlements

Get the organization's dispatch lane plan capabilities and usage allowances

https://api-test.orderly-hub.com/api/v1/dispatch-lane/entitlements

List purchased/failed/voided labels for the organization

GET/api/v1/dispatch-lane/labels

Parameters

NameInRequiredTypeDescription
statusquerynostring
searchquerynostringMatches tracking number or carrier
limitquerynointeger

Responses

200 List of labels

Response fields:

FieldTypeDescription
idstring
order_idstring
tracking_numberstring
master_tracking_numberstring
carrierstring
servicestring
label_statusstring
label_urlstring
label_formatstring
customer_cost_centsinteger
currencystring
providerstring
label_batch_idstring
created_atstring
voided_atstring
{
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"tracking_number": "string",
"master_tracking_number": "string",
"carrier": "string",
"service": "string",
"label_status": "string",
"label_url": "string",
"label_format": "2026-07-23T12:00:00Z",
"customer_cost_cents": 0,
"currency": "USD",
"provider": "string",
"label_batch_id": "550e8400-e29b-41d4-a716-446655440000",
"created_at": "2026-07-23T12:00:00Z",
"voided_at": "2026-07-23T12:00:00Z"
}
]
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
GET/api/v1/dispatch-lane/labels

List purchased/failed/voided labels for the organization

https://api-test.orderly-hub.com/api/v1/dispatch-lane/labels

Buy labels and/or generate packing slips for many orders and merge into one print-ready PDF

POST/api/v1/dispatch-lane/labels/batches

Request body

FieldTypeDescription
order_idsarray
buy_labelsboolean
make_slipsboolean
collationcollated | separated
template_idstring
{
"order_ids": [
"string"
],
"buy_labels": true,
"make_slips": true,
"collation": "collated",
"template_id": "550e8400-e29b-41d4-a716-446655440000"
}

Responses

200 Slip-only batches run inline and return the completed result immediately

Response fields:

FieldTypeDescription
batch_idstring
succeededinteger
failedinteger
resultsarray
download_urlstring
page_countinteger
statusqueued | completed | completed_with_errors | failed
{
"data": {
"batch_id": "550e8400-e29b-41d4-a716-446655440000",
"succeeded": 0,
"failed": 0,
"results": [
{
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"label": {
"shipment_id": null,
"tracking_number": null,
"status": null
},
"slip": {
"document_id": null,
"pages": null
},
"error": "string"
}
],
"download_url": "string",
"page_count": 0,
"status": "queued"
}
}

201 Label-buying batches are queued asynchronously via QStash

Response fields:

FieldTypeDescription
batch_idstring
statusqueued | completed | completed_with_errors
download_urlstring
{
"data": {
"batch_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "queued",
"download_url": "string"
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

402 Insufficient balance to cover the batch

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/labels/batches

Buy labels and/or generate packing slips for many orders and merge into one print-ready PDF

https://api-test.orderly-hub.com/api/v1/dispatch-lane/labels/batches

Get label batch status for polling

GET/api/v1/dispatch-lane/labels/batches/{id}

Parameters

NameInRequiredTypeDescription
idpathyesstring

Responses

200 Batch status

Response fields:

FieldTypeDescription
idstring
statusqueued | processing | completed | completed_with_errors | failed
total_countinteger
succeeded_countinteger
failed_countinteger
page_countinteger
resultsarray
created_atstring
completed_atstring
download_urlstring
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "queued",
"total_count": 0,
"succeeded_count": 0,
"failed_count": 0,
"page_count": 0,
"results": [
{
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"label": {
"shipment_id": null,
"tracking_number": null,
"status": null
},
"slip": {
"document_id": null,
"pages": null
},
"error": "string"
}
],
"created_at": "2026-07-23T12:00:00Z",
"completed_at": "2026-07-23T12:00:00Z",
"download_url": "string"
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Batch not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
GET/api/v1/dispatch-lane/labels/batches/{id}

Get label batch status for polling

https://api-test.orderly-hub.com/api/v1/dispatch-lane/labels/batches/

Manually mark a shipment as delivered

POST/api/v1/dispatch-lane/labels/{shipmentId}/mark-delivered

Parameters

NameInRequiredTypeDescription
shipmentIdpathyesstring

Responses

200 Shipment marked delivered

POST/api/v1/dispatch-lane/labels/{shipmentId}/mark-delivered

Manually mark a shipment as delivered

https://api-test.orderly-hub.com/api/v1/dispatch-lane/labels//mark-delivered

Manually mark a purchased label's shipment as physically shipped

POST/api/v1/dispatch-lane/labels/{shipmentId}/mark-shipped

Parameters

NameInRequiredTypeDescription
shipmentIdpathyesstring

Responses

200 Shipment marked shipped

Response fields:

FieldTypeDescription
shipment_idstring
changedboolean
lifecycle_statestring
{
"data": {
"shipment_id": "550e8400-e29b-41d4-a716-446655440000",
"changed": true,
"lifecycle_state": "string"
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Shipment not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/labels/{shipmentId}/mark-shipped

Manually mark a purchased label's shipment as physically shipped

https://api-test.orderly-hub.com/api/v1/dispatch-lane/labels//mark-shipped

Void a purchased label and credit the ledger when confirmed

POST/api/v1/dispatch-lane/labels/{shipmentId}/void

Parameters

NameInRequiredTypeDescription
shipmentIdpathyesstring

Responses

200 Void requested or completed

Response fields:

FieldTypeDescription
shipment_idstring
label_statusstring
shipment_statusstring
lifecycle_statestring
creditedboolean
{
"data": {
"shipment_id": "550e8400-e29b-41d4-a716-446655440000",
"label_status": "string",
"shipment_status": "string",
"lifecycle_state": "string",
"credited": true
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Shipment not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

409 Label cannot be voided in its current state

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

422 Void rejected by the carrier or provider

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/labels/{shipmentId}/void

Void a purchased label and credit the ledger when confirmed

https://api-test.orderly-hub.com/api/v1/dispatch-lane/labels//void

List eligible orders in the dispatch lane with reason codes and current assignments

GET/api/v1/dispatch-lane/orders

Parameters

NameInRequiredTypeDescription
order_idsquerynostringComma-separated list of order UUIDs to restrict the feed to

Responses

200 Eligibility feed

Response fields:

FieldTypeDescription
order_idstring
order_numberstring
customer_namestring
destinationstring
item_countinteger
skusarray
fulfillment_locationobject
label_statusstring
packing_slip_readyboolean
eligibleboolean
reasonsarray
assigned_serviceobject
{
"data": [
{
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"order_number": "string",
"customer_name": "string",
"destination": "string",
"item_count": 0,
"skus": [
"string"
],
"fulfillment_location": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Jane Doe"
},
"label_status": "string",
"packing_slip_ready": true,
"eligible": true,
"reasons": [
"already_dispatched"
],
"assigned_service": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"carrier": "string",
"service": "string",
"quoted_customer_cents": 0,
"currency": "USD",
"rate_expires_at": "2026-07-23T12:00:00Z",
"status": "pending"
}
}
]
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
GET/api/v1/dispatch-lane/orders

List eligible orders in the dispatch lane with reason codes and current assignments

https://api-test.orderly-hub.com/api/v1/dispatch-lane/orders

Assign an explicit chosen quote to each order in a batch

POST/api/v1/dispatch-lane/orders/assign-bulk

Request body

FieldTypeDescription
assignmentsarray
{
"assignments": [
{
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"parcel": {
"weight_oz": 0,
"length_in": 0,
"width_in": 0,
"height_in": 0
},
"carrier_account_id": "550e8400-e29b-41d4-a716-446655440000",
"carrier": "string",
"service": "string",
"quoted_customer_cents": 0,
"currency": "USD",
"provider": "easypost",
"rate_source": "carrier_live"
}
]
}

Responses

200 Bulk assignment result

Response fields:

FieldTypeDescription
assignedinteger
failedinteger
resultsarray
{
"data": {
"assigned": 0,
"failed": 0,
"results": [
{
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"ok": true,
"error": "string"
}
]
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/orders/assign-bulk

Assign an explicit chosen quote to each order in a batch

https://api-test.orderly-hub.com/api/v1/dispatch-lane/orders/assign-bulk

Bulk-assign (or clear) a fulfillment location for orders

POST/api/v1/dispatch-lane/orders/location

Request body

FieldTypeDescription
order_idsarray
location_idstring
{
"order_ids": [
"string"
],
"location_id": "550e8400-e29b-41d4-a716-446655440000"
}

Responses

200 Number of orders updated

Response fields:

FieldTypeDescription
updatedinteger
{
"data": {
"updated": "2026-07-23T12:00:00Z"
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Location not found or inactive

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/orders/location

Bulk-assign (or clear) a fulfillment location for orders

https://api-test.orderly-hub.com/api/v1/dispatch-lane/orders/location

Rate and assign a service to each order per a chosen bulk strategy (cheapest, fastest, preferred carrier/service)

POST/api/v1/dispatch-lane/orders/rate-assign-bulk

Request body

FieldTypeDescription
order_idsarray
fallback_parcelobject
strategycheapest | fastest | preferred_carrier | preferred_service
preferred_carrierstring
preferred_servicestring
max_centsinteger
{
"order_ids": [
"string"
],
"fallback_parcel": {
"weight_oz": 0,
"length_in": 0,
"width_in": 0,
"height_in": 0
},
"strategy": "cheapest",
"preferred_carrier": "string",
"preferred_service": "string",
"max_cents": 0
}

Responses

200 Bulk rate-and-assign result

Response fields:

FieldTypeDescription
assignedinteger
failedinteger
resultsarray
{
"data": {
"assigned": 0,
"failed": 0,
"results": [
{
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"service": "string",
"amount_cents": 0,
"weight_oz": 0,
"weight_source": "items",
"error": "string"
}
]
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/orders/rate-assign-bulk

Rate and assign a service to each order per a chosen bulk strategy (cheapest, fastest, preferred carrier/service)

https://api-test.orderly-hub.com/api/v1/dispatch-lane/orders/rate-assign-bulk

Rate multiple orders against all carrier accounts and return the full quote set per order

POST/api/v1/dispatch-lane/orders/rate-bulk

Request body

FieldTypeDescription
order_idsarray
fallback_parcelobject
{
"order_ids": [
"string"
],
"fallback_parcel": {
"weight_oz": 0,
"length_in": 0,
"width_in": 0,
"height_in": 0
}
}

Responses

200 Per-order quote sets

Response fields:

FieldTypeDescription
resultsarray
{
"data": {
"results": [
{
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"weight_oz": 0,
"weight_source": "items",
"error": "string",
"quotes": []
}
]
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/orders/rate-bulk

Rate multiple orders against all carrier accounts and return the full quote set per order

https://api-test.orderly-hub.com/api/v1/dispatch-lane/orders/rate-bulk

Purchase a shipping label from the order's assigned carrier service

POST/api/v1/dispatch-lane/orders/{orderId}/labels

Parameters

NameInRequiredTypeDescription
orderIdpathyesstring

Request body

FieldTypeDescription
parcel_indexinteger
attemptinteger
{
"parcel_index": 0,
"attempt": 0
}

Responses

200 Label purchased (or idempotent replay)

Response fields:

FieldTypeDescription
shipment_idstring
order_idstring
tracking_numberstring
carrierstring
servicestring
label_urlstring
label_formatstring
customer_cost_centsinteger
currencystring
label_statusstring
idempotent_replayboolean
{
"data": {
"shipment_id": "550e8400-e29b-41d4-a716-446655440000",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"tracking_number": "string",
"carrier": "string",
"service": "string",
"label_url": "string",
"label_format": "2026-07-23T12:00:00Z",
"customer_cost_cents": 0,
"currency": "USD",
"label_status": "string",
"idempotent_replay": true
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Order not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/orders/{orderId}/labels

Purchase a shipping label from the order's assigned carrier service

https://api-test.orderly-hub.com/api/v1/dispatch-lane/orders//labels

Generate and store a packing slip for an order, returning a signed download URL

POST/api/v1/dispatch-lane/orders/{orderId}/packing-slips

Parameters

NameInRequiredTypeDescription
orderIdpathyesstring

Request body

FieldTypeDescription
template_idstring
{
"template_id": "550e8400-e29b-41d4-a716-446655440000"
}

Responses

201 Packing slip generated

Response fields:

FieldTypeDescription
document_idstring
file_pathstring
pagesinteger
download_urlstring
{
"data": {
"document_id": "550e8400-e29b-41d4-a716-446655440000",
"file_path": "string",
"pages": 0,
"download_url": "string"
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Order or template not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

409 Template is not published

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/orders/{orderId}/packing-slips

Generate and store a packing slip for an order, returning a signed download URL

https://api-test.orderly-hub.com/api/v1/dispatch-lane/orders//packing-slips

Get live shipping quotes for an order's parcel from every eligible carrier account

POST/api/v1/dispatch-lane/orders/{orderId}/rate

Parameters

NameInRequiredTypeDescription
orderIdpathyesstring

Request body

FieldTypeDescription
parcelobject
{
"parcel": {
"weight_oz": 0,
"length_in": 0,
"width_in": 0,
"height_in": 0
}
}

Responses

200 Quotes for the order

Response fields:

FieldTypeDescription
origin_locationstring
quotesarray
{
"data": {
"origin_location": "string",
"quotes": [
{
"carrier_account_id": "550e8400-e29b-41d4-a716-446655440000",
"account_name": "string",
"owner_type": "string",
"provider": "easypost",
"rate_source": "carrier_live",
"carrier": "string",
"service": "string",
"service_name": "string",
"amount_cents": 0,
"currency": "USD",
"usd_amount_cents": 0,
"fx_rate": 0,
"transit_days": 0,
"provider_rate_id": "550e8400-e29b-41d4-a716-446655440000"
}
]
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Order not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/orders/{orderId}/rate

Get live shipping quotes for an order's parcel from every eligible carrier account

https://api-test.orderly-hub.com/api/v1/dispatch-lane/orders//rate

Rate an order and assign the cheapest (or a specific) quote in one call

POST/api/v1/dispatch-lane/orders/{orderId}/rate-and-assign

Parameters

NameInRequiredTypeDescription
orderIdpathyesstring

Request body

FieldTypeDescription
parcelobject
strategycheapest | specific
carrier_account_idstring
servicestring
{
"parcel": {
"weight_oz": 0,
"length_in": 0,
"width_in": 0,
"height_in": 0
},
"strategy": "cheapest",
"carrier_account_id": "550e8400-e29b-41d4-a716-446655440000",
"service": "string"
}

Responses

200 Assignment created from the chosen quote

Response fields:

FieldTypeDescription
assignmentobjectThe persisted order_shipping_services row
chosenobject
{
"data": {
"assignment": {},
"chosen": {
"carrier_account_id": "550e8400-e29b-41d4-a716-446655440000",
"account_name": "string",
"owner_type": "string",
"provider": "easypost",
"rate_source": "carrier_live",
"carrier": "string",
"service": "string",
"service_name": "string",
"amount_cents": 0,
"currency": "USD",
"usd_amount_cents": 0,
"fx_rate": 0,
"transit_days": 0,
"provider_rate_id": "550e8400-e29b-41d4-a716-446655440000"
}
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Order not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

409 Selected service is no longer available

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

422 No carrier returned a rate for this order

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/orders/{orderId}/rate-and-assign

Rate an order and assign the cheapest (or a specific) quote in one call

https://api-test.orderly-hub.com/api/v1/dispatch-lane/orders//rate-and-assign

Assign a carrier service to an order's parcel

PUT/api/v1/dispatch-lane/orders/{orderId}/shipping-service

Parameters

NameInRequiredTypeDescription
orderIdpathyesstring

Request body

FieldTypeDescription
parcel_indexinteger
parcelobject
carrier_account_idstring
carrierstring
servicestring
quoted_customer_centsinteger
currencystring
providereasypost | fedex_direct
rate_sourcecarrier_live | orderly_rate_card
provider_rate_idstring
calculation_snapshotobject
rate_expires_atstring
{
"parcel_index": 0,
"parcel": {
"weight_oz": 0,
"length_in": 0,
"width_in": 0,
"height_in": 0
},
"carrier_account_id": "550e8400-e29b-41d4-a716-446655440000",
"carrier": "string",
"service": "string",
"quoted_customer_cents": 0,
"currency": "USD",
"provider": "easypost",
"rate_source": "carrier_live",
"provider_rate_id": "550e8400-e29b-41d4-a716-446655440000",
"calculation_snapshot": {},
"rate_expires_at": "2026-07-23T12:00:00Z"
}

Responses

200 Assignment created

Response fields:

FieldTypeDescription
idstring
order_idstring
parcel_indexinteger
carrierstring
servicestring
statusstring
quoted_customer_centsinteger
currencystring
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"parcel_index": 0,
"carrier": "string",
"service": "string",
"status": "pending",
"quoted_customer_cents": 0,
"currency": "USD"
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Order not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
PUT/api/v1/dispatch-lane/orders/{orderId}/shipping-service

Assign a carrier service to an order's parcel

https://api-test.orderly-hub.com/api/v1/dispatch-lane/orders//shipping-service

Clear an order's assigned carrier service for a parcel

DELETE/api/v1/dispatch-lane/orders/{orderId}/shipping-service

Parameters

NameInRequiredTypeDescription
orderIdpathyesstring
parcel_indexquerynointeger

Responses

200 Assignment cleared

Response fields:

FieldTypeDescription
successboolean
{
"data": {
"success": true
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
DELETE/api/v1/dispatch-lane/orders/{orderId}/shipping-service

Clear an order's assigned carrier service for a parcel

https://api-test.orderly-hub.com/api/v1/dispatch-lane/orders//shipping-service

List uploaded packing-slip images

GET/api/v1/dispatch-lane/packing-slip-assets

Responses

200 Image assets with temporary preview URLs

PackingSlipAsset[] object:

FieldTypeDescription
idstring
namestring
mime_typeimage/png | image/jpeg
size_bytesinteger
preview_urlstring
created_atstring
{
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Jane Doe",
"mime_type": "image/png",
"size_bytes": 0,
"preview_url": "string",
"created_at": "2026-07-23T12:00:00Z"
}
]
}
GET/api/v1/dispatch-lane/packing-slip-assets

List uploaded packing-slip images

https://api-test.orderly-hub.com/api/v1/dispatch-lane/packing-slip-assets

Upload a PNG or JPEG for packing-slip templates

POST/api/v1/dispatch-lane/packing-slip-assets

Request body

FieldTypeDescription
filestringPNG or JPEG image, up to 5 MB. File content is verified.

Responses

201 Image uploaded

PackingSlipAsset object:

FieldTypeDescription
idstring
namestring
mime_typeimage/png | image/jpeg
size_bytesinteger
preview_urlstring
created_atstring
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Jane Doe",
"mime_type": "image/png",
"size_bytes": 0,
"preview_url": "string",
"created_at": "2026-07-23T12:00:00Z"
}
}

400 Missing, invalid, or oversized image

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

500 Upload failed

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/packing-slip-assets

Upload a PNG or JPEG for packing-slip templates

https://api-test.orderly-hub.com/api/v1/dispatch-lane/packing-slip-assets

List packing slip templates available to the organization (including the built-in Orderly default)

GET/api/v1/dispatch-lane/packing-slip-templates

Responses

200 List of templates

Response fields:

FieldTypeDescription
idstring
organization_idstring
namestring
descriptionstring
statusdraft | published
versioninteger
is_defaultboolean
updated_atstring
{
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"organization_id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Jane Doe",
"description": "string",
"status": "draft",
"version": 0,
"is_default": true,
"updated_at": "2026-07-23T12:00:00Z"
}
]
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
GET/api/v1/dispatch-lane/packing-slip-templates

List packing slip templates available to the organization (including the built-in Orderly default)

https://api-test.orderly-hub.com/api/v1/dispatch-lane/packing-slip-templates

Create a packing slip template

POST/api/v1/dispatch-lane/packing-slip-templates

Request body

FieldTypeDescription
namestring
descriptionstring
documentobjectJSON template document (page, header, footer, body, itemTable)
{
"name": "Jane Doe",
"description": "string",
"document": {}
}

Responses

201 Template created as a draft

Response fields:

FieldTypeDescription
idstring
namestring
statusdraft | published
versioninteger
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Jane Doe",
"status": "draft",
"version": 0
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

422 Template validation failed

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/packing-slip-templates

Create a packing slip template

https://api-test.orderly-hub.com/api/v1/dispatch-lane/packing-slip-templates

List packing-slip variables and SKU grouping fields

GET/api/v1/dispatch-lane/packing-slip-templates/bindings

Pass an order UUID or order number to include its metadata.custom and lineItems[].properties fields.

Parameters

NameInRequiredTypeDescription
order_idquerynostringTest order UUID. Do not combine with order_number.
order_numberquerynostringTest order number. The newest exact match is used. Do not combine with order_id.

Responses

200 Available order, line-item, and grouping bindings

Response fields:

FieldTypeDescription
orderPackingSlipBinding[]
itemsPackingSlipBinding[]
groupByPackingSlipBinding[]
{
"data": {
"order": [
{
"binding": "string",
"label": "string",
"section": "string",
"groupable": true,
"dynamic": true
}
],
"items": [
{
"binding": "string",
"label": "string",
"section": "string",
"groupable": true,
"dynamic": true
}
],
"groupBy": [
{
"binding": "string",
"label": "string",
"section": "string",
"groupable": true,
"dynamic": true
}
]
}
}

400 Invalid order reference

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Order not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
GET/api/v1/dispatch-lane/packing-slip-templates/bindings

List packing-slip variables and SKU grouping fields

https://api-test.orderly-hub.com/api/v1/dispatch-lane/packing-slip-templates/bindings

Preview a template using an order UUID or order number

POST/api/v1/dispatch-lane/packing-slip-templates/preview

Provide exactly one of order_id or order_number. Uploaded images are referenced by image-block assetId.

Request body

FieldTypeDescription
documentobject
order_idstring
order_numberstring
{
"document": {},
"order_number": "Testing-Orders-6"
}

Responses

200 Rendered PDF preview

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Order not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

422 Template validation failed

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/packing-slip-templates/preview

Preview a template using an order UUID or order number

https://api-test.orderly-hub.com/api/v1/dispatch-lane/packing-slip-templates/preview

Update a packing slip template (reverts it to draft status)

PUT/api/v1/dispatch-lane/packing-slip-templates/{id}

Parameters

NameInRequiredTypeDescription
idpathyesstring

Request body

FieldTypeDescription
namestring
descriptionstring
documentobject
{
"name": "Jane Doe",
"description": "string",
"document": {}
}

Responses

200 Template updated

Response fields:

FieldTypeDescription
idstring
namestring
statusdraft | published
versioninteger
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Jane Doe",
"status": "draft",
"version": 0
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

422 Template validation failed

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
PUT/api/v1/dispatch-lane/packing-slip-templates/{id}

Update a packing slip template (reverts it to draft status)

https://api-test.orderly-hub.com/api/v1/dispatch-lane/packing-slip-templates/

Publish a packing slip template, snapshotting a new version

POST/api/v1/dispatch-lane/packing-slip-templates/{id}/publish

Parameters

NameInRequiredTypeDescription
idpathyesstring

Responses

200 Template published

Response fields:

FieldTypeDescription
idstring
statuspublished
versioninteger
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "published",
"version": 0
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Template not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

422 Fix validation errors before publishing

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/packing-slip-templates/{id}/publish

Publish a packing slip template, snapshotting a new version

https://api-test.orderly-hub.com/api/v1/dispatch-lane/packing-slip-templates//publish

Re-download a previously generated packing slip via a fresh signed URL

GET/api/v1/dispatch-lane/packing-slips/{documentId}

Parameters

NameInRequiredTypeDescription
documentIdpathyesstring

Responses

200 Packing slip document

Response fields:

FieldTypeDescription
idstring
order_idstring
file_pathstring
page_countinteger
template_idstring
template_versioninteger
created_atstring
download_urlstring
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"file_path": "string",
"page_count": 0,
"template_id": "550e8400-e29b-41d4-a716-446655440000",
"template_version": 0,
"created_at": "2026-07-23T12:00:00Z",
"download_url": "string"
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Document not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
GET/api/v1/dispatch-lane/packing-slips/{documentId}

Re-download a previously generated packing slip via a fresh signed URL

https://api-test.orderly-hub.com/api/v1/dispatch-lane/packing-slips/

Get customer-facing rates for a platform-managed carrier account priced from the Orderly rate card

POST/api/v1/dispatch-lane/rate-card-quotes

Request body

FieldTypeDescription
carrier_account_idstring
origin_zipstring
dest_zipstring
servicestring
weight_oznumber
length_innumber
width_innumber
height_innumber
residentialboolean
{
"carrier_account_id": "550e8400-e29b-41d4-a716-446655440000",
"origin_zip": "string",
"dest_zip": "string",
"service": "string",
"weight_oz": 0,
"length_in": 0,
"width_in": 0,
"height_in": 0,
"residential": true
}

Responses

200 Rate card quotes

Response fields:

FieldTypeDescription
rate_sourceorderly_rate_card
rate_card_idstring
rate_card_versioninteger
carrierstring
servicestring
zonestring
actual_weight_oznumber
dim_weight_oznumber
billable_weight_oznumber
base_charge_centsinteger
surchargesobject
customer_charge_centsinteger
currencystring
expires_atstring
{
"data": [
{
"rate_source": "orderly_rate_card",
"rate_card_id": "550e8400-e29b-41d4-a716-446655440000",
"rate_card_version": 0,
"carrier": "string",
"service": "string",
"zone": "string",
"actual_weight_oz": 0,
"dim_weight_oz": 0,
"billable_weight_oz": 0,
"base_charge_cents": 0,
"surcharges": {},
"customer_charge_cents": 0,
"currency": "USD",
"expires_at": "2026-07-23T12:00:00Z"
}
]
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

403 Carrier account unavailable to this organization

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
POST/api/v1/dispatch-lane/rate-card-quotes

Get customer-facing rates for a platform-managed carrier account priced from the Orderly rate card

https://api-test.orderly-hub.com/api/v1/dispatch-lane/rate-card-quotes

Get org dispatch defaults (collation, default packing-slip template, label/slip page size)

GET/api/v1/dispatch-lane/settings

Responses

200 Dispatch settings

Response fields:

FieldTypeDescription
collationcollated | separated
default_template_idstring
auto_generate_slipsboolean
label_size4x6 | letter
packing_slip_size4x6 | letter
{
"data": {
"collation": "collated",
"default_template_id": "550e8400-e29b-41d4-a716-446655440000",
"auto_generate_slips": true,
"label_size": "4x6",
"packing_slip_size": "4x6"
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
GET/api/v1/dispatch-lane/settings

Get org dispatch defaults (collation, default packing-slip template, label/slip page size)

https://api-test.orderly-hub.com/api/v1/dispatch-lane/settings

Update org dispatch defaults

PUT/api/v1/dispatch-lane/settings

Request body

FieldTypeDescription
collationcollated | separated
default_template_idstring
auto_generate_slipsboolean
label_size4x6 | letter
packing_slip_size4x6 | letter
{
"collation": "collated",
"default_template_id": "550e8400-e29b-41d4-a716-446655440000",
"auto_generate_slips": true,
"label_size": "4x6",
"packing_slip_size": "4x6"
}

Responses

200 Updated dispatch settings

Response fields:

FieldTypeDescription
collationcollated | separated
default_template_idstring
auto_generate_slipsboolean
label_size4x6 | letter
packing_slip_size4x6 | letter
{
"data": {
"collation": "collated",
"default_template_id": "550e8400-e29b-41d4-a716-446655440000",
"auto_generate_slips": true,
"label_size": "4x6",
"packing_slip_size": "4x6"
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
PUT/api/v1/dispatch-lane/settings

Update org dispatch defaults

https://api-test.orderly-hub.com/api/v1/dispatch-lane/settings

Get operational summary cards for the dispatch lane home page

GET/api/v1/dispatch-lane/summary

Responses

200 Lane summary

Response fields:

FieldTypeDescription
orders_ready_to_rateinteger
orders_with_assigned_servicesinteger
orders_ready_for_labelsinteger
labels_created_todayinteger
failed_labels_todayinteger
{
"data": {
"orders_ready_to_rate": 0,
"orders_with_assigned_services": 0,
"orders_ready_for_labels": 0,
"labels_created_today": 0,
"failed_labels_today": 0
}
}

400 Bad request

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

401 Unauthorized

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}

404 Not found

Response fields:

FieldTypeDescription
errorobject
{
"error": {
"code": "string",
"message": "string"
}
}
GET/api/v1/dispatch-lane/summary

Get operational summary cards for the dispatch lane home page

https://api-test.orderly-hub.com/api/v1/dispatch-lane/summary