/api/v2/* and is designed for long-term stability.
The V1 Platform API (
/api/platform/*) and its Svix-based webhooks were
retired on July 13, 2026. All integrations must use V2.Conventions
- Naming: every JSON field is
snake_case. - Money: integer values in the smallest currency unit (e.g. cents). No human-formatted strings. Decimals vary by currency — see Amounts & Currencies.
- Phone: international, digits only, no leading
+. - Order number: the raw counter integer as a string. No prefix/suffix.
- Errors: structured
{ error: { type, code, message, param?, request_id } }. - Lists: cursor-paginated
{ object: "list", data, has_more, next_cursor }.
Authentication
All requests require an authenticated Merchant API token. Pass it in theAuthorization header using the Bearer scheme.
401 authentication_error— missing or invalid token.403 permission_error— reserved for future scope checks.
Idempotency
For safe retries onPOST requests, pass an Idempotency-Key header. Repeated requests with the same token, route, and key return the same response within 24 hours.
Pagination
List endpoints return:next_cursor value as the cursor query parameter on the next request. Default limit is 25; max 100.
Errors
All errors share one envelope:
Every response includes an
x-request-id header that matches error.request_id.
Resources
- Store —
/api/v2/me - Products —
/api/v2/products - Customers —
/api/v2/customers - Orders —
/api/v2/orders - Inventory items —
/api/v2/inventory_items