Error codes
Molar APIs return standard HTTP status codes with a JSON body of the shape:
{ "error": "<short code>", "message": "<human explanation>" }
Authentication & authorization
| Status | error | Meaning | What to do |
|---|---|---|---|
| 401 | Unauthorized | Missing or invalid session / token. | Sign in, or supply a valid PAT/service token. |
| 403 | Forbidden | Authenticated but not a member of the org, or insufficient role. | Check org membership / RBAC role (owner/admin/member). |
| 400 | x-org-id header required | Org-scoped call without an org context. | Send the x-org-id header (or use the dashboard, which resolves it). |
Rate limits & quotas
| Status | error | Meaning | What to do |
|---|---|---|---|
| 429 | Too Many Requests | Per-IP or per-tenant request rate exceeded. | Back off; honor the Retry-After / RateLimit-* headers. |
| 429 | Quota Exceeded | A per-org usage cap was hit (runs_per_day, crawl_pages_per_day, concurrent_clones). | Wait for the daily reset (00:00 UTC) or contact support. |
| 402 | org LLM spend cap exceeded | Hosted-model spend cap reached. | Switch to BYOK or raise the cap. |
Validation
| Status | error | Meaning | What to do |
|---|---|---|---|
| 422 | (validation object) | Request body failed schema validation. | Fix the fields named in the error object. |
Service availability
| Status | error | Meaning | What to do |
|---|---|---|---|
| 503 | unavailable | A readiness probe found a required dependency down. | Transient — retry. |
Quota response example
{
"error": "Quota Exceeded",
"resource": "runs_per_day",
"limit": 200,
"used": 200,
"message": "Your organization reached its daily test-run limit (200). Quota resets at 00:00 UTC."
}
Still stuck? See Support.