Errors
Errors
Every error code Synq's APIs answer with, and its HTTP status.
Synq's management API and account API answer errors with a problem document (RFC 9457, application/problem+json):
type: the address of the code's page heretitle: a short English summary, which may changestatus: the HTTP statuscode: the stable code to branch on, which never changes or gets reused once it shipsdetail: what went wrong this time, when there is more to saymissing_permission: withinsufficient_permissions, the permission the credential lackserrors: withvalidation_failed, what was wrong with each field (pathandmessage)
| Code | Status | Title |
|---|---|---|
unauthorized | 401 | Unauthorized |
invalid_token | 401 | Invalid token |
token_expired | 401 | Token expired |
api_key_revoked | 401 | API key revoked |
forbidden | 403 | Forbidden |
insufficient_permissions | 403 | Insufficient permissions |
not_found | 404 | Not found |
validation_failed | 400 | Validation failed |
idempotency_key_conflict | 422 | Idempotency key conflict |
idempotency_key_in_flight | 409 | Idempotency key in flight |
conflict | 409 | Conflict |
org_slug_taken | 409 | Org slug taken |
issuer_slug_taken | 409 | Issuer slug taken |
issuer_slug_immutable | 422 | Issuer slug immutable |
plan_quota_exceeded | 403 | Plan quota exceeded |
plan_feature_unavailable | 403 | Plan feature unavailable |
org_creation_closed | 403 | Org creation closed |
email_unverified | 403 | Email unverified |
org_quota_exceeded | 403 | Org quota exceeded |
recipient_org_quota_exceeded | 403 | Recipient's org quota exceeded |
fresh_sign_in_required | 403 | Fresh sign-in required |
username_taken | 409 | Username taken |
last_sign_in_method | 409 | Last sign-in method |
passkey_exists | 409 | Passkey exists |
sign_in_method_unavailable | 409 | Sign-in method unavailable |
identity_limit_reached | 409 | Identity limit reached |
connection_rejected | 422 | Connection rejected |
own_app_required | 422 | Own app required |
token_gates_unavailable | 409 | Token gates unavailable |
passkey_rejected | 400 | Passkey rejected |
email_undeliverable | 422 | Email undeliverable |
email_domain_unavailable | 409 | Email domain unavailable |
email_domain_invalid | 422 | Email domain invalid |
email_domain_limit_reached | 409 | Email domain limit reached |
email_domain_in_use | 409 | Email domain in use |
plan_not_sold | 422 | Plan not sold |
subscription_exists | 409 | Subscription exists |
no_billing_account | 409 | No billing account |
no_subscription | 409 | No subscription |
payment_failed | 402 | Payment failed |
custom_domain_exists | 409 | Custom domain exists |
hostname_taken | 409 | Hostname taken |
invalid_hostname | 422 | Invalid hostname |
apex_not_supported | 422 | Apex domain not supported |
reserved_hostname | 422 | Reserved hostname |
hostname_denied | 422 | Hostname denied |
hostname_not_allowed_here | 422 | Hostname not allowed here |
payload_too_large | 413 | Payload too large |
unsupported_media_type | 415 | Unsupported media type |
upload_incomplete | 409 | Upload incomplete |
upload_expired | 410 | Upload expired |
file_rejected | 422 | File rejected |
upload_limit_reached | 409 | Upload limit reached |
api_keys_not_allowed | 403 | API keys not allowed |
api_key_limit_reached | 409 | API key limit reached |
rate_limited | 429 | Rate limited |
internal_error | 500 | Internal error |
service_unavailable | 503 | Service unavailable |