Cookbook
Juriset gives every published rule a version ID that never changes and never points at different content. Store it with each decision your software or agent makes, and you can always show which rule that decision rested on, with its source.
Examples use Python and httpx; any HTTP client works. Every endpoint is in the API reference; keys and limits are in the Quick start.
1. Record which rule a decision used
A rule response holds one entry in layers for each level that applies (federal, state, and so on), each with its own id. How layers combine is given in resolution, but the API never merges them into one value for you. Store every layer's ID, not just the top one.
import httpx
API = "https://api.juriset.dev/v1"
KEY = {"Authorization": "Bearer jrs_live_..."} # optional for today's rules
def rule_for_decision(jurisdiction: str, rule_type: str) -> dict:
"""Fetch the rule and keep what shows which rule you relied on."""
r = httpx.get(f"{API}/rules/employment/{jurisdiction}/{rule_type}", headers=KEY)
r.raise_for_status()
rule = r.json()
return {
"rule": rule, # your code reads the values from here
# Store these with the decision: every layer's version, not one merged value.
"juriset_version_ids": [layer["id"] for layer in rule["layers"]],
"as_of": rule["as_of"],
}
wa = rule_for_decision("us-wa", "minimum_wage")
print(wa["juriset_version_ids"]) # one ID per layer: federal first, then the state2. Look a past decision up again
GET /v1/versions/{id} returns exactly what was published under that ID, with its dates, the cited passage, the saved copy of the source and how it was verified. It needs no key and is not counted. A later change never alters it: the new value gets a new ID, and this one's status becomes superseded (or withdrawn).
# Months later: what exactly did that decision rely on?
for version_id in decision["juriset_version_ids"]:
v = httpx.get(f"{API}/versions/{version_id}").json() # no key needed, never billed
print(v["rule"]["jurisdiction"]["slug"], v["effective_from"], v["status"])
print(v["citation"]["url"]) # the official source
print(v["citation"]["snapshot_url"]) # the saved copy of it, as fetched
# Or ask what the rule was on the day (Developer and above):
httpx.get(f"{API}/rules/employment/us-wa/minimum_wage",
params={"as_of": "2026-03-01"}, headers=KEY)3. Hand an auditor the evidence
An audit bundle is a zip for one version: the version as served, its whole verification record, the change events around it and the cited source as fetched, each file with its SHA-256. It is not signed yet.
# Growth and Scale: one zip per version, every file hashed in manifest.json
r = httpx.get(f"{API}/versions/{version_id}/audit-bundle", headers=KEY)
open(f"{version_id}.zip", "wb").write(r.content)4. Tell an agent to cite version IDs
With the MCP server or your own tool around the API, a system-prompt passage like this keeps answers traceable:
Before you answer a question about a jurisdiction's employment or payroll rule, call the Juriset tool for that rule. Quote the value with its official source URL, and include every version ID the tool returned in your final answer under "Rules relied on". If a layer is missing or under review, say so. Never combine layers into one value, and never say how the rule applies to the user's case: that is for a qualified person.
What Juriset does not do
It reports each rule's values, dates and sources. It does not work out what a rule means for a particular employee, employer or case, and it is not legal advice. See the full statement.