Get started
Quick start
Look up a verified employment or payroll rule, with the official source it was checked against, in about a minute.
What you get
Juriset is a verified, versioned record of US and Canadian employment and payroll rules. You ask for a rule in a place on a date; you get the values, the dates they apply, the official source with a verbatim excerpt and a saved copy of the page, and a version ID you can store with your own decision. The same record is served three ways:
| Surface | What it is | Start here |
|---|---|---|
| REST API | Read-only JSON at https://api.juriset.dev/v1 | This guide |
| MCP server | The same lookups as tools for AI agents, local or hosted | MCP server |
| Website | A page per rule and place, with its sources and history | Compare rules |
Juriset reports what the official sources say. It never computes an answer for a particular employee, and where federal, state or provincial rules stack it returns each level separately instead of merging them.
1. Look up a rule
No sign-up needed. Ask for California's minimum wage:
curl "https://api.juriset.dev/v1/rules/employment/us-ca/minimum_wage"
The path is always /v1/rules/{domain}/{jurisdiction}/{rule_type}. Add ?as_of=YYYY-MM-DD for the rule on another day (a paid feature). Without a key you get 60 requests an hour and 500 a day from one IP address, reads only.
2. Find the slugs
Never guess a slug. Two calls list them, and neither needs a key:
curl "https://api.juriset.dev/v1/jurisdictions?q=ontario"
curl "https://api.juriset.dev/v1/rule-types"
Jurisdictions take a name, a postal abbreviation or a slug (us for federal, us-wa, ca-ab). Rule types today are minimum_wage, overtime, paid_leave and termination_notice in employment, and social_insurance_contributions and unemployment_insurance_contributions in payroll. The coverage page shows which places have each one.
3. Get an API key
- Sign in with your email. We send a link; there is no password.
- Open Keys, name a key and create it. It is shown once, so save it in your password manager or secret store.
- Send it as a bearer token:
Terminal curl -H "Authorization: Bearer $JURISET_API_KEY" \ "https://api.juriset.dev/v1/rules/employment/us-ca/minimum_wage"
The Free plan covers today's rules, 1,000 lookups a month. History, as_of and the change feed come with Developer and up; audit bundles with Growth and up. See pricing.
Keep keys out of source code, prompts and chat. Read them from an environment variable such as JURISET_API_KEY.
4. Read the response
Every rule response has the same shape. The fields you will use first:
| Field | What it holds |
|---|---|
data | The values, in the rule type's JSON schema (schema_url): amounts, units, who it applies to, exceptions. |
effective_from, effective_to | The dates this version applies. |
citation | The official source: URL, section, a verbatim excerpt and snapshot_url, the copy of the page as it was checked. |
verification | How the version was checked: the extracting and verifying models, or the human who reviewed it. |
id | The version ID, rv_…. It never changes and never points at different values. |
layers | Every level of government that applies, each with its own values, source and version ID. How they combine is in resolution; Juriset never merges them for you. |
upcoming | Published versions that take effect later, such as next January's rate. |
coverage, review_pending | What is not covered (for example city rates) and whether a source change is waiting for review. Gaps are stated, never hidden. |
Every field of every endpoint is in the API reference, generated from the OpenAPI document.
5. Keep the version ID
Store the id of each rule your software relied on next to the decision it made: the payslip, the termination letter, the schedule. Later, GET /v1/versions/{id} returns exactly what was published under that ID, with its source, so you can show which rule a decision rested on. The cookbook has worked examples, including audit bundles for an auditor.
Limits and errors
- Rate limits. Past a limit the API answers
429, and theRateLimit-RemainingandRateLimit-Resetheaders say when to try again. - Errors are JSON,
{"error": {"code": "…", "message": "…", "docs_url": "…"}}, with the HTTP status that fits. Branch oncode, never on the message. Every code is on the errors page. - Caching. Every read has an
ETag. Send it back asIf-None-Matchand you get304while nothing has changed. - Stability. Changes to
/v1only ever add. A breaking change would be/v2, with/v1still served. - Status. Outages and maintenance are on the status page.
Next steps
- Build with AI: have Claude Code, Codex or Cursor wire Juriset into your product.
- MCP server: give an agent the rules as tools, with no code.
- Track record: how often values auto-publish, escalate and get corrected; also at
GET /v1/track-record, no key needed. - Not legal advice: Informational only. Not legal advice. Verify with the cited source. Every response carries it in a
Juriset-Disclaimerheader; use of the API is covered by the terms.
Use with AI
Paste this into Claude Code, Codex, Cursor or any coding agent. It points the agent at this guide and at the machine-readable docs, so it works from Juriset's own descriptions rather than from memory.
Read https://juriset.dev/docs/quick-start and https://juriset.dev/llms.txt. Then add a small client for the Juriset API to this project: - base URL https://api.juriset.dev/v1, the key from the JURISET_API_KEY environment variable (send no header when it is unset) - one function that returns a rule for a domain, jurisdiction slug, rule type and optional as_of date - keep the response's version id (rv_…) and citation with every result, and log both where we act on a rule - branch on error.code, retry 429 after RateLimit-Reset, and never invent a slug: look it up with /v1/jurisdictions Do not hardcode any wage, rate or threshold, and do not merge layers into one value.
Informational only. Not legal advice. Verify with the cited source.