Partners API
Errors
Conventional status codes and a JSON envelope that always looks the same.
The error envelope
Every non-2xx response carries the same JSON shape: an errors array of human-readable strings. One request can fail for several reasons, so always treat it as a list:
{
"errors": ["Email is invalid"]
}Status codes
| Status | Meaning | What to do |
|---|---|---|
200 OK | The request succeeded. | Endpoints that create or update return the resulting resource. |
401 Unauthorized | Credentials are missing or invalid. | Check the Authorization header format and that your pair is active. |
403 Forbidden | Valid credentials, missing scope. | Generate a new key with the scope shown on the endpoint's reference page. |
404 Not Found | The resource does not exist on your store. | The envelope names the model, eg. { "errors": ["Customer not found"] }. |
422 Unprocessable | The request was understood but failed validation. | Fix the parameters named in the messages and retry. |
429 Too Many Requests | You went over the rate limit. | Back off and retry — see Rate limiting. |
5xx | Something went wrong on our side. | Safe to retry with backoff; reach out if it persists. |
Validation errors
422 messages are written to be actionable as-is. A few you may meet while integrating:
| Message | Cause |
|---|---|
Missing customer params | Create customer called without an email. |
Email is invalid | The email address failed format validation. |
Value is invalid | Add balance takes a value between 0.01 and 99.99. |
Unique source already used | The unique_identifier was already spent for that customer — the reward was granted before, so this duplicate is safe to ignore. |
Url is invalid | Create webhook needs a valid HTTPS URL. |