If you are recruiting / ops
Most hiring work happens in the dashboard. Common failure codes:For engineers
Public API errors use one envelope. Branch onerror.code — messages may change.
required_plan.
Do not expect the session/dashboard { "status", "code", "data" } shape on Public API routes.
Codes by HTTP status
400:VALIDATION_ERROR, MISSING_EMAIL, INVALID_INPUT, REMINDER_COOLDOWN, ASSESSMENT_NOT_ACTIVE, ALREADY_STARTED, ALREADY_COMPLETED, INVITATION_EXPIRED, WEBHOOK_REQUEST_FAILED, WEBHOOK_ENDPOINT_ERROR, NOT_VERIFIED
401: INVALID_API_KEY, EXPIRED_API_KEY
403: INSUFFICIENT_SCOPE, IP_NOT_ALLOWED, INVITE_QUOTA_EXCEEDED, PLAN_REQUIRED, ASSESSMENT_LIMIT_REACHED, LIMIT_REACHED
404: NOT_FOUND, CASE_NOT_FOUND
409: TASKS_LOCKED
429: RATE_LIMITED
500: INTERNAL_ERROR
Retry guidance
SDKs raise typed errors with the same codes.