Docs / REST API
GET /v1/search
Hybrid search (FTS + vector, RRF) across jurisdictions and languages
Endpoint
GET https://api.lexatlas.creatora.app/v1/search
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| q | query | yes | string | query in any corpus language |
| jur | query | no | string | jurisdiction filter (csv), e.g. ru,kz |
| k | query | no | integer | top-k (default 8); `limit` is accepted as a synonym |
| limit | query | no | integer | synonym of k |
Example
curl -H "X-API-Key: lxa_YOUR_KEY" \
"https://api.lexatlas.creatora.app/v1/search?q=<q>"
Responses and error codes
| Status | Meaning | Schema |
|---|---|---|
| 200 | ranked hits with cite ids, snippets, licence and signal (vector/FTS); `jur_filter` (present only when `jur` was given) states whether we KNOW the named jurisdictions: {requested, unknown[], known, rows, note}. unknown is a LIST, so a mixed `ru,zz` names which one we lack. Empty results with known=true is an honest zero about the LAW; known=false is a fact about OUR coverage | object |
| 400 | bad request — see error_code (missing_parameter, invalid_parameter, invalid_body, invalid_cursor, empty_batch, batch_too_large, unsupported) | Error |
| 401 | missing/invalid API key (when auth is enabled) — error_code=unauthorized | Error |
| 413 | body too large — error_code=payload_too_large | Error |
| 429 | rate limit exceeded (per-key, per-minute window) — error_code=rate_limited | Error |
Errors use one envelope everywhere: error, error_code, hint, http_status. The full list of codes is served by GET /v1/errors.