Skip to main content
The Zippendo API lets your own systems, such as a webshop, ERP or warehouse system, create shipments, read orders and manage your shipping setup without anyone opening the app. The API reference sidebar lists every public endpoint, and the playground lets you send requests with your API token.

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:
Almost every path starts with /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.
Prefer to let an AI agent work in Zippendo? Connect Claude, Cursor, ChatGPT and more to the MCP server: no token to paste, just sign in with OAuth.

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.
The whole filter has to be valid for that list, otherwise the request fails with 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.

Try it

Pick an endpoint in the sidebar, open Try it, and paste your Bearer token. Start with the health check in the System group, or the get-organization call in the Orgs group, to confirm you can reach the API.