API Reference v1

PUC Docket Intelligence API

Base URL https://api.pucdocs.com · 592,894 dockets · 28 state commissions

Authentication

Every /api/* endpoint requires a key. Send it as a bearer token or a query parameter. /health is open.

# bearer header (preferred)
curl https://api.pucdocs.com/api/states \
     -H "Authorization: Bearer pk_YOUR_KEY"

# or as a query param
curl "https://api.pucdocs.com/api/states?key=pk_YOUR_KEY"
Keys are issued instantly by POST /api/signup on the free tier (100 calls/day). Paid tiers are activated manually during early access.

GET/api/dockets

Search the corpus. Results are ordered newest filing first and paginated.

ParameterTypeDescription
state optionalstringTwo-letter code, case-insensitive (e.g. NY, tx). Exact match.
number optionalstringDocket number substring match (e.g. 26-018).
industry optionalstringNormalized vertical: electric, gas, water, sewer, telecom, other.
status optionalstringCase status where the source provides one (e.g. Open, CLOSED).
filed_after optionaldateYYYY-MM-DD — inclusive lower bound on filing date.
filed_before optionaldateYYYY-MM-DD — inclusive upper bound on filing date.
limit optionalintRows per page. Default 100, maximum 1000.
offset optionalintPagination offset. Default 0.
# New York interconnection matters filed in the last month
curl "https://api.pucdocs.com/api/dockets?state=NY&filed_after=2026-08-10&limit=50" \
     -H "Authorization: Bearer pk_YOUR_KEY"
{
  "total": 128,
  "limit": 50,
  "offset": 0,
  "dockets": [
    {
      "state": "NY",
      "docket_number": "26-01853",
      "title": "Joint Petition of Ventura Group Inc. and Nivo Mountain LLC…",
      "industry": "other",
      "status": null,
      "date_filed": "2026-09-08",
      "date_closed": null,
      "url": "https://documents.dps.ny.gov/public/MatterManagement/CaseMaster.aspx?MatterSeq=89804"
    }
  ]
}
total is the full match count before paging — walk the corpus with offset, up to 1000 rows per call.

GET/api/dockets/{state}/{number}

Fetch one docket by exact state and docket number. Returns 404 if not found.

curl "https://api.pucdocs.com/api/dockets/NY/26-01853" \
     -H "Authorization: Bearer pk_YOUR_KEY"

Includes row_hash — a stable per-record fingerprint, so you can detect when a docket's fields change between polls.

GET/api/states

Coverage summary: docket count and date range per state. Useful for knowing what's available before querying.

On dates: we report the filing dates the source publishes. Two states' sources do not carry a filed date for part of their docket history — South Carolina (6,127 rows) and Connecticut (8,358 rows). Those records return date_filed: null and are therefore excluded by the filed_after/filed_before filters. This is a limitation of what the source publishes, not a gap in collection; both ceilings are enforced by a test in our suite so the number cannot drift silently.

curl https://api.pucdocs.com/api/states -H "Authorization: Bearer pk_YOUR_KEY"
{ "states": [
  { "state": "ny", "dockets": 75208, "earliest": "1981-04-01", "latest": "2026-09-09" },
  { "state": "pa", "dockets": 59053, "earliest": "2015-01-05", "latest": "2026-09-08" }
] }

GET/api/industries

Industry breakdown of the corpus, optionally scoped to one state.

ParameterTypeDescription
state optionalstringRestrict the breakdown to a single state.
curl "https://api.pucdocs.com/api/industries?state=TX" \
     -H "Authorization: Bearer pk_YOUR_KEY"

POST/api/signup

Issue a free key instantly. No card, no approval step.

Body fieldTypeDescription
email requiredstringYour address — used for quota and support.
name optionalstringDisplay name.
curl -X POST https://api.pucdocs.com/api/signup \
     -H "content-type: application/json" \
     -d '{"email":"you@firm.com","name":"Your Name"}'
{ "key": "pk_...", "plan": "free",
  "quota": { "limit": 100, "period": "day", "watches": 1 } }

Plans

Free

$0
100 calls / day

Analyst

$250/mo
592,894 calls / month

Team

$900/mo
5 seats, unlimited calls

Enterprise

$592,800+/mo
Unlimited + bulk export + SLA

Errors & rate limits

StatusMeaningWhat to do
200OK—
400Bad request (e.g. signup without email)Check the field listed in error.
401Missing or invalid keySend Authorization: Bearer pk_….
403Admin-only endpointPOST /api/key and DELETE /api/key/… are admin-scoped.
404Unknown endpoint, or docket not foundCheck the path; docket lookups need exact number.
429Daily/monthly quota exhaustedResponse carries the reset time. Upgrade for a higher ceiling.
500Server errorRetry with backoff; the body carries a short error string.
Limits: quota is a request budget per key per period, not a burst rate. Free resets daily at UTC midnight; paid tiers monthly. limit is capped at 1000 rows per request — page with offset.

Health check

curl https://api.pucdocs.com/health
# {"service":"puc-dockets-api","status":"ok","rows":"...","built_at":"..."}