Lawify Legal Corpus API
2026-08-14OpenAPI 3.1Read access to Uzbek legislation as versioned, citable provisions.
Every result carries an immutable id and the dates it was in force, so a stored citation still resolves after the article is amended.
IMPORTANT: an empty `data` array may mean the law is not yet loaded into Lawify, not that no such provision exists. `meta.coverage_note` says so when it applies, and https://lawify.uz/coverage lists what is loaded. Do not present absence of a result to an end user as absence of law.
This API returns legal information, not legal advice.
Base URL
https://lawify.uz/api/v1/domainscorpus:readList the fields of law you can filter by
The vocabulary for the `domains` parameter, with labels in every locale the platform serves. Call this rather than hard-coding the list: `available` reflects YOUR key's scope, so an unexpected 403 on a search is explained here without a support ticket.
Responses
200The legal-domain taxonomy401Missing or invalid key
/searchsearch:readSearch published legislation
Exact article number, full-text and fuzzy matching, fused. Only published provisions are searchable.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
qrequired | query | string | |
language | query | string (uz-Latn | uz-Cyrl | ru) | |
as_of | query | string <date> | The law as it stood on this date. Defaults to today (Asia/Tashkent). |
limit | query | integer | |
domains | query | array | Restrict results to these fields of law (comma-separated). Omit to search everything the key can reach. At most 8 at once. An unknown value is a 400 rather than being ignored, and a value outside the key's own domain scope is a 403 rather than being silently dropped. GET /v1/domains lists them with labels and shows which ones this key may use. |
domains — accepted values
constitutional- The Constitution, citizenship, referendums and the structure of the state.
civil- Contracts, property, obligations, damages and inheritance.
criminal- Offences, penalties, criminal procedure and enforcement of sentences.
administrative- Administrative offences, fines, official reports and appeals against them.
labour- Employment contracts, pay, working time, leave, dismissal and workplace safety.
family- Marriage, divorce, child support, guardianship and family property.
housing- Renting, buying a home, utilities, condominium management and eviction.
consumer- Returns, exchanges, warranties, service quality and misleading advertising.
tax- Taxes, duties, customs payments and tax administration.
business- Companies, entrepreneurship, licensing, competition and insolvency.
traffic- Road rules, traffic police stops, fines, accidents and vehicle registration.
digital- Personal data, informatization, e-signature, e-government and online content.
intellectual-property- Copyright, patents, trademarks, designs and enforcement of IP rights.
land- Land use, agricultural land, water, subsoil and environmental protection.
procedure- Filing a claim, court stages, evidence, appeals and enforcement of judgments.
Responses
200Matching provisions400Invalid request401Missing or invalid key403Scope or project not enabled
/changeschanges:readWhat changed in the law
Amendments, repeals, renumberings and future-effective changes, newest first. Poll with `since` to see only what you have not seen — not a page number, which shifts under you when a new amendment lands.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
since | query | string <date-time> | ISO 8601. Only changes detected after this. |
change_type | query | string (added | amended | repealed | renumbered | future_effective) | |
limit | query | integer |
Responses
200Change events
/documents/{id}corpus:readA law and its articles
The whole document as it stood on a date, with provisions in DOCUMENT order rather than relevance order — a statute is not a search result.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string | |
as_of | query | string <date> | |
language | query | string (uz-Latn | uz-Cyrl | ru) |
Responses
200The document with its in-force provisions404No such document
/mcpcorpus:readRemote MCP endpoint
JSON-RPC 2.0 over HTTP. Exposes search, citation resolution and coverage as MCP tools for AI clients. Authenticated with the same bearer API key.
Responses
200JSON-RPC response202Notification accepted; no body, by protocol
/provisions/{id}corpus:readResolve a citation
Returns the exact text for an immutable provision-version id, including after the article has been amended.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Responses
200The provision version404No published provision with that id
Schemas
The shapes every endpoint returns. Field names and types are exactly what is on the wire.
Provision
idstringrequiredImmutable citation target. Store THIS to point at a specific text of a specific article at a specific time.document_idstringarticlestringrequiredkindstringlanguagestring (uz-Latn | uz-Cyrl | ru)requiredtextstringrequiredThe provision text as published.effective_fromstring <date>requiredInclusive.effective_tostring | null <date>EXCLUSIVE. null = still in force.in_forcebooleanrequiredWhether this text was in force on the requested as_of date.official_urlstring | nullOfficial source page. null when none is known — never a constructed URL.source_anchorstring | null
DomainFilter
Present only when a domain filter was applied. `mode` reports the strength of the guarantee: `exact` means nothing outside the domains was ever retrieved; `best_effort` means results were classified by document title after retrieval, so fewer results may be returned than exist — never more.
domainsarraymodestring (exact | best_effort)excludedintegerResults removed by the filter.
Meta
api_versionstringas_ofstring <date>countintegercoverage_notestring
Error
errorobject