Docs / REST API
GET /v1/norm/{cite}
Article text + act + status + freshness + provenance; as_of=YYYY-MM-DD → point-in-time
Returns the article with the trust envelope. With as_of, the text is served from the amendment reconstruction (point-in-time, 'git for law') with the governing act attributed; without it — the current consolidated text.
Endpoint
GET https://api.lexatlas.creatora.app/v1/norm/{cite}
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| cite | path | yes | string | Normalized citation id: jur:code:article_no[:lang], e.g. ru:gk_rf_1:196 or kz:gk_kz_1:178. One scheme across all jurisdictions. |
| lang | query | no | string | ru|en trust-envelope language |
| as_of | query | no | string | YYYY-MM-DD — reconstruct the text as of this date |
| context | query | no | string | the request text (a claim, a question). When the cite names an act by number without a year and several acts carry that number (not_found_reason=ambiguous_number, e.g. ru:fz_244:5), the act whose meaning matches this text is chosen: resolved_reason=act_number_context, context_scores, same_number_acts. No clear winner — the candidates as before |
Example
curl -H "X-API-Key: lxa_YOUR_KEY" \
"https://api.lexatlas.creatora.app/v1/norm/ru:gk_rf_1:196"
Responses and error codes
| Status | Meaning | Schema |
|---|---|---|
| 200 | article + trust envelope (+ as_of_state, governing_act when as_of) | 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.