Skip to main content
Every error is JSON with an error code you can branch on. Many also carry a message written for a person, which is the same wording the dashboard shows, so you can display it as is.
A refused request changes nothing. When a call does several things at once (for example moving a sale and changing its status), either all of it is applied or none of it is.

Status codes

402: plan locked

When your tracked revenue goes past your plan’s allowance, dashboard and management access lock until you choose a plan that covers it. API calls that manage your program (writes, plus the commission quote and the move preview) then return:
Your tracking keeps working. Links still resolve, clicks still attribute, /v1/track still records sales and commissions still accrue. GET reads keep working too. Choosing a plan that covers your usage restores access.

409: conflicts

A 409 means the request was understood but the record’s current state doesn’t allow it. Nothing changed. The common ones: Refusals that come from the same rules as the dashboard carry message (what went wrong, in plain words) and often a hint (where to do it instead).

422: the affiliate can’t take it

Moving a referral or a sale to another affiliate returns 422 affiliate_not_eligible when the new affiliate can’t take it: they’re suspended, banned, archived or left the program, they’re a test affiliate and the customer is live (or the other way round), or they’re the customer themself.

Limits

When you hit one of these you get 429 with error: "rate_limited". Wait and try again. The quote limits return a message saying which limit you hit and when to try again. In the dashboard, resending a failed webhook delivery is limited to once every 10 minutes per delivery.

MCP connector tokens

A token minted for an AI assistant through the MCP server can read your program and change its configuration, but it can never move money or change who is owed it, even with the write scope. These calls refuse it with 403 insufficient_scope and need: "financial":
  • POST /v1/track/click, /lead, /sale and /refund
  • PATCH /v1/commissions/{id}
  • PATCH /v1/conversions/{id}
  • POST /v1/referrals/move
The connector can still preview a referral move. To apply it, use a REST API key from Settings → Developer & API, or the dashboard.