Docs / API reference
API reference
Every /v1 endpoint, with its parameters, a request to copy and the responses it returns. Keys, the keyless tier and caching are in the Quick start; every error code is on the errors page.
Generated from the OpenAPI document (JSON), which is the same contract for client generators and agents.
Rules
What a rule type requires in a jurisdiction: today, on a date, its history, or across jurisdictions, and any version by its stable id. Every response lists the jurisdiction levels that apply (layers), what is missing (missing_layers), announced changes (upcoming), the sources (citations) and how each version was verified (verification). An API key, or none on the keyless tier.
GET /v1 /rules /{domain} /{jurisdiction} /{rule_type}
The rule in a jurisdiction, today or on a dateKey optional
What a rule type requires in a jurisdiction, with every jurisdiction level that applies, each with its own sources and verification. Example: GET /v1/rules/employment/us-wa/minimum_wage for Washington's minimum wage today, or ?as_of=2027-01-01 for the rate scheduled on that date.
How to read it. resolution says how levels combine:
overrideandmax: read the top level.resolved_fromnames the layer it mirrors;idis that version's stable id andcitationits primary source passage.stack(e.g. US overtime: federal weekly plus state daily rules): the top level is null; read every entry oflayers, each a separate rule that applies, with its ownid.
Before relying on it, check:
missing_layers: a level that applies has nothing published, and the answer is incomplete.not_addressedmeans the official sources were searched and say nothing, which is not "no requirement".has_requirement: false: the jurisdiction verifiably sets no rule of this type (a cited answer).tiers_present: tiers or exceptions exist; the top-level value is not the answer for everyone.criteriastates when values apply; Juriset never evaluates it.coverage.local_rules_may_apply: cities or counties set their own rule.review_pending: a change to a source awaits verification or review.upcoming: announced changes not yet in effect.
Store the id you relied on: GET /v1/versions/{id} returns that exact version forever. Values are reported as the sources state them; nothing is computed or merged. Not legal advice. Errors: jurisdiction_not_covered (with nearest_covered), not_covered_for_date, jurisdiction_not_found (with suggestions), rule_type_not_found, domain_not_found.
Every plan, Free and keyless included, gets today's rule and upcoming; as_of needs a paid plan (Developer and above).
Parameters
domainpath, required | string | Domain slug: |
jurisdictionpath, required | string | Jurisdiction slug, e.g. |
rule_typepath, required | string | Rule type slug, with underscores: |
as_ofquery | string | null | A date, |
Request
curl "https://api.juriset.dev/v1/rules/employment/us-wa/minimum_wage?as_of=2027-01-01" \ -H "Authorization: Bearer $JURISET_API_KEY"
Responses
200 RuleOut
Successful Response
Headers: ETag, Cache-Control, RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, Juriset-Quota-Limit, Juriset-Quota-Remaining, Juriset-Quota-Reset
Example: override: Alberta overtime (top level mirrors the one layer)
{
"domain": "employment",
"schema_version": "1.1.0",
"as_of": "2026-10-26",
"scheduled": false,
"coverage": {
"covered_since": "2026-01-01",
"local_rules_may_apply": false
},
"tiers_present": false,
"missing_layers": [],
"upcoming": [],
"review_pending": false,
"disclaimer": "Informational only. Not legal advice. Verify with the cited source.",
"rule": {
"domain": "employment",
"rule_type": "overtime",
"jurisdiction": {
"slug": "ca-ab",
"name": "Alberta",
"level": "province"
},
"resolved_from": "ca-ab"
},
"schema_url": "https://juriset.dev/schemas/employment/overtime/v1.json",
"rule_type": "overtime",
"jurisdiction": {
"slug": "ca-ab",
"name": "Alberta",
"level": "province"
},
"resolution": "override",
"resolved_from": "ca-ab",
"version": 3,
"has_requirement": true,
"effective_from": "2026-01-01",
"verified_at": "2026-10-18T07:02:11Z",
"data": {
"threshold_daily_hours": 8,
"threshold_weekly_hours": 44,
"multiplier": 1.5,
"basis": "whichever is greater"
},
"citations": [
{
"role": "primary",
"title": "Employment Standards Code, RSA 2000, c E-9",
"section": "s. 21",
"url": "https://kings-printer.alberta.ca/documents/Acts/E09.pdf",
"excerpt": "An employer must pay an employee overtime pay for overtime hours ...",
"fetched_at": "2026-10-18T07:02:11Z",
"snapshot_url": "https://api.juriset.dev/v1/snapshots/0b6d7f0e-6a51-4c3e-9f3c-6d1f3f0b2a10"
}
],
"id": "rv_01JC3W9V6S7QX8YB2M4N5P6R7A",
"status": "current",
"verification": {
"extractor": {
"vendor": "anthropic",
"model": "claude-extractor",
"prompt_version": "3"
},
"verifier": {
"vendor": "google",
"model": "gemini-verifier",
"prompt_version": "1"
},
"agreement_score": 1,
"published_by": "auto"
},
"citation": {
"title": "Employment Standards Code, RSA 2000, c E-9",
"section": "s. 21",
"url": "https://kings-printer.alberta.ca/documents/Acts/E09.pdf",
"snapshot_url": "https://api.juriset.dev/v1/snapshots/0b6d7f0e-6a51-4c3e-9f3c-6d1f3f0b2a10",
"excerpt": "An employer must pay an employee overtime pay for overtime hours ..."
},
"layers": [
{
"jurisdiction": "ca-ab",
"level": "province",
"version": 3,
"has_requirement": true,
"effective_from": "2026-01-01",
"verified_at": "2026-10-18T07:02:11Z",
"schema_version": "1.1.0",
"data": {
"threshold_daily_hours": 8,
"threshold_weekly_hours": 44,
"multiplier": 1.5,
"basis": "whichever is greater"
},
"citations": [
{
"role": "primary",
"title": "Employment Standards Code, RSA 2000, c E-9",
"section": "s. 21",
"url": "https://kings-printer.alberta.ca/documents/Acts/E09.pdf",
"excerpt": "An employer must pay an employee overtime pay for overtime hours ...",
"fetched_at": "2026-10-18T07:02:11Z",
"snapshot_url": "https://api.juriset.dev/v1/snapshots/0b6d7f0e-6a51-4c3e-9f3c-6d1f3f0b2a10"
}
],
"review_pending": false,
"id": "rv_01JC3W9V6S7QX8YB2M4N5P6R7A",
"status": "current",
"verification": {
"extractor": {
"vendor": "anthropic",
"model": "claude-extractor",
"prompt_version": "3"
},
"verifier": {
"vendor": "google",
"model": "gemini-verifier",
"prompt_version": "1"
},
"agreement_score": 1,
"published_by": "auto"
},
"schema_url": "https://juriset.dev/schemas/employment/overtime/v1.json"
}
]
}Example: max: Washington minimum wage (the higher of federal and state answers)
{
"domain": "employment",
"schema_version": "1.1.0",
"as_of": "2026-10-26",
"scheduled": false,
"coverage": {
"covered_since": "2026-01-01",
"local_rules_may_apply": true,
"note": "Seattle and SeaTac set their own minimum wages."
},
"tiers_present": false,
"missing_layers": [],
"upcoming": [
{
"jurisdiction": "us-wa",
"level": "state",
"version": 5,
"has_requirement": true,
"effective_from": "2027-01-01",
"verified_at": "2026-10-18T07:02:11Z",
"schema_version": "1.1.0",
"data": {
"amount": 17.13,
"currency": "USD",
"per_unit": "hour",
"applies_to": "Employees aged 16 and over"
},
"citations": [
{
"role": "primary",
"title": "Minimum wage",
"url": "https://lni.wa.gov/workers-rights/wages/minimum-wage/",
"excerpt": "The 2026 minimum wage is $16.66 per hour.",
"fetched_at": "2026-10-18T07:02:11Z",
"snapshot_url": "https://api.juriset.dev/v1/snapshots/0b6d7f0e-6a51-4c3e-9f3c-6d1f3f0b2a10"
}
],
"review_pending": false,
"id": "rv_01JC3W9V6S7QX8YB2M4N5P6R7F",
"status": "upcoming",
"verification": {
"extractor": {
"vendor": "anthropic",
"model": "claude-extractor",
"prompt_version": "3"
},
"verifier": {
"vendor": "google",
"model": "gemini-verifier",
"prompt_version": "1"
},
"agreement_score": 1,
"published_by": "auto"
},
"schema_url": "https://juriset.dev/schemas/employment/minimum_wage/v1.json",
"change_type": "amendment",
"summary": "minimum_wage us-wa v5 effective 2027-01-01 (amendment of v4)"
}
],
"review_pending": false,
"disclaimer": "Informational only. Not legal advice. Verify with the cited source.",
"rule": {
"domain": "employment",
"rule_type": "minimum_wage",
"jurisdiction": {
"slug": "us-wa",
"name": "Washington",
"level": "state"
},
"resolved_from": "us-wa"
},
"schema_url": "https://juriset.dev/schemas/employment/minimum_wage/v1.json",
"rule_type": "minimum_wage",
"jurisdiction": {
"slug": "us-wa",
"name": "Washington",
"level": "state"
},
"resolution": "max",
"resolved_from": "us-wa",
"version": 4,
"has_requirement": true,
"effective_from": "2026-01-01",
"effective_to": "2027-01-01",
"verified_at": "2026-10-18T07:02:11Z",
"data": {
"amount": 16.66,
"currency": "USD",
"per_unit": "hour",
"applies_to": "Employees aged 16 and over"
},
"citations": [
{
"role": "primary",
"title": "Minimum wage",
"url": "https://lni.wa.gov/workers-rights/wages/minimum-wage/",
"excerpt": "The 2026 minimum wage is $16.66 per hour.",
"fetched_at": "2026-10-18T07:02:11Z",
"snapshot_url": "https://api.juriset.dev/v1/snapshots/0b6d7f0e-6a51-4c3e-9f3c-6d1f3f0b2a10"
}
],
"id": "rv_01JC3W9V6S7QX8YB2M4N5P6R7C",
"status": "current",
"verification": {
"extractor": {
"vendor": "anthropic",
"model": "claude-extractor",
"prompt_version": "3"
},
"verifier": {
"vendor": "google",
"model": "gemini-verifier",
"prompt_version": "1"
},
"agreement_score": 1,
"published_by": "auto"
},
"citation": {
"title": "Minimum wage",
"url": "https://lni.wa.gov/workers-rights/wages/minimum-wage/",
"snapshot_url": "https://api.juriset.dev/v1/snapshots/0b6d7f0e-6a51-4c3e-9f3c-6d1f3f0b2a10",
"excerpt": "The 2026 minimum wage is $16.66 per hour."
},
"layers": [
{
"jurisdiction": "us",
"level": "country",
"version": 2,
"has_requirement": true,
"effective_from": "2026-01-01",
"verified_at": "2026-10-18T07:02:11Z",
"schema_version": "1.1.0",
"data": {
"amount": 7.25,
"currency": "USD",
"per_unit": "hour",
"applies_to": "Covered nonexempt workers"
},
"citations": [
{
"role": "primary",
"title": "29 U.S.C. § 206",
"url": "https://www.dol.gov/agencies/whd/minimum-wage",
"excerpt": "... not less than $7.25 an hour ...",
"fetched_at": "2026-10-18T07:02:11Z",
"snapshot_url": "https://api.juriset.dev/v1/snapshots/0b6d7f0e-6a51-4c3e-9f3c-6d1f3f0b2a10"
}
],
"review_pending": false,
"id": "rv_01JC3W9V6S7QX8YB2M4N5P6R7B",
"status": "current",
"verification": {
"extractor": {
"vendor": "anthropic",
"model": "claude-extractor",
"prompt_version": "3"
},
"verifier": {
"vendor": "google",
"model": "gemini-verifier",
"prompt_version": "1"
},
"agreement_score": 1,
"published_by": "auto"
},
"schema_url": "https://juriset.dev/schemas/employment/minimum_wage/v1.json"
},
{
"jurisdiction": "us-wa",
"level": "state",
"version": 4,
"has_requirement": true,
"effective_from": "2026-01-01",
"effective_to": "2027-01-01",
"verified_at": "2026-10-18T07:02:11Z",
"schema_version": "1.1.0",
"data": {
"amount": 16.66,
"currency": "USD",
"per_unit": "hour",
"applies_to": "Employees aged 16 and over"
},
"citations": [
{
"role": "primary",
"title": "Minimum wage",
"url": "https://lni.wa.gov/workers-rights/wages/minimum-wage/",
"excerpt": "The 2026 minimum wage is $16.66 per hour.",
"fetched_at": "2026-10-18T07:02:11Z",
"snapshot_url": "https://api.juriset.dev/v1/snapshots/0b6d7f0e-6a51-4c3e-9f3c-6d1f3f0b2a10"
}
],
"review_pending": false,
"id": "rv_01JC3W9V6S7QX8YB2M4N5P6R7C",
"status": "current",
"verification": {
"extractor": {
"vendor": "anthropic",
"model": "claude-extractor",
"prompt_version": "3"
},
"verifier": {
"vendor": "google",
"model": "gemini-verifier",
"prompt_version": "1"
},
"agreement_score": 1,
"published_by": "auto"
},
"schema_url": "https://juriset.dev/schemas/employment/minimum_wage/v1.json"
}
]
}Example: stack: California overtime (read `layers`; no single answer)
{
"domain": "employment",
"schema_version": "1.1.0",
"as_of": "2026-10-26",
"scheduled": false,
"coverage": {
"covered_since": "2026-01-01",
"local_rules_may_apply": false
},
"tiers_present": false,
"missing_layers": [],
"upcoming": [],
"review_pending": false,
"disclaimer": "Informational only. Not legal advice. Verify with the cited source.",
"rule": {
"domain": "employment",
"rule_type": "overtime",
"jurisdiction": {
"slug": "us-ca",
"name": "California",
"level": "state"
}
},
"schema_url": "https://juriset.dev/schemas/employment/overtime/v1.json",
"rule_type": "overtime",
"jurisdiction": {
"slug": "us-ca",
"name": "California",
"level": "state"
},
"resolution": "stack",
"verified_at": "2026-10-18T07:02:11Z",
"layers": [
{
"jurisdiction": "us",
"level": "country",
"version": 1,
"has_requirement": true,
"effective_from": "2026-01-01",
"verified_at": "2026-10-18T07:02:11Z",
"schema_version": "1.1.0",
"data": {
"threshold_weekly_hours": 40,
"multiplier": 1.5
},
"citations": [
{
"role": "primary",
"title": "29 U.S.C. § 207",
"url": "https://www.dol.gov/agencies/whd/overtime",
"excerpt": "... one and one-half times ...",
"fetched_at": "2026-10-18T07:02:11Z",
"snapshot_url": "https://api.juriset.dev/v1/snapshots/0b6d7f0e-6a51-4c3e-9f3c-6d1f3f0b2a10"
}
],
"review_pending": false,
"id": "rv_01JC3W9V6S7QX8YB2M4N5P6R7D",
"status": "current",
"verification": {
"extractor": {
"vendor": "anthropic",
"model": "claude-extractor",
"prompt_version": "3"
},
"verifier": {
"vendor": "google",
"model": "gemini-verifier",
"prompt_version": "1"
},
"agreement_score": 1,
"published_by": "auto"
},
"schema_url": "https://juriset.dev/schemas/employment/overtime/v1.json"
},
{
"jurisdiction": "us-ca",
"level": "state",
"version": 2,
"has_requirement": true,
"effective_from": "2026-01-01",
"verified_at": "2026-10-18T07:02:11Z",
"schema_version": "1.1.0",
"data": {
"threshold_daily_hours": 8,
"threshold_weekly_hours": 40,
"multiplier": 1.5,
"double_time_daily_hours": 12
},
"citations": [
{
"role": "primary",
"title": "Cal. Lab. Code § 510",
"url": "https://www.dir.ca.gov/dlse/faq_overtime.htm",
"excerpt": "... eight hours ...",
"fetched_at": "2026-10-18T07:02:11Z",
"snapshot_url": "https://api.juriset.dev/v1/snapshots/0b6d7f0e-6a51-4c3e-9f3c-6d1f3f0b2a10"
}
],
"review_pending": false,
"id": "rv_01JC3W9V6S7QX8YB2M4N5P6R7E",
"status": "current",
"verification": {
"extractor": {
"vendor": "anthropic",
"model": "claude-extractor",
"prompt_version": "3"
},
"verifier": {
"vendor": "google",
"model": "gemini-verifier",
"prompt_version": "1"
},
"agreement_score": 1,
"published_by": "auto"
},
"schema_url": "https://juriset.dev/schemas/employment/overtime/v1.json"
}
]
}Example: stack with a missing level: Texas overtime (official sources silent)
{
"domain": "employment",
"schema_version": "1.1.0",
"as_of": "2026-10-26",
"scheduled": false,
"coverage": {
"local_rules_may_apply": false
},
"tiers_present": false,
"missing_layers": [
{
"jurisdiction": "us-tx",
"level": "state",
"reason": "not_addressed",
"checked_on": "2026-10-26",
"note": "TWC pages describe only the federal FLSA; no Texas statute found.",
"review_pending": false
}
],
"upcoming": [],
"review_pending": false,
"disclaimer": "Informational only. Not legal advice. Verify with the cited source.",
"rule": {
"domain": "employment",
"rule_type": "overtime",
"jurisdiction": {
"slug": "us-tx",
"name": "Texas",
"level": "state"
}
},
"schema_url": "https://juriset.dev/schemas/employment/overtime/v1.json",
"rule_type": "overtime",
"jurisdiction": {
"slug": "us-tx",
"name": "Texas",
"level": "state"
},
"resolution": "stack",
"verified_at": "2026-10-18T07:02:11Z",
"layers": [
{
"jurisdiction": "us",
"level": "country",
"version": 1,
"has_requirement": true,
"effective_from": "2026-01-01",
"verified_at": "2026-10-18T07:02:11Z",
"schema_version": "1.1.0",
"data": {
"threshold_weekly_hours": 40,
"multiplier": 1.5
},
"citations": [
{
"role": "primary",
"title": "29 U.S.C. § 207",
"url": "https://www.dol.gov/agencies/whd/overtime",
"excerpt": "... one and one-half times ...",
"fetched_at": "2026-10-18T07:02:11Z",
"snapshot_url": "https://api.juriset.dev/v1/snapshots/0b6d7f0e-6a51-4c3e-9f3c-6d1f3f0b2a10"
}
],
"review_pending": false,
"id": "rv_01JC3W9V6S7QX8YB2M4N5P6R7D",
"status": "current",
"verification": {
"extractor": {
"vendor": "anthropic",
"model": "claude-extractor",
"prompt_version": "3"
},
"verifier": {
"vendor": "google",
"model": "gemini-verifier",
"prompt_version": "1"
},
"agreement_score": 1,
"published_by": "auto"
},
"schema_url": "https://juriset.dev/schemas/employment/overtime/v1.json"
}
]
}304
Not modified since the If-None-Match ETag; no body, not billed.
Errors: 401, 403, 404, 422, 429, 500, 503
| 401 |
|
| 403 |
|
| 404 |
|
| 422 |
|
| 429 |
|
| 500 |
|
| 503 |
|
GET /v1 /rules /{domain} /{jurisdiction} /{rule_type} /history
Every published version of a jurisdiction's ruleKey optional
Every version ever published for this jurisdiction's own rule, by effective date, with sources and verification: the timeline (published), corrections it replaced (superseded) and versions removed by a rollback (withdrawn). Example: GET /v1/rules/employment/us-wa/minimum_wage/history.
History is per jurisdiction. layer_jurisdictions names the other levels that apply (e.g. us for a state's minimum wage); fetch their history separately. To ask what applied on a date, use GET /v1/rules/{domain}/{jurisdiction}/{rule_type}?as_of=.
Paid plans (Developer and above); on Free or without a key, plan_required.
Parameters
domainpath, required | string | Domain slug: |
jurisdictionpath, required | string | Jurisdiction slug, e.g. |
rule_typepath, required | string | Rule type slug, with underscores: |
Request
curl "https://api.juriset.dev/v1/rules/employment/us-wa/minimum_wage/history" \ -H "Authorization: Bearer $JURISET_API_KEY"
Responses
200 HistoryOut
Successful Response
Headers: ETag, Cache-Control, RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, Juriset-Quota-Limit, Juriset-Quota-Remaining, Juriset-Quota-Reset
304
Not modified since the If-None-Match ETag; no body, not billed.
Errors: 401, 403, 404, 422, 429, 500, 503
| 401 |
|
| 403 |
|
| 404 |
|
| 422 |
|
| 429 |
|
| 500 |
|
| 503 |
|
GET /v1 /rules /{domain} /{rule_type}
One rule type across jurisdictionsKey optional
The rule response of every jurisdiction at the given levels, or of the jurisdictions named in jurisdiction, for comparing jurisdictions. Examples: GET /v1/rules/employment/minimum_wage for every state and province; GET /v1/rules/employment/minimum_wage?jurisdiction=us-wa,us-or,us-ca for three states. Each entry of results is the same object getRule returns, so layers, missing_layers and the rest apply per jurisdiction. Each result counts as one lookup. With as_of (paid plans), jurisdictions whose coverage starts later are listed in not_covered.
Parameters
domainpath, required | string | Domain slug: |
rule_typepath, required | string | Rule type slug, with underscores: |
levelquery | string | Comma-separated jurisdiction levels to include: |
jurisdictionquery | string | null | Comma-separated jurisdiction slugs to compare instead of whole levels, at most 100, any level: |
as_ofquery | string | null | A date, |
Request
curl "https://api.juriset.dev/v1/rules/employment/minimum_wage?level=state%2Cprovince&jurisdiction=us-wa%2Cus-or%2Cus-ca" \ -H "Authorization: Bearer $JURISET_API_KEY"
Responses
200 RulesAcrossOut
Successful Response
Headers: ETag, Cache-Control, RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, Juriset-Quota-Limit, Juriset-Quota-Remaining, Juriset-Quota-Reset
304
Not modified since the If-None-Match ETag; no body, not billed.
Errors: 401, 403, 404, 422, 429, 500, 503
| 401 |
|
| 403 |
|
| 404 |
|
| 422 |
|
| 429 |
|
| 500 |
|
| 503 |
|
GET /v1 /versions /{version_id} /audit-bundle
Download an audit bundle for one versionAPI key
A zip that shows an auditor or regulator which rule a decision rested on: the version as served, the whole verification record (the extractor's output, the second vendor's blind re-extraction and their field-by-field comparison, who published it and when, any sample audit), the change events around it, and the cited source as fetched, each file with its SHA-256 in manifest.json. Example: GET /v1/versions/rv_01JC3W9V6S7QX8YB2M4N5P6R7T/audit-bundle.
The bundle is not signed (signed attestations are planned), and it reports what the source says; it never says how a rule applies to a case. A source too large or no longer readable is listed in snapshots.json with the reason, not skipped silently. Growth and above; on Free, Developer or without a key, plan_required. One lookup per call.
Parameters
version_idpath, required | string | A version id from a rule response's |
Request
curl "https://api.juriset.dev/v1/versions/%7Bversion_id%7D/audit-bundle" \ -H "Authorization: Bearer $JURISET_API_KEY"
Responses
200 application/zip
A zip archive: README.txt, manifest.json (SHA-256 of every file), version.json, provenance.json, snapshots.json and the cited sources as fetched.
Headers: RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, Juriset-Quota-Limit, Juriset-Quota-Remaining, Juriset-Quota-Reset
Errors: 401, 403, 404, 422, 429, 500, 503
| 401 |
|
| 403 |
|
| 404 |
|
| 422 |
|
| 429 |
|
| 500 |
|
| 503 |
|
GET /v1 /versions /{version_id}
One rule version by its stable idNo key
Returns exactly the version a stored id names, forever: values, effective dates, citation and verification as published, with its status today (current, upcoming, superseded or withdrawn). Use it to re-check a value an agent relied on. Versions imported from Juriset V1 carry verification.legacy = "v1-human-review": a person reviewed them before multi-model verification existed. No API key needed; not billed. Informational only, not legal advice.
Parameters
version_idpath, required | string | A version id from a rule response's |
Request
curl "https://api.juriset.dev/v1/versions/%7Bversion_id%7D"
Responses
304
Not modified since the If-None-Match ETag; no body, not billed.
Errors: 404, 422, 500, 503
| 404 |
|
| 422 |
|
| 500 |
|
| 503 |
|
Discovery
Find jurisdiction slugs and rule types before a lookup, so nothing is guessed. No key needed; not billed.
GET /v1 /jurisdictions
Jurisdiction tree and searchNo key
Find the slug of a jurisdiction before looking up its rules, so callers never guess one. ?q=WA returns us-wa; ?q=CA returns both Canada (ca) and California (us-ca), best match first, with match saying why. Without q: every jurisdiction, each with its parent. No API key needed; not billed.
Parameters
qquery | string | null | Name, postal abbreviation or slug, any case, accents optional: |
Request
curl "https://api.juriset.dev/v1/jurisdictions?q=Washington"
Responses
304
Not modified since the If-None-Match ETag; no body, not billed.
Errors: 422, 500, 503
| 422 |
|
| 500 |
|
| 503 |
|
GET /v1 /rule-types
Rule types with their schemas and resolutionNo key
The rule type registry: each rule type's slug, the JSON Schema of data in rule responses (every field described) and of criteria, its schema_version and schema_url, and how jurisdiction levels combine (resolution, with per-country countries). No API key needed; not billed.
Parameters
domainquery | string | null | Limit to one domain, e.g. |
Request
curl "https://api.juriset.dev/v1/rule-types?domain=employment"
Responses
304
Not modified since the If-None-Match ETag; no body, not billed.
Errors: 404, 422, 500, 503
| 404 |
|
| 422 |
|
| 500 |
|
| 503 |
|
Changes
The change feed: what was published or took effect. Developer plan and above.
GET /v1 /changes
The change feed: rules published or taking effectKey optional
Every change to a published rule, oldest first: a version published (new rule, amendment, correction, repeal; announced changes are published before they take effect), or an announced version that took_effect on its date. Each entry names the rule and links to it (rule_url) and to the version (version_id); read those for the full answer. Example: GET /v1/changes?since=2026-10-01T00:00:00Z&jurisdiction=us,us-wa, then poll GET /v1/changes?cursor=<cursor> daily for anything new.
Paid plans (Developer and above); on Free or without a key, plan_required. One lookup per call.
Parameters
sincequery | string (date-time) | null | Start from changes recorded at or after this moment (ISO 8601, e.g. |
cursorquery | string | null | Continue after a previous call: its |
domainquery | string | null | Limit to one domain. |
jurisdictionquery | string | null | Comma-separated jurisdiction slugs: changes to those jurisdictions' own rules. A state's answer also depends on its federal layer: to follow both, pass |
rule_typequery | string | null | Limit to one rule type (needs |
limitquery | integer | Changes per call, at most 500. |
Request
curl "https://api.juriset.dev/v1/changes?since=2026-10-01T00%3A00%3A00Z&domain=employment" \ -H "Authorization: Bearer $JURISET_API_KEY"
Responses
200 ChangesOut
Successful Response
Headers: ETag, Cache-Control, RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, Juriset-Quota-Limit, Juriset-Quota-Remaining, Juriset-Quota-Reset
Example: Two changes
{
"since": "2026-10-01T00:00:00Z",
"count": 2,
"changes": [
{
"id": "5f0c2a8e-1d4b-4f7e-9a51-2b7d3c9e8f10",
"ts": "2026-10-02T15:04:11Z",
"event": "published",
"change_type": "amendment",
"domain": "employment",
"rule_type": "minimum_wage",
"jurisdiction": {
"slug": "us-wa",
"name": "Washington",
"level": "state"
},
"effective_from": "2027-01-01",
"version": 4,
"from_version": 3,
"summary": "Minimum wage rises to $17.13 per hour on January 1, 2027.",
"rule_url": "https://api.juriset.dev/v1/rules/employment/us-wa/minimum_wage",
"version_id": "rv_01JC3W9V6S7QX8YB2M4N5P6R7C"
},
{
"id": "a3e1b7c2-6f0d-4c1a-8e29-7d5b4c3a2f01",
"ts": "2026-10-03T07:00:02Z",
"event": "took_effect",
"change_type": "amendment",
"domain": "employment",
"rule_type": "overtime",
"jurisdiction": {
"slug": "ca-ab",
"name": "Alberta",
"level": "province"
},
"effective_from": "2026-10-03",
"version": 2,
"from_version": 1,
"rule_url": "https://api.juriset.dev/v1/rules/employment/ca-ab/overtime",
"version_id": "rv_01JC3W9V6S7QX8YB2M4N5P6R7G"
}
],
"has_more": false,
"cursor": "MjAyNi0xMC0wM1QwNzowMDowMiswMDowMHxhM2UxYjdjMi02ZjBkLTRjMWEtOGUyOS03ZDViNGMzYTJmMDE",
"disclaimer": "Informational only. Not legal advice. Verify with the cited source."
}304
Not modified since the If-None-Match ETag; no body, not billed.
Errors: 401, 403, 404, 422, 429, 500, 503
| 401 |
|
| 403 |
|
| 404 |
|
| 422 |
|
| 429 |
|
| 500 |
|
| 503 |
|
Export
Every current rule in a domain at once. Scale plan.
GET /v1 /export /{domain}
Bulk export of every current rule in a domainKey optional
Every jurisdiction's current answer for every rule type in the domain, in one call, for loading into your own store. Example: GET /v1/export/employment?format=csv.
JSON results are the same objects getRule returns (layers, missing layers, upcoming, citations, verification). CSV has one row per jurisdiction and rule type with that jurisdiction's own current version only (other levels are their own rows; combining them is getRule's job), data as a JSON string, the primary citation, the version's version_id and how it was published (published_by).
Scale plan only; others get plan_required. One lookup per call.
Parameters
domainpath, required | string | Domain slug: |
formatquery | "json" | "csv" |
|
Request
curl "https://api.juriset.dev/v1/export/employment" \ -H "Authorization: Bearer $JURISET_API_KEY"
Responses
200 ExportOut text/csv
JSON (ExportOut) or, with format=csv, one CSV row per jurisdiction and rule type.
Headers: ETag, Cache-Control, RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, Juriset-Quota-Limit, Juriset-Quota-Remaining, Juriset-Quota-Reset
304
Not modified since the If-None-Match ETag; no body, not billed.
Errors: 401, 403, 404, 422, 429, 500, 503
| 401 |
|
| 403 |
|
| 404 |
|
| 422 |
|
| 429 |
|
| 500 |
|
| 503 |
|
Reports
Tell Juriset a published value looks wrong. Any key; not billed.
POST /v1 /reports
Report a suspected error in a published ruleAPI key
Tell Juriset a published value looks wrong: name the rule (and the version, or omit it for the current one), say what the source says instead, and add an official URL if you have one. It goes to the escalation queue, where a person checks it against the source; a confirmed error is corrected as a new version, which the change feed then carries. Example body: {"domain": "employment", "jurisdiction": "us-wa", "rule_type": "minimum_wage", "message": "The source says $16.66 from January 1, 2026."}.
Any key, Free included; a key is required (missing_api_key without one). Not billed. At most 20 reports per key per day (too_many_reports). Do not include personal details about anyone.
Body: ReportIn
{
"domain": "employment",
"jurisdiction": "us-wa",
"rule_type": "minimum_wage",
"version": 3,
"message": "The L&I page now says $16.66 per hour from January 1, 2026, not $16.28.",
"suggested_source_url": "https://lni.wa.gov/workers-rights/wages/minimum-wage/"
}Request
curl -X POST "https://api.juriset.dev/v1/reports" \
-H "Authorization: Bearer $JURISET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain":"employment","jurisdiction":"us-wa","rule_type":"minimum_wage","version":3,"message":"The L&I page now says $16.66 per hour from January 1, 2026, not $16.28.","suggested_source_url":"https://lni.wa.gov/workers-rights/wages/minimum-wage/"}'Responses
201 ReportOut
Successful Response
Headers: RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, Juriset-Quota-Limit, Juriset-Quota-Remaining, Juriset-Quota-Reset
Errors: 401, 403, 404, 409, 422, 429, 500, 503
| 401 |
|
| 403 |
|
| 404 |
|
| 409 |
|
| 422 |
|
| 429 |
|
| 500 |
|
| 503 |
|
Sources
Stored copies of the cited sources, as fetched. No key needed.
GET /v1 /snapshots /{snapshot_id}
A stored copy of a cited sourceNo key
The source page or document exactly as Juriset fetched it, for a citation's snapshot_url. Redirects to a signed URL that expires after a few minutes (PRD 14), so follow redirects and do not store the target. Only snapshots cited by a published version are served. No API key needed.
Parameters
snapshot_idpath, required | string (uuid) | From a citation's |
Request
curl "https://api.juriset.dev/v1/snapshots/%7Bsnapshot_id%7D"
Responses
200 application/octet-stream
The source as fetched, in its own content type (HTML, PDF, …), as an attachment. Served directly only where signed URLs are unavailable.
Headers: ETag, Cache-Control
302
Redirect to a signed, short-lived URL for the stored copy.
304
Not modified since the If-None-Match ETag; no body, not billed.
Errors: 404, 422, 500, 503
| 404 |
|
| 422 |
|
| 500 |
|
| 503 |
|
Trust
Juriset's public accuracy record: auto-publish, escalation, correction and audit figures, recomputed weekly. No key needed; not billed.
GET /v1 /track-record
Juriset's public accuracy recordNo key
How the verification gate has performed: the auto-publish rate, the escalation rate, the correction rate (overall, by publisher and by rule type), sample-audit outcomes, the median time a person takes to resolve an escalation, and every recent correction. Recomputed weekly, as of computed_through. While nothing has been published through the gate, status is no_data_yet, every count is 0 and every rate is null: absence of history is never reported as a perfect score. definitions says how each figure is computed. Versions imported from V1 are counted apart (imported_from_v1), not in the rates. The gate runs in Juriset's staging environment, so the escalation, audit and resolution figures arrive weekly in a file staging signs; gate_figures_source says which week they cover. No API key needed; not billed.
Request
curl "https://api.juriset.dev/v1/track-record"
Responses
304
Not modified since the If-None-Match ETag; no body, not billed.
Errors: 422, 500, 503
| 422 |
|
| 500 |
|
| 503 |
|
Meta
Service health.
GET /v1 /health
ReadinessNo key
Readiness: the API and its database answer. For uptime monitors (PRD 15).
Request
curl "https://api.juriset.dev/v1/health"
Responses
200 Health
Successful Response
Models
The objects the endpoints return and accept. Optional fields may be absent or null.
ChangeOut
id | string | Change event id. |
ts | string (date-time) | When the event was recorded. |
event | "published" | "took_effect" |
|
change_type | "new" | "amendment" | "correction" | "repeal" | "rollback" |
|
domain | string | |
rule_type | string | |
jurisdiction | JurisdictionRef (JurisdictionRef) | |
effective_from | string (date) | Effective date of the version this event is about. |
version | integer | The version the rule moved to. |
from_version | integer | null | The version it moved from; null for |
summary | string | null | Factual one-line summary of the change. |
rule_url | string | Absolute URL of the rule ( |
version_id | string | Stable id of the version moved to ( |
ChangesOut
since | string (date-time) | null |
|
count | integer | |
changes | ChangeOut (ChangeOut[]) | Oldest first. |
has_more | boolean | True when more changes wait: call again with |
cursor | string | Opaque position after the last change returned (or where this call began when none were). Pass it as |
disclaimer | string |
Citation
title | string | null | |
sectionoptional | string | null | Where in the source. |
url | string | The live source page or document. |
snapshot_url | string | null | Juriset's stored copy of the source as it was read, so the excerpt can be checked even after the live page changes. Redirects to a short-lived signed URL. |
excerpt | string | null | The verbatim passage the values come from. |
CorrectionOut
ts | string (date-time) | When the correction or rollback was published. |
change_type | "correction" | "rollback" | |
domain | string | |
rule_type | string | |
jurisdiction | VersionJurisdiction (VersionJurisdiction) | |
corrected_version_id | string | null | The version that was corrected or withdrawn ( |
version_id | string | The version published in its place. |
summary | string | null |
CountryResolution
country_code | string | |
resolution | "override" | "stack" | "max" | |
resolution_field | string | null | |
parent_levels | "country" | "state" | "province" | "county" | "city"[] | Levels above the queried jurisdiction that contribute layers in this country. |
Coverage
covered_since | string (date) | null | The earliest date Juriset's data for this rule is authoritative for: the date Juriset set, or else the effective date of the earliest published version. An |
local_rules_may_apply | boolean | True when lower-level jurisdictions (cities, counties) are known to set their own rule of this type and Juriset does not cover them yet. The answer here is then not the whole answer for every place in the jurisdiction. |
note | string | null | What is not covered, in plain words. |
ErrorBody
code | string | Stable machine-readable code. |
message | string | What went wrong and what to do instead. |
docs_url | string | The code's entry in the error reference. |
detailsoptional | object | null | Code-specific details; the same object as the top level's. |
ErrorOut
error | ErrorBody (ErrorBody) | PRD 9.3's error object. Read this one. |
code | string | The same as |
message | string | What went wrong and what to do instead. |
status | integer | The HTTP status, repeated. |
details | object | null | Code-specific details, e.g. |
docs_url | string | |
status_page | string | Service status and incidents. |
ExportOut
domain | string | |
generated_at | string (date-time) | |
rule_types | string[] | |
count | integer | Number of |
results | RuleOut (RuleOut[]) | The current rule response of every jurisdiction (all levels) for every rule type in the domain, by rule type then jurisdiction slug: the same objects |
disclaimer | string |
GateFiguresSource
origin | "this_database" | "staging" |
|
computed_through | string (date-time) | null | The Monday 00:00 UTC cut-off those figures were computed to. It can be a week behind |
generated_at | string (date-time) | null | When staging wrote the file; null when computed here. |
key_id | string | null | The id of the key that signed the file; null when computed here. |
Health
status | string | |
service | string | |
environment | string | |
version | string |
HistoryOut
domain | string | |
rule_type | string | |
schema_version | string | |
jurisdiction | JurisdictionRef (JurisdictionRef) | |
resolution | "override" | "stack" | "max" | |
layer_jurisdictions | JurisdictionRef (JurisdictionRef[]) | Every level that applies under |
coverage | Coverage (Coverage) | |
versions | HistoryVersion (HistoryVersion[]) | Every version ever published for this jurisdiction, by effective date. |
missing | MissingLayer (MissingLayer | null) | Set when nothing was ever published here, with the reason. |
review_pending | boolean | |
review_pending_since | string (date-time) | null | |
disclaimer | string |
HistoryVersion
version | integer | |
status | "published" | "superseded" | "withdrawn" |
|
in_effect | boolean | This is the version in effect today. |
has_requirement | boolean | |
effective_from | string (date) | |
effective_to | string (date) | null | For published versions: the next published version's effective date. Null for superseded and withdrawn versions. |
published_at | string (date-time) | |
change_type | string | null |
|
summary | string | null | |
verified_at | string (date-time) | null | |
schema_version | string | |
data | object | null | |
citations | LayerCitation (LayerCitation[]) | |
id | string | Stable version id (PRD 9.2): store it beside your decision. |
criteria | object | null | Declarative, non-executable conditions for when the values apply (PRD 8), never evaluated by Juriset; null when unconditional. |
verification | Verification (Verification) | |
schema_url | string | JSON Schema for |
JurisdictionOut
slug | string | Hierarchical slug: |
name | string | |
level | "country" | "state" | "province" | "county" | "city" |
|
parent | string | null | Parent slug; null for a country. |
country_code | string | |
region_code | string | null | Postal abbreviation of a state or province. |
timezone | string | IANA zone whose midnight switches future-dated versions. |
match | "slug" | "region_code" | "country_code" | "name" | "name_prefix" | "name_contains" | null | Why it matched |
JurisdictionRef
slug | string | Hierarchical slug: |
name | string | |
level | "country" | "state" | "province" | "county" | "city" |
|
JurisdictionsOut
q | string | null | |
count | integer | |
jurisdictions | JurisdictionOut (JurisdictionOut[]) | Without |
Layer
jurisdiction | string | Jurisdiction slug of this layer. |
level | "country" | "state" | "province" | "county" | "city" | |
version | integer | Version number within this jurisdiction's rule. |
has_requirement | boolean | False: the jurisdiction verifiably sets no rule of this type (a cited answer, not a gap). |
effective_from | string (date) | |
effective_to | string (date) | null | The day the next published version takes effect; null while no later version is published. Derived, never stored. |
verified_at | string (date-time) | null | When the version's sources were last confirmed against the live pages: the oldest of its sources'. Null: a source was never verified. |
schema_version | string | Rule type schema version |
data | object | null | The rule's values as the sources state them, shaped by the rule type's |
citations | LayerCitation (LayerCitation[]) | Primary source first. |
review_pending | boolean | A change to this rule's sources was detected and awaits verification, human review or publication; the values shown may be outdated. |
review_pending_since | string (date-time) | null | When that change was first detected; null when nothing is pending. |
id | string | Stable version id (PRD 9.2): store it beside your decision. |
status | "current" | "upcoming" | "superseded" | "withdrawn" | This version today: |
criteria | object | null | Declarative, non-executable conditions for when the values apply (PRD 8), never evaluated by Juriset; null when unconditional. |
verification | Verification (Verification) | How this layer's version was checked before it was published. |
schema_url | string | JSON Schema for |
LayerCitation
role | "primary" | "supporting" | Each version has exactly one |
title | string | null | The source's title as cited. |
section | string | null | Statute section or page part, when cited. |
url | string | null | The official page or document. |
excerpt | string | Verbatim passage of the source supporting the values (French sources stay in French). |
fields | string[] | null | The |
fetched_at | string (date-time) | When Juriset fetched the snapshot cited. |
snapshot_url | string | Absolute URL of the stored copy of the source as Juriset fetched it ( |
LookupRuleRef
domain | string | |
rule_type | string | |
jurisdiction | JurisdictionRef (JurisdictionRef) | The jurisdiction asked about. |
resolved_from | string | null | The level whose version answers (PRD 9.2): the jurisdiction itself, or a parent under |
MissingLayer
jurisdiction | string | |
level | "country" | "state" | "province" | "county" | "city" | |
reason | "not_addressed" | "not_yet_reviewed" | "no_version_in_effect" | "not_covered_for_date" | Why this level contributes no layer:
|
checked_on | string (date) | null | For |
note | string | null | For |
covered_since | string (date) | null | For |
review_pending | boolean | A draft for this level awaits review or publication. |
review_pending_since | string (date-time) | null |
ModelRun
vendor | string | |
model | string | |
prompt_version | string |
NotCovered
jurisdiction | JurisdictionRef (JurisdictionRef) | |
code | "not_covered_for_date" | |
message | string | |
covered_since | string (date) | null |
Rate
numerator | integer | Events counted, e.g. versions auto-published. |
denominator | integer | Everything they are counted against. |
rate | number | null |
|
ReportIn
domain | string | |
jurisdiction | string | Jurisdiction slug. |
rule_type | string | |
versionoptional | integer | null | The version you believe is wrong ( |
message | string | What is wrong, and what the source says instead. Do not include personal details about anyone. |
suggested_source_urloptional | string | null | An official page that shows the right value, if you have one. |
reporter_emailoptional | string | null | Optional: where Juriset may reply. Used for this report only. |
ReportOut
id | string | |
status | "open" | "accepted" | "dismissed" |
|
created_at | string (date-time) | |
domain | string | |
jurisdiction | string | |
rule_type | string | |
version | integer |
RuleOut
domain | string | |
rule_type | string | |
schema_version | string | The rule type's current schema version (semver). Each layer carries the version its |
jurisdiction | JurisdictionRef (JurisdictionRef) | |
as_of | string (date) | The date answered for: |
scheduled | boolean | True when |
resolution | "override" | "stack" | "max" | How jurisdiction levels combine for this rule type here:
|
resolved_from | string | null | Slug of the layer the top-level fields mirror ( |
version | integer | null | |
has_requirement | boolean | null | |
effective_from | string (date) | null | |
effective_to | string (date) | null | |
verified_at | string (date-time) | null | Mirrors the answering layer; for |
coverage | Coverage (Coverage) | |
data | object | null | |
citations | LayerCitation (LayerCitation[] | null) | |
tiers_present | boolean | True when any layer's |
layers | Layer (Layer[]) | Every published level that applies, highest (federal) first. Each is a full answer with its own sources; layers are never merged. |
missing_layers | MissingLayer (MissingLayer[]) | Levels that apply but contribute no layer, with the reason. Non-empty means the answer is incomplete: a missing level is never filled from another level. |
upcoming | Upcoming (Upcoming[]) | Published versions of the levels that apply that are not yet in effect today, soonest first (announced changes). |
review_pending | boolean | A source change for any level here awaits verification, human review or publication. |
review_pending_since | string (date-time) | null | Earliest detection among the pending changes. |
disclaimer | string | |
id | string | null | Stable id of the answering version (PRD 9.2), the one to store beside your decision; null under |
rule | LookupRuleRef (LookupRuleRef) | |
status | "current" | "upcoming" | "superseded" | "withdrawn" | null | The answering version's status today; null when no single layer answers. |
criteria | object | null | Declarative, non-executable conditions for when the values apply (PRD 8), never evaluated by Juriset; null when unconditional. |
citation | Citation (Citation | null) | The answering version's primary source passage (PRD 9.2); |
verification | Verification (Verification | null) | How the answering version was checked; under |
schema_url | string | JSON Schema for |
RuleRef
domain | string | |
rule_type | string | |
jurisdiction | VersionJurisdiction (VersionJurisdiction) | |
resolved_from | string | The jurisdiction whose rule this version belongs to. For a lookup that inherits from a parent level it names the parent; for |
RuleTypeCorrections
domain | string | |
rule_type | string | |
published | integer | |
corrected | integer | |
correction_rate | number | null |
RuleTypeOut
domain | string | |
slug | string | |
name | string | |
description | string | null | |
status | "active" | "deprecated" | |
schema_version | string | |
resolution | "override" | "stack" | "max" | Default resolution, for countries not in |
resolution_field | string | null | For |
countries | CountryResolution (CountryResolution[]) | Per-country overrides. |
json_schema | object | JSON Schema (2020-12) of |
display_template | string | null | Logic-less Mustache template rendering one layer's |
criteria_schema | object | null | JSON Schema of |
stakes | "standard" | "high" |
|
schema_url | string | JSON Schema for |
RuleTypesOut
domain | string | null | |
rule_types | RuleTypeOut (RuleTypeOut[]) |
RulesAcrossOut
domain | string | |
rule_type | string | |
schema_version | string | |
levels | "country" | "state" | "province" | "county" | "city"[] | The |
jurisdictionsoptional | string[] | null | The |
as_of | string (date) | null |
|
count | integer | Number of |
results | RuleOut (RuleOut[]) | One rule response per jurisdiction at those levels (or named in |
not_covered | NotCovered (NotCovered[]) | Jurisdictions skipped because |
disclaimer | string |
SourceRef
title | string | null | |
sectionoptional | string | null | Where in the source. |
url | string | The live source page or document. |
snapshot_url | string | null | Juriset's stored copy of the source as it was read, so the excerpt can be checked even after the live page changes. Redirects to a short-lived signed URL. |
excerpt | string | null | The verbatim passage the values come from. |
role | "primary" | "supporting" |
|
fieldsoptional | string[] | null | The |
TrackRecordOut
status | "no_data_yet" | "recorded" |
|
computed_through | string (date-time) | The Monday 00:00 UTC cut-off the figures are computed to. They change once a week, on the next Monday; anything after the cut-off is not counted yet. |
since | string (date-time) | null | When the first counted version was published; null while there is none. |
published | integer | Versions published through the verification gate (they carry a verification run), counting those since superseded or withdrawn. |
published_auto | integer | Of |
published_human | integer | Of |
verified | integer | Versions the verifier model checked, whether or not they were published. |
escalated | integer | Of |
audits_sampled | integer | |
audits_passed | integer | |
audits_failed | integer | |
audits_pending | integer | Sampled, not yet compared with the source. |
auto_publish_rate | Rate (Rate) | Auto-published ÷ all published. |
escalation_rate | Rate (Rate) | Escalated ÷ all verified. |
correction_rate | Rate (Rate) | Versions later corrected, rolled back or withdrawn ÷ all published. |
correction_rate_by_publisher | object | |
correction_rate_by_rule_type | RuleTypeCorrections (RuleTypeCorrections[]) | |
audit_pass_rate | Rate (Rate) | Passes ÷ audits decided (passed + failed). |
escalations_resolved | integer | |
median_hours_to_escalation_resolution | number | null | Median hours from the gate escalating a version to a person approving or rejecting it; null while none has been resolved. |
gate_figures_source | GateFiguresSource (GateFiguresSource) | Where |
recent_corrections | CorrectionOut (CorrectionOut[]) | Newest first, at most 25. Every correction and rollback is counted in |
imported_from_v1 | integer | Versions published before multi-model verification, imported from Juriset V1 after a person reviewed them. They are not in any figure above. |
imported_corrections | integer | Corrections and rollbacks recorded for imported V1 versions: out of scope for the rates, listed here so they are not hidden. |
definitions | object | How each figure is computed, in words. |
disclaimer | string |
Upcoming
jurisdiction | string | Jurisdiction slug of this layer. |
level | "country" | "state" | "province" | "county" | "city" | |
version | integer | Version number within this jurisdiction's rule. |
has_requirement | boolean | False: the jurisdiction verifiably sets no rule of this type (a cited answer, not a gap). |
effective_from | string (date) | |
effective_to | string (date) | null | The day the next published version takes effect; null while no later version is published. Derived, never stored. |
verified_at | string (date-time) | null | When the version's sources were last confirmed against the live pages: the oldest of its sources'. Null: a source was never verified. |
schema_version | string | Rule type schema version |
data | object | null | The rule's values as the sources state them, shaped by the rule type's |
citations | LayerCitation (LayerCitation[]) | Primary source first. |
review_pending | boolean | A change to this rule's sources was detected and awaits verification, human review or publication; the values shown may be outdated. |
review_pending_since | string (date-time) | null | When that change was first detected; null when nothing is pending. |
id | string | Stable version id (PRD 9.2): store it beside your decision. |
status | "current" | "upcoming" | "superseded" | "withdrawn" | This version today: |
criteria | object | null | Declarative, non-executable conditions for when the values apply (PRD 8), never evaluated by Juriset; null when unconditional. |
verification | Verification (Verification) | How this layer's version was checked before it was published. |
schema_url | string | JSON Schema for |
change_type | string | null |
|
summary | string | null | Factual one-line summary of the change. |
Verification
extractor | ModelRun (ModelRun | null) | The model run that extracted the values. |
verifier | ModelRun (ModelRun | null) | The model from another vendor that re-extracted the rule blind from the source and agreed (PRD 6.3). Null for V1-era versions, which a human reviewed instead (see |
agreement_score | number | null | Share of required fields on which extractor and verifier agreed (0-1). |
published_by | "auto" | "human" |
|
audit | "pass" | "fail" | null | Result of the random human audit of auto-published versions, when this version was sampled. |
legacyoptional | string | null | Set on versions published before multi-model verification: how they were checked instead. |
reviewed_atoptional | string (date-time) | null | When a person reviewed this version, if one did. |
VersionJurisdiction
slug | string | Stable jurisdiction slug. |
name | string | |
level | string | country, state, province, county or city. |
VersionOut
id | string | Stable version id. |
rule | RuleRef (RuleRef) | |
version | integer | 1, 2, 3… within the rule. |
effective_from | string (date) | |
effective_to | string (date) | null | The day the next published version takes effect; null while none has. |
verified_at | string (date) | null | The last day every source of this version was confirmed to still say what is published (the oldest of its sources). Null if one never was. |
status | "current" | "upcoming" | "superseded" | "withdrawn" |
|
has_requirement | boolean | False when the jurisdiction sets no requirement of this type; |
data | object | null | The values, per the schema at |
criteria | object | null | Declarative conditions for when the values apply; null when unconditional. |
citation | Citation (Citation | null) | The primary source passage. |
sources | SourceRef (SourceRef[]) | Every source passage this version rests on. |
verification | Verification (Verification) | |
schema_url | string | JSON Schema for |
disclaimer | string |