factqlDocs
Get an API key
Guides

Limits and errors

What the free plan allows, what each status code means, and which ones are worth retrying.

Free plan

Monthly spend$10 cap. Calls return 402 at the cap; you're never invoiced. Resets on the 1st.
Requests30 a minute per key on POST /query.
Workspaces1
Team members3, including people you invite
Tenants1
File size50 MB per upload

Error format

Errors return JSON with a detail field: a sentence, or an object with error and message.

402
{
  "detail": {
    "error": "budget_exceeded",
    "message": "You've reached the free plan's $10 monthly spend cap. It resets on the 1st."
  }
}
Status codes
400The request can't be used as sent: an empty or unsupported file, or a bad X-End-User-Id.
401The key is missing, invalid or revoked. Don't retry; fix the key.
402A spend cap is reached. Don't retry until the cap resets or is raised.
403The key can't reach this tenant, or the sample key tried something it can't do.
404The workspace, file or session doesn't exist for this key.
409The change conflicts with the workspace, such as uploading a file to a database workspace.
413The file is larger than 50 MB.
422The body is invalid, or the workspace has no data yet.
429Too many requests. Retry after Retry-After seconds.
500Something failed on our side. Retry once; if it persists, send us the trace_id.
503The model service is briefly unavailable. Retry after Retry-After seconds.

Response fields

Responses can carry more fields than these docs list, such as model_used, attempts or agenton an answer, and new fields may be added. Read the ones you need and ignore the rest; don't fail on unknown fields.

Retrying

Retry only 429, 500 and 503. Wait the Retry-Afterseconds when the header is present, otherwise back off: 2, 4, then 8 seconds. A question FactQL can't answer returns 200 with "result": "error"; retrying it gets the same answer.