Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.docketlayer.ai/llms.txt

Use this file to discover all available pages before exploring further.

DocketLayer uses standard HTTP status codes. The core principle: you are never charged for a failed query. Charges apply only to successful 200 responses.

Error format

All errors return JSON with this structure:
{
  "meta": {
    "request_id": "req_01jt7y4kx0",
    "queried_at": "2026-04-29T12:00:00Z"
  },
  "error": {
    "code": "court_not_covered",
    "message": "Court code 'xyz' is not recognized.",
    "documentation_url": "https://docketlayer.ai/reference/errors#court_not_covered"
  }
}

Error codes

CodeHTTPMeaningCharged
200200Successful queryYes
payment_missing402No x402-payment header presentNo
payment_invalid402Payment verification failedNo
missing_required_parameter400Required field absentNo
invalid_parameter_format400Field present but malformedNo
invalid_case_id400case_id format doesn’t match courtNo
invalid_context400context not basic or fullNo
invalid_language400language not en or frNo
last_checked_in_future400last_checked is a future timestampNo
invalid_batch_request400Batch body missing or malformedNo
case_not_found404Case not in covered courtsNo
endpoint_not_found404Unknown endpointNo
court_not_covered422Court not recognized or planned-onlyNo
rate_limit_exceeded429Per-wallet rate limit hitNo
batch_too_large413Batch exceeds 50 queriesNo
court_unavailable503Source court system temporarily unreachableNo
query_timeout504Query timed outNo
internal_error500Internal server errorNo

Handling errors

response = client.get("https://api.docketlayer.ai/v2/case", params={...})

if response.status_code == 200:
    data = response.json()
    # Process docket data

elif response.status_code == 402:
    # Payment failed
    # Check: wallet balance, x402 configuration, Solana network status

elif response.status_code == 404:
    err = response.json()["error"]
    if err["code"] == "case_not_found":
        # The case was not found — DocketLayer has enqueued it for scraping
        # Retry in a few minutes
        pass

elif response.status_code == 422:
    # Court not covered
    # Check /v2/status for current coverage list

elif response.status_code == 429:
    # Rate limited — 60 req/min, 10,000 req/day per wallet
    retry_after = response.json()["error"].get("details", {}).get("retry_after")
    time.sleep(retry_after or 60)

elif response.status_code == 503:
    # Upstream court system temporarily unavailable
    # Retry with exponential backoff — check /v2/status for current system state

Rate limits

LimitValue
Requests per minute60 per wallet
Requests per day10,000 per wallet
When a rate limit is exceeded, the response body includes a retry_after value in seconds inside error.details. For portfolios requiring more than 10,000 daily queries, distribute load across multiple funded wallets.

Case not found — auto-scrape

When a 404 case_not_found is returned, DocketLayer automatically enqueues the case for its next scrape cycle. Retrying the same query a few minutes later will typically succeed once the normalization service has populated the case.

Source court availability

DocketLayer’s data depends on source court availability. During maintenance windows, affected courts return 503 responses. The /v2/status endpoint reflects known maintenance windows and is the best source for current system state.
curl https://api.docketlayer.ai/v2/status

Common mistakes

Wrong court code — Use the court code exactly as listed in /v2/status. Common examples: nysd, deb, cand. Do not include .uscourts.gov or any other suffix. Wrong case ID format — Each court’s expected case ID format is in /v2/status under case_id_format. For US federal courts the pattern is division:year-type-number — e.g. 1:24-cv-01234. See the case ID format guide. Depleted wallet — A $0 USDC balance causes all queries to return 402. Monitor your wallet balance and refund before it runs dry. Uncovered court — Querying a court not in the current coverage list returns 422. Always check /v2/status first. Future last_checked — A last_checked timestamp later than the current time returns 400. This can happen if your system clock is ahead of UTC.