Skip to main content
The Partner API authenticates with a bearer key. Send it in the Authorization header on every request:

Keys

Keys are issued from the partner dashboard, not through public signup. The prefix tells you the mode and the reach of a key at a glance: The raw key is shown once, at creation, and never again. Store it before you leave the page. Any member of your workspace can create a test key. Live keys are created by the workspace owner.

Restricted keys

A key created with scopes is restricted to them. A scope is a resource and an action, resource:action. Write includes read. A restricted key that reaches for something outside its scopes is refused with insufficient_scope. A few endpoints need no scope at all and answer any valid key: GET /me, GET /products, and the price previews. Webhook endpoints are managed from the dashboard only, so no scope covers them.

Rotating a key

Rotate from the dashboard when a key may have leaked, or on a schedule. Rotation issues a new key and keeps the old one working for a grace window. The window is 24 hours by default and can be anything up to 7 days, so you can move your services over one at a time. Set it to zero to cut the old key off at once. After the window, the old key answers api_key_expired. Revoking a key stops it immediately, with no grace.

IP allowlist

A key can be limited to a set of IP addresses or CIDR ranges, up to 100. A request from anywhere else is refused with ip_address_not_allowed. An empty list means the key works from anywhere. The allowlist is set per key, by the workspace owner.

Confirming sensitive actions

Rotating or revoking a key, changing an allowlist, and rolling a webhook secret each ask for a six-digit code emailed to you. A code lasts ten minutes and five wrong attempts void it. Rotating or revoking a key always needs a fresh code. Changing an allowlist or rolling a webhook secret is lighter - one confirmation there covers further such actions for the next five minutes.

Errors

A missing, malformed, or revoked key is answered 401 with the standard error envelope (see Errors):
Branch on code, never on detail. The wording may change.

Example

Last modified on October 2, 2026