List Orders
GET/api/shipstation/integration-instances/:integration_instance/orders
Paginated list of locally cached ShipStation orders for an integration instance (default sort -id, default 10 per page). Eager loads the linked SKU fulfillment (+ sales order number and warehouse).
Any valid API token can call this endpoint — no specific scope required. Manage tokens.
Free-text search — filter[search] searches order_number, tracking_number, shipstation_order_id, customer_name. Prefers the Scout/Typesense index (fast substring search); falls back to column-aware DB LIKE. search_columns restricts which columns are searched; search_strict_columns switches listed columns to exact = match. A fully-strict search always runs on the DB.
Simple filters — filter[order_status], filter[carrier_code], filter[sku_fulfillment_id] (exact); filter[has_fulfillment], filter[has_tracking] (true/false); filter[date_from], filter[date_to] (order_date bounds).
Advanced operator filters — filter[<column>.<operator>]=value (bare filter[<column>]=value acts as implicit is):
- Text columns (
order_number,shipstation_order_id,order_key,tracking_number,customer_name,order_status,carrier_code,service_code): contains, does_not_contain, is, is_not, is_one_of, starts_with, does_not_start_with, ends_with, does_not_end_with, is_empty, is_not_empty - Numeric column (
id): is, is_not, is_one_of, greater_than, less_than, greater_than_or_equal, less_than_or_equal, between, is_empty, is_not_empty - Date column (
order_date) and datetime columns (ship_date,created_at,updated_at— timezone-aware): is, is_not, before, after, on_or_before, on_or_after, between, is_empty, is_not_empty, today, yesterday, tomorrow, past_week, past_month, past_year, next_week, next_month, next_year, days_ago, days_from_now, past_days, next_days
Grouped filters — filter_groups (base64 JSON on GET; plain JSON in a POST body) applies a nested AND/OR condition tree against the same registered columns, taking precedence over flat filters.
Sorting — sort accepts: id, order_number, customer_name, order_date, order_status, created_at, updated_at, ship_date, carrier_code, tracking_number (prefix - for descending; default -id).
Response fields of note — tracking_url is resolved server-side from carrier_code + tracking_number (null when the carrier is unknown); customer_name is searchable/filterable; sku_fulfillment is a cross-link object (route, sales order number, warehouse) or null; json_object is only included when include_json=1.
Authentication: Requires Bearer token.
Each order includes a shipments array of linked ShipStation shipment rows (tracking number/URL, carrier + service, cost, voided / return-label flags, ship date, and a link_route to the shipment detail page), sorted by ship date descending.
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 — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
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.