Error codes

When a read, download, or public request fails, Law1 may show a short code. Quote that code when you write to support. This page is the catalog: meaning, and what to do. It is not a runbook.

In-app screens (as they ship) may deep-link here as /help/error-codes#CODE. You can also open Contact with a prefill, for example /contact?category=access&code=BODY_NOT_FOUND. Pick Access/errors for product failures and put the code in the error-code field. Those fields stay editable.

Org view and PDF pools that run out are a block with a buy-credits or upgrade path for Owners — see Limits and errors and Billing and plans. A view block is the named code VIEW_EXHAUSTED; the per-user daily caps are BODY_DAILY_LIMIT and PDF_DAILY_LIMIT.

MCP codes are listed here and the surface is documented on MCP and agents. Research API codes are listed here even though that Help page is not published yet.

Judgement text

BODY_NOT_FOUND {#BODY_NOT_FOUND}

The judgement text is missing, or it is outside this org’s content grants. Law1 does not tell you which.

What to do: Search again or open another listing. If you expected access, quote this code to support. Do not treat it as a site outage.

BODY_S3_UNAVAILABLE {#BODY_S3_UNAVAILABLE}

We could not fetch the judgement text from object storage (timeout or store outage). This is not “the case does not exist.”

What to do: Wait and retry. If it keeps failing, contact support with this code.

BODY_S3_FORBIDDEN {#BODY_S3_FORBIDDEN}

Our storage credentials failed. This is not your login or your org’s plan.

What to do: Retry later. If it persists, contact support — we need to fix configuration.

BODY_CACHE_REINIT {#BODY_CACHE_REINIT}

A local text cache was rebuilt during the request. This is usually transparent; you may never see it.

What to do: If you got the text, ignore it. If the read failed, retry once, then quote this code.

BODY_INTERNAL {#BODY_INTERNAL}

An unexpected server bug on the judgement-text path.

What to do: Retry. If it persists, contact support with this code.

BODY_DAILY_LIMIT {#BODY_DAILY_LIMIT}

This User already opened 80 judgement bodies today (India calendar day). The cap is per person and shared by the app, the Research API, and agents, and it applies even when the org would not spend a view unit on that case.

What to do: Wait until the next India calendar day. Opening the same judgement again does not lift the cap.

VIEW_EXHAUSTED {#VIEW_EXHAUSTED}

This org has used its included judgement views for the period and has no view credits left. Reading a case body is blocked; search results still show.

What to do: Wait for the period to reset, or have an Owner buy view credits or upgrade the plan on Billing and plans. This block is per org; your other orgs are unaffected.

Original PDFs

PDF_NOT_FOUND {#PDF_NOT_FOUND}

There is no original PDF object for this judgement.

What to do: Use the text body if you have it. Quote this code if you expected a PDF.

PDF_WITHHELD {#PDF_WITHHELD}

The original PDF was withdrawn (statutory redaction). The text body and URL can still exist.

What to do: Read the text. Do not retry the download expecting the file to return.

PDF_S3_UNAVAILABLE {#PDF_S3_UNAVAILABLE}

We could not fetch the original PDF from object storage.

What to do: Retry later. Quote this code if it persists. A failed fetch does not spend a PDF unit.

PDF_S3_FORBIDDEN {#PDF_S3_FORBIDDEN}

Storage permission failed for the PDF object. This is not your account.

What to do: Retry later. If it persists, contact support. A failed fetch does not spend a PDF unit.

PDF_STAMP_FAILED {#PDF_STAMP_FAILED}

Watermarking the PDF failed after we fetched it. We did not spend a PDF unit.

What to do: Retry. Quote this code if it keeps failing.

PDF_STAMP_BUSY {#PDF_STAMP_BUSY}

All PDF watermark workers are busy.

What to do: Wait (the response may include Retry-After) and retry. We did not spend a PDF unit.

PDF_DAILY_LIMIT {#PDF_DAILY_LIMIT}

This User already downloaded 20 original PDFs today (India calendar day). The cap applies even when the org would not spend another PDF unit for that file.

What to do: Wait until the next India calendar day. An Owner cannot buy you out of this cap.

PDF_INTERNAL {#PDF_INTERNAL}

An unexpected server bug on the PDF path.

What to do: Retry. If it persists, contact support with this code.

These codes appear on App JSON (GET /api/issues). The body is { code, message } only — no field map.

UNAUTHORIZED {#UNAUTHORIZED}

You are signed out. Issue search does not run without a session.

What to do: Log in, then try again.

FORBIDDEN {#FORBIDDEN}

You are signed in but have no org (or no active org). Search is org-gated.

What to do: Create or join an org on Start, then retry.

VALIDATION_FAILED {#VALIDATION_FAILED}

The query used an unknown key, a bad sort or Search-in value, or mixed in=identity with field names. Search JSON does not strip junk keys. Contact form posts may also use this code and include a fields map; search does not.

What to do: Drop extra keys. Use sort=newest or sort=oldest, or omit sort for relevance. Search-in values must be the allowlisted fields, or in=identity alone.

NOT_FOUND {#NOT_FOUND}

page is outside 1–20. Law1 does not read search results deeper than that.

What to do: Stay on pages 1–20.

Rate limits and bot checks

BOT_RATE_LIMIT {#BOT_RATE_LIMIT}

Too many catalogue, search, body, or PDF requests in a short window (visitor or org burst). Seats do not enlarge the org bucket. Research API and MCP share the same org bucket.

What to do: Wait (Retry-After) and continue. Do not retry in a tight loop.

BOT_CHALLENGE_LIMIT {#BOT_CHALLENGE_LIMIT}

Too many browser-verification challenges for this network in a short time.

What to do: Wait and try again. Shared office networks can hit this together.

BOT_MINT_DENIED {#BOT_MINT_DENIED}

This network has used up the day’s browser-verification attempts. This is not a sign-in failure.

What to do: Wait until that window resets (about a day), or try from another network.

BOT_UNAVAILABLE {#BOT_UNAVAILABLE}

Abuse-protection storage is down. Some reads and public POSTs (including Contact) fail closed.

What to do: Try again later.

UNAVAILABLE {#UNAVAILABLE}

A required service for this request is down or not configured (for example search). This is not a grant miss.

What to do: Try again later. Quote this code if it persists.

Research API

These codes appear on the HTTP Research API (x-api-key). The Research API Help section stays draft until that surface ships.

RESEARCH_API_KEY_INVALID {#RESEARCH_API_KEY_INVALID}

The key is missing, malformed, unknown, disabled, or expired.

What to do: Check the x-api-key header. Mint a new key if yours expired. Do not send cookies or a Bearer token.

RESEARCH_API_FORBIDDEN {#RESEARCH_API_FORBIDDEN}

The key is valid, but the User is not a member of the pinned org, the org is not Basic or Pro (including a lapse to Free), or the key is pinned to another org. Trial cannot use this API.

What to do: Fix membership or plan. Keys stay after a lapse; they work again when the org is paid.

MCP and agents

These codes appear when connecting an official MCP agent — see MCP and agents. Agents reuse judgement-text, burst, and meter codes from this page. They do not use RESEARCH_API_*.

MCP_FORBIDDEN {#MCP_FORBIDDEN}

The agent token is valid, but the User is blocked, the User is not a member, the org is not Trial, Basic, or Pro (including a lapse to Free), the org is frozen, or the grant is pinned to another org.

What to do: Restore access: unblock the User, restore membership, unfreeze the org, or upgrade the plan. The grant stays connected, and tools work again without re-consent while the grant is still live.

MCP_GRANT_LIMIT {#MCP_GRANT_LIMIT}

This User already has three live MCP clients on this org. A fourth is refused. We do not revoke the oldest automatically.

What to do: Revoke an unused agent on Account (your grants) or Connected agents (Owners), then consent again.