API Reference
The Docket Room REST API gives programmatic access to bills, legislators, and search. It is available on the Team and Enterprise plans. Generate and manage keys in Settings → API.
Base URL
https://docketroom.ai/api/v1Authentication
Authenticate every request with a Bearer token in the Authorization header. Keys are prefixed cvts_ and are shown only once at creation — store them securely.
Authorization: Bearer cvts_your_key_hereEach key is granted scopes (bills, legislators, search, regulations, org); a request to an endpoint outside the key's scopes returns 403. Hearings ride under the bills scope.
Rate limits
Requests are limited per key on a rolling one-hour window (default 1,000/hour). Over the limit returns 429 with a Retry-After header. Every response carries:
X-RateLimit-Limit— your hourly capX-RateLimit-Remaining— requests left in the windowX-RateLimit-Reset— ISO timestamp when the window resets
Pagination
List endpoints accept page and limit and return a pagination object with page, limit, total, and has_more.
Endpoints
/v1/billsscope: billsList bills, most recently acted first. Includes plain-language summaries.
Parameters
state | string | Two-letter state code (e.g. CA), or US for federal. |
status | string | Filter by canonical status (e.g. introduced, in_committee). |
tag | string | Filter by issue tag (e.g. Healthcare). |
sponsor | string | Sponsor name substring (e.g. Wiener). |
committee | string | Committee name substring (e.g. Judiciary) — bills currently before that committee. |
introduced_after | string | ISO date — bills introduced on/after this date. |
introduced_before | string | ISO date — bills introduced on/before this date. |
last_action_after | string | ISO date — bills with legislative activity since this date. |
last_action_before | string | ISO date — upper bound on last activity. |
page | integer | Page number (default 1). |
limit | integer | Results per page, 1–100 (default 25). |
Example request
curl "https://docketroom.ai/api/v1/bills?state=CA&limit=2" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": [
{
"id": "…",
"number": "AB-1",
"state": "CA",
"title": "…",
"status": "in_committee",
"last_action_at": "2026-06-25T…",
"summaries": [{ "id": "…", "level": "short", "content": "…" }]
}
],
"pagination": { "page": 1, "limit": 2, "total": 1234, "has_more": true }
}/v1/bills/{id}scope: billsRetrieve a single bill with summaries, stage predictions, related hearings, and committee history (current_committee + committees[]).
Parameters
idrequired | string | The bill's Docket Room id (path parameter). |
Example request
curl "https://docketroom.ai/api/v1/bills/BILL_ID" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": {
"id": "…",
"number": "HR-1",
"summaries": [ … ],
"predictions": [{ "stage": "passed_chamber", "probability": 0.42, "explanation": "…" }],
"hearings": [{ "id": "…", "title": "…", "hearing_date": "…", "relationship": "primary" }]
}
}/v1/changesscope: billsMonitoring feed: field-level bill changes (new actions, status changes, new bills, sponsor changes) detected by the nightly ingest, newest first.
Parameters
since | string | ISO date, e.g. 2026-07-01. Default: 7 days back. Max window: 90 days. |
state | string | Two-letter state code (US for federal). |
change_type | string | action_update, status_change, new_bill, cosponsor_change, sponsor_change, or amendment (substantive text change between versions). |
page | integer | Page number (default 1). |
limit | integer | Results per page, 1–100 (default 25). |
Example request
curl "https://docketroom.ai/api/v1/changes?state=CA&change_type=status_change&since=2026-07-01" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": [
{
"bill_id": "…",
"bill_number": "AB-1",
"state": "CA",
"bill_title": "…",
"change_type": "status_change",
"field": "status",
"old_value": "passed_chamber",
"new_value": "signed",
"detected_at": "2026-07-12T…",
"url": "https://docketroom.ai/bills/…"
}
],
"pagination": { "page": 1, "limit": 25, "total": 312, "has_more": true }
}/v1/bills/{id}/changesscope: billsOne bill's detected change history, newest first (same rows as /v1/changes).
Parameters
idrequired | string | The bill's Docket Room id (path parameter). |
since | string | ISO date. Default: 7 days back. Max window: 90 days. |
page | integer | Page number (default 1). |
limit | integer | Results per page, 1–100 (default 25). |
Example request
curl "https://docketroom.ai/api/v1/bills/BILL_ID/changes?since=2026-06-15" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": [ { "change_type": "action_update", "new_value": "…", "detected_at": "…" } ],
"pagination": { "page": 1, "limit": 25, "total": 8, "has_more": false }
}/v1/legislatorsscope: legislatorsList in-office legislators.
Parameters
state | string | Two-letter state code. |
chamber | string | Chamber (e.g. upper, lower, house, senate). |
party | string | Party affiliation — full name or short code (Democratic or D, Republican or R). |
q | string | Name search (matches full name). |
page | integer | Page number (default 1). |
limit | integer | Results per page, 1–100 (default 50). |
Example request
curl "https://docketroom.ai/api/v1/legislators?state=NY&party=D" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": [ { "id": "…", "full_name": "…", "state": "NY", "chamber": "…", "party": "Democratic" } ],
"pagination": { "page": 1, "limit": 50, "total": 213, "has_more": true }
}/v1/bills/{id}/versionsscope: billsStored text versions in chronological order (1 = introduced). Version tracking covers federal bills nightly plus archived state versions.
Parameters
idrequired | string | The bill's Docket Room id (path parameter). |
Example request
curl "https://docketroom.ai/api/v1/bills/BILL_ID/versions" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": [
{ "version_num": 1, "version_name": "Introduced in Senate", "version_date": "…", "has_text": true, "chars": 10819, "source_url": "https://www.congress.gov/…" },
{ "version_num": 3, "version_name": "Engrossed in Senate", "version_date": "…", "has_text": true, "chars": 18777, "source_url": "…" }
]
}/v1/bills/{id}/versions/comparescope: billsStructured amendment analysis between two versions (default: the latest pair): added/removed/modified changes classified substantive vs technical, categorized (penalty, scope, enforcement, effective_date, coverage, definitions, appropriations), with verbatim quotes re-verified against the correct version's text. First call generates (~1 min); cached afterward.
Parameters
idrequired | string | The bill's Docket Room id (path parameter). |
from | integer | Older version_num (default: the one before 'to'). |
to | integer | Newer version_num (default: latest). |
refresh | string | true → regenerate even if cached. |
Example request
curl "https://docketroom.ai/api/v1/bills/BILL_ID/versions/compare" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": {
"from": { "num": 2, "name": "Reported to Senate" }, "to": { "num": 3, "name": "Engrossed in Senate" },
"mechanical": { "added_spans": 2, "removed_spans": 2, "truncated": false, "identical": false },
"quote_verification": { "verified": 4, "unverified": 0 },
"analysis": {
"summary": "…", "materially_substantive": true,
"changes": [ { "side": "removed", "category": "substantive", "kind": "scope", "description": "…", "significance": "…", "quote": "…", "verified": true } ]
}
}
}/v1/bills/{id}/analysisscope: billsStructured AI analysis: covered entities, requirements/prohibitions/exemptions/penalties, effective dates, enforcement agencies, ambiguous language. Every item carries a verbatim quote re-verified against the bill text (verified=true → explicit bill language; false → model interpretation). First call generates (~1 min); cached afterward.
Parameters
idrequired | string | The bill's Docket Room id (path parameter). |
refresh | string | true → regenerate even if cached. |
Example request
curl "https://docketroom.ai/api/v1/bills/BILL_ID/analysis" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": {
"bill_id": "…",
"model_version": "…",
"text_coverage": { "has_text": true, "total_chars": 12189, "analyzed_chars": 12189, "truncated": false },
"quote_verification": { "verified": 30, "unverified": 0 },
"analysis": {
"plain_summary": "…",
"covered_entities": [ { "entity": "…", "quote": "…", "section": "22626(a)", "verified": true } ],
"provisions": [ { "kind": "prohibition", "description": "…", "quote": "…", "section": "…", "verified": true } ],
"effective_dates": [ … ], "agencies": [ … ], "ambiguities": [ … ],
"confidence": "high", "notes": null
},
"disclaimer": "AI-generated analysis, not legal advice. …"
}
}/v1/bills/{id}/textscope: billsThe bill's original legislative text as ingested (not a summary), chunked via offset/max_chars for large bills.
Parameters
idrequired | string | The bill's Docket Room id (path parameter). |
offset | integer | Character offset for chunking (default 0). |
max_chars | integer | Chunk size, 1,000–500,000 (default 100,000). |
Example request
curl "https://docketroom.ai/api/v1/bills/BILL_ID/text?max_chars=5000" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": {
"bill_id": "…",
"has_text": true,
"text": "SECTION 1. …",
"offset": 0,
"total_chars": 48210,
"truncated": true,
"source_text_url": "https://…"
}
}/v1/bills/{id}/cosponsorsscope: billsThe full cosponsor list (bill detail carries only the count). legislator_id links into /v1/legislators when resolved.
Parameters
idrequired | string | The bill's Docket Room id (path parameter). |
page | integer | Page number (default 1). |
limit | integer | Results per page, 1–100 (default 50). |
Example request
curl "https://docketroom.ai/api/v1/bills/BILL_ID/cosponsors" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": [ { "name": "…", "party": "D", "state": "CA", "legislator_id": "…", "cosponsor_date": "…" } ],
"pagination": { "page": 1, "limit": 50, "total": 42, "has_more": false }
}/v1/bills/{id}/relatedscope: billsEmbedding-similar bills — companions, copied/model legislation, and same-topic bills in other states, most similar first.
Parameters
idrequired | string | The bill's Docket Room id (path parameter). |
exclude_same_state | string | true → only other jurisdictions (multistate survey). |
limit | integer | Results, 1–20 (default 10). |
Example request
curl "https://docketroom.ai/api/v1/bills/BILL_ID/related?exclude_same_state=true" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": [ { "bill_id": "…", "similarity": 0.87, "number": "SB 12", "state": "WA", "title": "…", "url": "…" } ]
}/v1/bills/{id}/momentumscope: billsIs this bill gaining or losing momentum? A deterministic score over detected activity in the trailing 7 days — every point traceable to a named signal (status changes ×5, amendments ×4, upcoming hearings ×3, sponsor changes ×2, actions ×1, capped per type) — plus direction vs the bill's own prior 30-day rate, a fast-mover flag, and the bill's prediction history (probability snapshots over time with mechanically computed trend). Momentum is an activity tally, not an outcome guarantee.
Parameters
idrequired | string | The bill's Docket Room id (path parameter). |
Example request
curl "https://docketroom.ai/api/v1/bills/BILL_ID/momentum" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": {
"momentum": { "score_7d": 20, "score_prior_23d": 1, "classification": "surging", "direction": "accelerating", "fast_mover": true },
"signals": [ { "type": "status_change", "count": 1, "weight": 5, "points": 5 } ],
"prediction_history": [ { "stage": "…", "probability": 0.42, "trend_direction": "up", "model_version": "…", "computed_at": "…" } ],
"disclaimer": "…"
}
}/v1/fast-moversscope: billsBills that require immediate attention: the most detected legislative activity in the window, highest momentum first, each with the per-signal breakdown behind its score.
Parameters
state | string | Two-letter state code (US for Congress). |
days | integer | Activity window, 1–30 (default 7). |
limit | integer | Results, 1–50 (default 25). |
Example request
curl "https://docketroom.ai/api/v1/fast-movers?state=MA&days=7" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": [ { "id": "…", "number": "S 1447", "state": "MA", "momentum_score": 20, "classification": "surging",
"breakdown": { "status_changes": 1, "amendments": 0, "action_updates": 9, "sponsor_changes": 3, "upcoming_hearings": 0 } } ],
"window_days": 7
}/v1/legislators/{id}scope: legislatorsOne legislator's full profile: contact + office details, committee memberships with leadership roles (federal members carry full assignments from the public-domain congress-legislators dataset; state memberships pending a source), sponsorship history with derived issue areas, and recent sponsored bills.
Parameters
idrequired | string | The legislator's Docket Room id (path parameter). |
Example request
curl "https://docketroom.ai/api/v1/legislators/LEGISLATOR_ID" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": {
"name": "John Boozman", "party": "Republican", "state": "Arkansas", "email": "…", "office_address": "…",
"committees": [ { "committee_name": "Senate Committee on Agriculture…", "role": "Chairman", "member_rank": 1 } ],
"sponsorship": { "sponsored_total": 19, "cosponsored_total": 239,
"issue_areas": [ { "issue": "agriculture", "bills": 5 } ], "recent_sponsored": [ … ] },
"votes_recorded": 0
}
}/v1/legislators/on-topicscope: legislatorsWhich lawmakers are active on a policy topic: sponsors of topic-matching bills ranked by how many they sponsor, each with sample bills.
Parameters
topicrequired | string | Policy topic keywords, e.g. 'artificial intelligence'. |
state | string | Two-letter state code (US for Congress). |
limit | integer | Results, 1–30 (default 15). |
Example request
curl "https://docketroom.ai/api/v1/legislators/on-topic?topic=artificial%20intelligence" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": [ { "id": "…", "name": "…", "party": "D", "state": "MN", "sponsored_matching": 9,
"sample_bills": [ { "id": "…", "number": "SF 1886", "url": "…" } ] } ],
"bills_matched": 300
}/v1/bills/{id}/stakeholdersscope: billsThe bill's stakeholder map: a factual assembly (sponsor + cosponsor party split, committees of jurisdiction with federal rosters and leadership, roll-call party splits, hearing witnesses with organizations, enforcement agencies from the bill's analysis) plus an AI likely-supporters/opponents/swing synthesis grounded only in that assembly. skip_analysis=true returns the facts alone.
Parameters
idrequired | string | The bill's Docket Room id (path parameter). |
skip_analysis | string | true → facts only, no AI synthesis. |
refresh | string | true → regenerate the synthesis. |
Example request
curl "https://docketroom.ai/api/v1/bills/BILL_ID/stakeholders" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": {
"assembly": {
"sponsor": { "name": "…", "party": "R" },
"cosponsors": { "total": 12, "by_party": { "D": 10, "R": 2 }, "bipartisan": true },
"committees": [ { "name": "…", "members": [ { "name": "…", "role": "Chairman" } ] } ],
"roll_calls": [ { "vote_date": "…", "yes": 220, "no": 210, "by_party": { … } } ],
"witnesses": [ { "name": "…", "organization": "…" } ],
"agencies": [ { "name": "FTC", "role": "enforcement", "verified": true } ]
},
"analysis": { "summary": "…", "likely_supporters": [ … ], "likely_opponents": [ … ], "confidence": "medium" },
"disclaimer": "…"
}
}/v1/comparescope: billsMultistate comparison matrix: how different jurisdictions regulate the same subject. Pass bill_ids for specific bills, or topic (+ optional states) to survey one best-matching bill per state. Returns a quote-verified per-jurisdiction compliance matrix (scope, obligations, enforcement, penalties, exemptions, effective dates), a comparative synthesis (normalized terminology, strictest/most-lenient, conflicts, outliers, common trends), and an embedding-based model-legislation report. First uncached call can take ~1–2 min.
Parameters
bill_ids | string | Comma-separated Docket Room bill ids (2–8). Mutually exclusive with topic. |
topic | string | Topic to survey across jurisdictions, e.g. 'ai deepfakes in elections'. |
states | string | With topic: comma-separated two-letter codes to survey (US for Congress). |
max_states | integer | With topic and no states: jurisdiction cap, 2–8 (default 6). |
refresh | string | true → force re-synthesis even if cached. |
Example request
curl "https://docketroom.ai/api/v1/compare?topic=ai%20deepfakes%20in%20elections&states=CA,TX,WA" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": {
"mode": "topic",
"jurisdictions": ["CA AB 1", "TX HB 2", "WA SB 3"],
"matrix": [
{
"jurisdiction": "CA AB 1",
"scope": [ { "description": "…", "quote": "…", "verified": true, "section": "SEC. 2" } ],
"obligations": [ … ], "enforcement": [ … ], "penalties": [ … ],
"exemptions": [ … ], "effective_dates": [ … ]
}
],
"comparison": {
"overview": "…",
"normalized_terminology": [ { "concept": "…", "by_jurisdiction": { "CA AB 1": "…" } } ],
"strictest": { "jurisdiction": "CA AB 1", "reasoning": "…" },
"conflicts": [ … ], "outliers": [ … ], "common_trends": [ … ]
},
"model_legislation": { "detected": false, "threshold": 0.9, "pairs": [ … ], "external_spread": [ … ] }
}
}/v1/hearingsscope: billsHearings calendar across all 50 states + Congress. Defaults to upcoming (soonest first); pass from/to for a historical window.
Parameters
state | string | Two-letter state code (US for Congress). |
bill_id | string | Only hearings linked to this bill. |
from | string | ISO date lower bound (default: today). |
to | string | ISO date upper bound. |
page | integer | Page number (default 1). |
limit | integer | Results per page, 1–100 (default 25). |
Example request
curl "https://docketroom.ai/api/v1/hearings?state=OH&limit=3" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": [
{
"id": "…",
"state": "OH",
"committee": "Senate Finance",
"title": "…",
"hearing_date": "2026-07-16T…",
"status": "scheduled",
"url": "https://docketroom.ai/hearings/…"
}
],
"pagination": { "page": 1, "limit": 3, "total": 12, "has_more": true }
}/v1/webhooksscope: orgThe team's outbound webhook subscriptions with delivery health. Each active subscription receives one HMAC-signed POST per day (after the nightly ingest) containing the bill changes matching its filter — empty batches are never sent; 10 consecutive failures auto-disable. Create/delete via the MCP tools: create_webhook returns the signing secret ONCE and requires the endpoint to answer a verification ping; delete_webhook stops delivery. Verify payloads with X-DocketRoom-Signature = 'sha256=' + HMAC-SHA256(secret, raw body).
Example request
curl "https://docketroom.ai/api/v1/webhooks" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": [ { "id": "…", "url": "https://hooks.slack.com/…", "materiality": "material", "states": [ "CA" ],
"active": true, "consecutive_failures": 0, "last_delivery_at": "…", "last_status": 200 } ]
}/v1/reportsscope: billsComposed legislative reports, audience-tailored: executive_briefing (what a decision-maker must know), issue_report (the landscape on a topic), or risk_summary (leadership-ready exposure ranking). Subject = bill_ids or a topic survey. Returns the structured report AND a markdown rendering; bill references are validated against the source appendix. First uncached call generates (~30–60s).
Parameters
typerequired | string | executive_briefing | issue_report | risk_summary. |
bill_ids | string | Comma-separated Docket Room bill ids (up to 8 used). Mutually exclusive with topic. |
topic | string | Survey a topic instead of naming bills. |
audience | string | Who this is for, e.g. 'board of directors', 'general counsel'. |
state | string | With topic: limit the survey to one state. |
refresh | string | true → force regeneration. |
Example request
curl "https://docketroom.ai/api/v1/reports?type=risk_summary&topic=ai%20chatbot%20disclosure&audience=general%20counsel" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": {
"report": {
"title": "…", "executive_summary": "…",
"sections": [ { "heading": "…", "body": "…", "bill_refs": [ "…" ] } ],
"key_risks": [ { "risk": "…", "bill_refs": [ "…" ] } ],
"recommended_actions": [ "…" ], "confidence": "medium"
},
"markdown": "# …",
"appendix": [ { "bill_id": "…", "number": "AB 1609", "state": "CA", "url": "…" } ]
}
}/v1/activity-summaryscope: billsWhat changed since yesterday, Friday, or last week: the change feed grouped by bill, material developments (status changes, substantive amendments, hearing events, new bills) separated from routine procedural activity, and the bills needing attention ranked first. narrative=true adds an AI catch-up briefing composed strictly over the digest.
Parameters
since | string | ISO date (default: 1 day back, max 90 days). |
state | string | Two-letter state code (US for Congress). |
narrative | string | true → add an AI briefing over the digest. |
limit | integer | Max priority bills, 1–50 (default 20). |
Example request
curl "https://docketroom.ai/api/v1/activity-summary?state=MA&since=2026-07-13&narrative=true" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": {
"totals": { "bills_affected": 998, "material_changes": 3, "procedural_changes": 997, "by_type": { … } },
"priorities": [ { "number": "H 5109", "state": "MA", "priority_score": 5,
"material_changes": [ { "change_type": "status_change", "description": "…" } ],
"procedural_count": 1 } ],
"procedural_only_bills": 995,
"narrative": "…"
}
}/v1/hearings/{id}scope: billsOne hearing with full detail: committee, date, location, status, access details (video/stream + transcript links), listed witnesses, and the bills on its agenda. Hearing scheduled/rescheduled/cancelled events also flow through /v1/changes (change_type=hearing) and tracked-bill alerts.
Parameters
idrequired | string | The hearing's Docket Room id (path parameter). |
Example request
curl "https://docketroom.ai/api/v1/hearings/HEARING_ID" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": {
"id": "…", "committee": "Senate Finance", "hearing_date": "…", "location": "…", "status": "scheduled",
"video_urls": [ "…" ], "transcript_url": null,
"witnesses": [ { "name": "…", "organization": "…" } ],
"bills": [ { "id": "…", "number": "HB 1", "status": "referred_to_committee", "url": "…" } ]
}
}/v1/hearings/{id}/briefscope: billsAI hearing-preparation brief: overview, logistics, per-bill agenda with key provisions, likely themes and questions, witnesses to watch, and prep recommendations — composed from the hearing's ingested notice, its linked bills, and their quote-verified analyses. The envelope reports how many agenda bills carried full analysis vs summary-only, so thin inputs are visible. First uncached call generates (~1 min).
Parameters
idrequired | string | The hearing's Docket Room id (path parameter). |
refresh | string | true → force regeneration. |
Example request
curl "https://docketroom.ai/api/v1/hearings/HEARING_ID/brief" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": {
"inputs": { "linked_bills": 6, "bills_with_analysis": 2, "bills_summary_only": 4, "witnesses": 3 },
"brief": {
"overview": "…", "logistics": "…",
"agenda": [ { "bill_id": "…", "bill_number": "HB 1", "what_it_does": "…", "key_provisions": [ "…" ], "watch_for": "…" } ],
"likely_themes": [ "…" ], "likely_questions": [ "…" ],
"witnesses_to_watch": [ { "name": "…", "why": "…" } ],
"preparation_recommendations": [ "…" ], "confidence": "medium"
},
"disclaimer": "…"
}
}/v1/regulationsscope: regulationsFederal rulemaking (Federal Register): keyword search, agency filter, and open_for_comment=true for rules still accepting public comments (most urgent deadline first).
Parameters
q | string | Keyword phrase (full-text search). |
agency | string | Agency name substring, e.g. 'Environmental Protection'. |
tag | string | Filter by issue tag. |
open_for_comment | string | true → only rules whose comment window is open. |
page | integer | Page number (default 1). |
limit | integer | Results per page, 1–100 (default 25). |
Example request
curl "https://docketroom.ai/api/v1/regulations?q=artificial%20intelligence&open_for_comment=true" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": [
{
"id": "fedreg-2026-…",
"document_number": "2026-…",
"title": "…",
"agency": "…",
"comments_close_on": "2026-08-01",
"comment_open": true,
"url": "https://docketroom.ai/regulations/…"
}
],
"pagination": { "page": 1, "limit": 25, "total": 7, "has_more": false }
}/v1/regulations/{id}scope: regulationsOne regulation with full detail (abstract, agencies, comment deadline, Federal Register link) and its related bills.
Parameters
idrequired | string | Docket Room id (fedreg-…) or a bare Federal Register document number. |
Example request
curl "https://docketroom.ai/api/v1/regulations/fedreg-2026-01234" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": {
"id": "fedreg-2026-01234",
"title": "…",
"abstract": "…",
"agencies": ["…"],
"comments_close_on": "2026-08-01",
"source_url": "https://www.federalregister.gov/…",
"related_bills": [ { "id": "…", "number": "HB 1", "state": "…", "url": "…" } ]
}
}/v1/organizationscope: orgYour team's organization profile — the context impact assessments and relevance scans personalize against. PUT the same path (JSON body: org_name, industry, description, products, jurisdictions[], activities, priorities, terminology) to create/update; omitted fields keep their value.
Example request
curl -X PUT "https://docketroom.ai/api/v1/organization" \
-H "Authorization: Bearer cvts_your_key_here" -H "Content-Type: application/json" \
-d '{"industry": "Consumer fintech", "priorities": "data privacy, open banking"}'Example response
{ "data": { "saved": true, "profile": { "industry": "Consumer fintech", … } } }/v1/organization/relevant-billsscope: orgProfile-driven relevance scan: your profile facets become semantic queries; results are deduped, ranked by similarity + legislative recency, each labeled with the facet(s) that matched — finds bills that matter even without keyword overlap.
Parameters
state | string | Limit to one state (US for Congress). |
limit | integer | Results, 1–30 (default 15). |
Example request
curl "https://docketroom.ai/api/v1/organization/relevant-bills?limit=10" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": { "bills": [ { "id": "…", "similarity": 0.68, "rank_score": 0.77, "matched_facets": ["activities","priorities"], "title": "…" } ], "facets_used": ["industry","products","activities","priorities"] }
}/v1/bills/{id}/impactscope: orgThe bill assessed against YOUR organization profile: relevance verdict + reasoning, affected operations, legal/financial/operational/reputational severities, quote-verified compliance obligations, recommended questions for legal/policy review. First call generates (~30s); cached until the bill text or profile changes.
Parameters
idrequired | string | The bill's Docket Room id (path parameter). |
refresh | string | true → regenerate even if cached. |
Example request
curl "https://docketroom.ai/api/v1/bills/BILL_ID/impact" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": {
"impact": {
"relevant": true, "relevance_score": "low",
"why_it_matters": "…",
"impact_dimensions": [ { "dimension": "legal", "severity": "low", "assessment": "…" } ],
"compliance_obligations": [ { "obligation": "…", "deadline": null, "quote": "…", "verified": true } ],
"recommended_questions": [ "…" ], "confidence": "high"
},
"quote_verification": { "verified": 4, "unverified": 1 }
}
}/v1/searchscope: searchSearch bills — keyword (default) or semantic (meaning-based).
Parameters
qrequired | string | Search query (required). |
mode | string | keyword (default) or semantic. Semantic finds bills about a topic even without shared words; results are relevance-ranked and each row carries a similarity score. Single page, limit ≤ 50. |
state | string | Two-letter state code. |
status | string | Filter by canonical status. |
page | integer | Page number (default 1; keyword mode only). |
limit | integer | Results per page, 1–100 (default 25). |
Example request
curl "https://docketroom.ai/api/v1/search?q=data%20privacy&state=TX" \
-H "Authorization: Bearer cvts_your_key_here"Example response
{
"data": [ { "id": "…", "number": "…", "title": "…", "status": "…" } ],
"pagination": { "page": 1, "limit": 25, "total": 57, "has_more": true }
}Errors
Errors return a JSON body { "error": "…" } with one of these status codes:
401 | Missing/invalid Authorization header, bad key format, or revoked key. |
403 | Key lacks the required scope, or the team does not have API access (Team or Enterprise plan). |
404 | Resource not found (e.g. unknown bill id). |
429 | Rate limit exceeded. See Retry-After and X-RateLimit-* headers. |
500 | Server error while fetching data. |
MCP server
Docket Room is also available as a remote Model Context Protocol server, so AI agents (Claude, Cursor, VS Code, and any MCP-capable client) can search bills, read summaries and predictions, and pull roll-call tallies directly. It uses the same team API keys, scopes, and rate limits as the REST API — one request per tool call.
https://docketroom.ai/api/mcpTools
search_bills— keyword or bill-number search across all states + Congress (scope:search)semantic_search_bills— meaning-based topic search with similarity-ranked results (scope:search)list_bills— filter by state, status, tag, sponsor, committee, or introduced/last-action date ranges (scope:bills)get_bill— one bill with AI summaries, predictions (incl. trend + model provenance), and hearings; accepts natural references like "California SB 123" (scope:bills)analyze_bill— structured analysis with quote-verified provisions, dates, agencies, ambiguities (scope:bills)list_bill_versions/compare_bill_versions— text versions + structured amendment analysis (substantive vs technical, quote-verified) (scope:bills)get_organization_profile/set_organization_profile/assess_bill_impact/scan_relevant_bills— org context (incl.risk_tolerancesteering severity framing), per-bill impact (quote-verified obligations, dimension severities, review questions), and profile-driven relevance scans (scope:org)set_bill_relevance— the team's human verdict overrides the model: not_relevant bills stop appearing in scans; the override is echoed on impact assessments; clear=true reverts (scope:org)get_bill_text— original legislative text, chunked (scope:bills)get_bill_cosponsors— full cosponsor list (scope:bills)related_bills— embedding-similar bills: companions, model legislation, other states (scope:bills)compare_bills— multistate comparison matrix: pass bill ids or a topic; quote-verified per-jurisdiction scope/obligations/enforcement/penalties/exemptions, strictest/conflicts/outliers/trends synthesis, and model-legislation detection (scope:bills)bill_momentum/fast_movers— deterministic momentum score with named signals, direction vs the bill's own prior rate, prediction history, and the most-active bills in a window (scope:bills)get_bill_votes— per-roll-call tallies with party splits (scope:bills)recent_changes— what changed across the legislature: actions, statuses, new bills, sponsors, amendments, hearing events;materialityfilter separates trajectory-changing developments from routine activity (scope:bills)activity_summary— "what changed since X" grouped by bill, material-vs-procedural split, attention-ranked, optional AI briefing;tracked=truefor your bills (scope:bills)generate_report— audience-tailored executive briefings, issue reports, and risk summaries over bill ids or a topic; structured + markdown dual output with validated citations (scope:bills)list_webhooks/create_webhook/delete_webhook— daily HMAC-signed bill-change pushes to your systems (Slack incoming webhooks work as-is; point them at Zapier/Make/n8n to create tasks or update CRM records); creation verifies the endpoint with a signed ping (scope:org)set_team_bill_record/add_team_bill_note/get_team_bill_record/list_team_bill_records— the team's shared docket: bill owners, organizational positions (support/oppose/monitor…), priority, internal status, append-only notes, and the audit history of record changes — kept strictly separate from official legislative facts and visible only to your team (scope:org)get_bill_changes— one bill's detected change history (scope:bills)upcoming_hearings— hearings calendar; filter by state, bill, ortracked=truefor your bills (scope:bills)get_hearing/hearing_brief— one hearing with witnesses + access details, and an AI preparation brief (agenda, likely themes/questions, prep steps) (scope:bills)search_regulations— federal rules by keyword/agency, incl. open comment windows (scope:regulations)get_regulation— one rule with detail + related bills (scope:regulations)list_legislators— current members by state/chamber/party (scope:legislators)get_legislator/legislators_on_topic— full profile (committees + leadership, sponsorship history, issue areas) and lawmakers ranked by activity on a topic (scope:legislators)bill_stakeholders— factual stakeholder assembly (cosponsor party split, committee rosters, vote splits, witnesses, agencies) + grounded supporters/opponents synthesis (scope:bills)track_bill/untrack_bill/update_tracked_bill/list_tracked_bills/tracked_changes— manage your tracked list (incl. position + priority) and get its change digest (scope:tracking; OAuth connections only — API keys carry no user identity)list_keyword_alerts/create_keyword_alert/delete_keyword_alert— issue-based monitors across jurisdictions (scope:tracking; OAuth only)
Prompts & resources
The server also ships two prompts — bill_brief (stakeholder briefing on one bill) and topic_scan (survey a policy topic) — and a docketroom://bills/{id} resource template for clients that attach resources directly.
Sign in with OAuth (recommended)
Docket Room supports OAuth 2.1 with dynamic client registration, so clients that speak MCP authorization — including claude.ai custom connectors — can connect with a browser sign-in instead of a pasted key: add https://docketroom.ai/api/mcp as a connector and approve the consent screen. OAuth connections act as you (enabling the tracking tools) under your team's plan. Manage or disconnect connected apps anytime in Settings → API.
Claude Code
# OAuth (browser sign-in, user-scoped):
claude mcp add --transport http docketroom https://docketroom.ai/api/mcp
# Or with an API key (team-scoped, no tracking tools):
claude mcp add --transport http docketroom https://docketroom.ai/api/mcp \
--header "Authorization: Bearer cvts_your_key_here"Cursor / VS Code (mcp.json)
{
"mcpServers": {
"docketroom": {
"url": "https://docketroom.ai/api/mcp",
"headers": { "Authorization": "Bearer cvts_your_key_here" }
}
}
}Need higher limits or additional data? Contact us.