List Shipments
GET/api/pinnacle/instances/:instance/shipments
Paginated, filterable list of Pinnacle shipments. A shipment is created when an order reaches the configured shipped event (pickup completed, received at hub, or delivered) and is linked to the fulfillment recorded in SKU.io. Each row carries the order's status and delivery type, proof-of-delivery files, and links to the Pinnacle order, fulfillment, fulfillment order and sales order.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Every filter[<column>] parameter also accepts an operator suffix as filter[<column>.<operator>]=<value>; a bare filter[<column>]=<value> is treated as "is". List operators (is_one_of, is_not_one_of) take a comma-separated list; between takes two comma-separated bounds.
- Text columns support: contains, does_not_contain, is, is_not, is_one_of, is_not_one_of, starts_with, does_not_start_with, ends_with, does_not_end_with, is_empty, is_not_empty.
- Numeric columns support: is, is_not, is_one_of, is_not_one_of, greater_than, less_than, greater_than_or_equal, less_than_or_equal, between, is_empty, is_not_empty.
- Date-time columns support: is, is_not, before, after, on_or_before, on_or_after, between, today, yesterday, tomorrow, past_week, past_month, past_year, next_week, next_month, next_year, days_ago, days_from_now, past_days, next_days, is_empty, is_not_empty. Dates are Y-m-d in the account timezone.
Instead of individual filter[...] params you can send filter_groups: a base64-encoded JSON tree of AND/OR groups, e.g. {"conjunction":"and","children":[{"type":"condition","condition":{"column":"status","operator":"is_one_of","value":["picked_up","at_hub"]}}]}. The same columns and operators are available.
filter[search] matches id exactly and tracking_number and carrier partially.
Allowed sorts: id, pinnacle_order_id, sku_sales_order_fulfillment_id, tracking_number, carrier, shipped_event_code, shipped_at, delivered_at, created_at, updated_at. Default sort is -id.
per_page defaults to 10.
Authentication: requires a Bearer token (Personal Access Token).
Request
Responses
- 200
- 401
- 403
- 404
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not Found
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.