Base URL
Authentication
Create an API token under API Settings in the app (open the organization menu at the bottom of the sidebar, then Manage). Send it on every request:/orgs/{orgId}. An API token belongs to one organization; POST /api-tokens/verify with { "token": "zipp_YOUR_TOKEN" } returns its orgId.
See the REST API quickstart and API settings for setup and security.
Public resources
See Rate limits for the per-plan request budgets and what happens when you exceed them.
Only endpoints in this reference are part of the public API.
Filtering lists
GET /orgs/{orgId}/orders and GET /orgs/{orgId}/shipments accept a filter query parameter next to their simple filters (status, search, …). It is a JSON object, URL-encoded: a conjunction (and or or) over a list of conditions. Each condition is { id, field, operator, value }, or a group { id, conjunction, conditions } one level deep. id is any short string of your choice.
400 FILTER_INVALID and a message naming the problem. A filter is never applied partially.
Operators
Dates are whole days in UTC.
after and before include the named day, and a relative day is counted from the day the request is made. notIn, neq and notContains on a nullable field also return the rows where the field is empty.
Fields
Orders:status, orderChannel (channel id), orderChannelType (shopify, woocommerce, manual, custom), brand (brand id), shippingRule (rule id), country (ISO code), currency (ISO code), orderNumber, customerName, customerEmail, shippingMethod, notes, totalAmount, subtotalAmount, hasShipments, createdAt, updatedAt.
Shipments: status, trackingStatus, type (outbound, inbound), carrier (carrier id), carrierProduct (product id), orderChannel (channel id), brand (brand id), shippingRule (rule id), receiverCountry (ISO code), reference, trackingNumber, hasOrder, hasDocuments, createdAt, updatedAt.
Status values match the status and trackingStatus fields in the list responses. Nullable fields: brand, shippingRule, country, currency, customerName, customerEmail, shippingMethod, notes, totalAmount, subtotalAmount on orders; trackingStatus, orderChannel, brand, shippingRule on shipments.
Limits: 25 conditions, 100 values per in / notIn, 8000 characters for the encoded parameter.