Errors and limits

Errors come as JSON with a stable code and an English message. Rate limit: 120 requests per minute per key, then 429 with retry-after.

The technical reference below is in English, exactly as the names and fields appear in the API and in Claude.

{"error": {"code": "apikey_scope_fehlt", "message": "This API key does not have the scope 'contacts:write'."}}
BadRequestInvalid request (bad_request, idempotency_key_invalid, ...)
UnauthorizedMissing or invalid API key (unauthorized)
ForbiddenThe key lacks the required scope (forbidden, key apikey_scope_fehlt), the account is blocked (account_blocked), or a plan limit is reached (limit_reached).
NotFoundNot found (or belongs to another account)
ConflictThe current state does not allow the action (e.g. webhook_limit_reached, idempotency_in_progress)
UnprocessableEntityIdempotency key reused with a different request body or path (idempotency_key_mismatch)
RateLimitedToo many requests for this key (120 per minute), code rate_limited
ServiceUnavailableThe account status could not be checked (status_unavailable). The API deliberately does NOT let the request through (fail-closed); retry in a minute.
FieldTypeRequiredDescription
errorobjectyes
error.codestringyesStable machine code, e.g. not_found, rate_limited.
error.keystringyesFiner stable identifier for programmatic handling.
error.messagestringyesHuman-readable English text. Do not branch on it.

Questions?

Email us at support@smartchat.marketing