Errors

Every error answer has the same JSON body. error is a stable code you can branch on; message is for people and may change.

HTTP
HTTP/1.1 400 Bad Request

{
  "error": "validation_failed",
  "message": "Some fields are invalid",
  "fields": {
    "phone": "invalid",
    "custom_fields.budget_lakh": "Enter a number"
  },
  "request_id": "01a0f0c2-0000-7000-8000-000000000000"
}

fields names each invalid input (dotted paths such as english_test.overall or custom_fields.budget_lakh). Keep request_id: support can find the request with it.

Error codes

Error codes
StatusCodeWhat to do
400validation_failedFix the fields listed in fields.
400invalid_jsonThe body is not valid JSON.
400consent_requiredSend consent: true after the person agreed to be contacted.
400captcha_failedPublic keys: the captcha token was missing or rejected. Ask the visitor to try again.
401invalid_api_keyCheck the key. It may be revoked or expired.
402tenant_suspendedThe workspace's subscription is not active.
403insufficient_scopeGive the key the scope named in required, or use another key.
403origin_not_allowedAdd the website to the key's allowed origins.
403ip_not_allowedAdd the server's address to the key's IP list.
404not_foundThe record does not exist in this workspace.
409idempotency_conflictThis Idempotency-Key was used with a different body. Use a new key for a new request.
409idempotency_in_progressThe first request with this key is still running. Retry shortly.
429rate_limitedWait retry_after seconds, then retry.
429quota_exceededDo not retry. The lead is held and released when the quota allows.
500internal_errorSomething failed on our side. Retry later with the same Idempotency-Key.