Docket Room

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/v1

Authentication

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_here

Each 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 cap
  • X-RateLimit-Remaining — requests left in the window
  • X-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

GET/v1/billsscope: bills

List bills, most recently acted first. Includes plain-language summaries.

Parameters

statestringTwo-letter state code (e.g. CA), or US for federal.
statusstringFilter by canonical status (e.g. introduced, in_committee).
tagstringFilter by issue tag (e.g. Healthcare).
sponsorstringSponsor name substring (e.g. Wiener).
committeestringCommittee name substring (e.g. Judiciary) — bills currently before that committee.
introduced_afterstringISO date — bills introduced on/after this date.
introduced_beforestringISO date — bills introduced on/before this date.
last_action_afterstringISO date — bills with legislative activity since this date.
last_action_beforestringISO date — upper bound on last activity.
pageintegerPage number (default 1).
limitintegerResults 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 }
}
GET/v1/bills/{id}scope: bills

Retrieve a single bill with summaries, stage predictions, related hearings, and committee history (current_committee + committees[]).

Parameters

idrequiredstringThe 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" }]
  }
}
GET/v1/changesscope: bills

Monitoring feed: field-level bill changes (new actions, status changes, new bills, sponsor changes) detected by the nightly ingest, newest first.

Parameters

sincestringISO date, e.g. 2026-07-01. Default: 7 days back. Max window: 90 days.
statestringTwo-letter state code (US for federal).
change_typestringaction_update, status_change, new_bill, cosponsor_change, sponsor_change, or amendment (substantive text change between versions).
pageintegerPage number (default 1).
limitintegerResults 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 }
}
GET/v1/bills/{id}/changesscope: bills

One bill's detected change history, newest first (same rows as /v1/changes).

Parameters

idrequiredstringThe bill's Docket Room id (path parameter).
sincestringISO date. Default: 7 days back. Max window: 90 days.
pageintegerPage number (default 1).
limitintegerResults 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 }
}
GET/v1/legislatorsscope: legislators

List in-office legislators.

Parameters

statestringTwo-letter state code.
chamberstringChamber (e.g. upper, lower, house, senate).
partystringParty affiliation — full name or short code (Democratic or D, Republican or R).
qstringName search (matches full name).
pageintegerPage number (default 1).
limitintegerResults 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 }
}
GET/v1/bills/{id}/versionsscope: bills

Stored text versions in chronological order (1 = introduced). Version tracking covers federal bills nightly plus archived state versions.

Parameters

idrequiredstringThe 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": "…" }
  ]
}
GET/v1/bills/{id}/versions/comparescope: bills

Structured 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

idrequiredstringThe bill's Docket Room id (path parameter).
fromintegerOlder version_num (default: the one before 'to').
tointegerNewer version_num (default: latest).
refreshstringtrue → 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 } ]
    }
  }
}
GET/v1/bills/{id}/analysisscope: bills

Structured 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

idrequiredstringThe bill's Docket Room id (path parameter).
refreshstringtrue → 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. …"
  }
}
GET/v1/bills/{id}/textscope: bills

The bill's original legislative text as ingested (not a summary), chunked via offset/max_chars for large bills.

Parameters

idrequiredstringThe bill's Docket Room id (path parameter).
offsetintegerCharacter offset for chunking (default 0).
max_charsintegerChunk 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://…"
  }
}
GET/v1/bills/{id}/cosponsorsscope: bills

The full cosponsor list (bill detail carries only the count). legislator_id links into /v1/legislators when resolved.

Parameters

idrequiredstringThe bill's Docket Room id (path parameter).
pageintegerPage number (default 1).
limitintegerResults 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 }
}
GET/v1/bills/{id}/relatedscope: bills

Embedding-similar bills — companions, copied/model legislation, and same-topic bills in other states, most similar first.

Parameters

idrequiredstringThe bill's Docket Room id (path parameter).
exclude_same_statestringtrue → only other jurisdictions (multistate survey).
limitintegerResults, 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": "…" } ]
}
GET/v1/bills/{id}/momentumscope: bills

Is 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

idrequiredstringThe 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": "…"
  }
}
GET/v1/fast-moversscope: bills

Bills 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

statestringTwo-letter state code (US for Congress).
daysintegerActivity window, 1–30 (default 7).
limitintegerResults, 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
}
GET/v1/legislators/{id}scope: legislators

One 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

idrequiredstringThe 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
  }
}
GET/v1/legislators/on-topicscope: legislators

Which lawmakers are active on a policy topic: sponsors of topic-matching bills ranked by how many they sponsor, each with sample bills.

Parameters

topicrequiredstringPolicy topic keywords, e.g. 'artificial intelligence'.
statestringTwo-letter state code (US for Congress).
limitintegerResults, 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
}
GET/v1/bills/{id}/stakeholdersscope: bills

The 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

idrequiredstringThe bill's Docket Room id (path parameter).
skip_analysisstringtrue → facts only, no AI synthesis.
refreshstringtrue → 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": "…"
  }
}
GET/v1/comparescope: bills

Multistate 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_idsstringComma-separated Docket Room bill ids (2–8). Mutually exclusive with topic.
topicstringTopic to survey across jurisdictions, e.g. 'ai deepfakes in elections'.
statesstringWith topic: comma-separated two-letter codes to survey (US for Congress).
max_statesintegerWith topic and no states: jurisdiction cap, 2–8 (default 6).
refreshstringtrue → 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": [ … ] }
  }
}
GET/v1/hearingsscope: bills

Hearings calendar across all 50 states + Congress. Defaults to upcoming (soonest first); pass from/to for a historical window.

Parameters

statestringTwo-letter state code (US for Congress).
bill_idstringOnly hearings linked to this bill.
fromstringISO date lower bound (default: today).
tostringISO date upper bound.
pageintegerPage number (default 1).
limitintegerResults 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 }
}
GET/v1/webhooksscope: org

The 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 } ]
}
GET/v1/reportsscope: bills

Composed 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

typerequiredstringexecutive_briefing | issue_report | risk_summary.
bill_idsstringComma-separated Docket Room bill ids (up to 8 used). Mutually exclusive with topic.
topicstringSurvey a topic instead of naming bills.
audiencestringWho this is for, e.g. 'board of directors', 'general counsel'.
statestringWith topic: limit the survey to one state.
refreshstringtrue → 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": "…" } ]
  }
}
GET/v1/activity-summaryscope: bills

What 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

sincestringISO date (default: 1 day back, max 90 days).
statestringTwo-letter state code (US for Congress).
narrativestringtrue → add an AI briefing over the digest.
limitintegerMax 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": "…"
  }
}
GET/v1/hearings/{id}scope: bills

One 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

idrequiredstringThe 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": "…" } ]
  }
}
GET/v1/hearings/{id}/briefscope: bills

AI 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

idrequiredstringThe hearing's Docket Room id (path parameter).
refreshstringtrue → 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": "…"
  }
}
GET/v1/regulationsscope: regulations

Federal rulemaking (Federal Register): keyword search, agency filter, and open_for_comment=true for rules still accepting public comments (most urgent deadline first).

Parameters

qstringKeyword phrase (full-text search).
agencystringAgency name substring, e.g. 'Environmental Protection'.
tagstringFilter by issue tag.
open_for_commentstringtrue → only rules whose comment window is open.
pageintegerPage number (default 1).
limitintegerResults 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 }
}
GET/v1/regulations/{id}scope: regulations

One regulation with full detail (abstract, agencies, comment deadline, Federal Register link) and its related bills.

Parameters

idrequiredstringDocket 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": "…" } ]
  }
}
GET/v1/organizationscope: org

Your 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", … } } }
GET/v1/organization/relevant-billsscope: org

Profile-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

statestringLimit to one state (US for Congress).
limitintegerResults, 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"] }
}
GET/v1/bills/{id}/impactscope: org

The 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

idrequiredstringThe bill's Docket Room id (path parameter).
refreshstringtrue → 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 }
  }
}
GET/v1/searchscope: search

Search bills — keyword (default) or semantic (meaning-based).

Parameters

qrequiredstringSearch query (required).
modestringkeyword (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.
statestringTwo-letter state code.
statusstringFilter by canonical status.
pageintegerPage number (default 1; keyword mode only).
limitintegerResults 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:

401Missing/invalid Authorization header, bad key format, or revoked key.
403Key lacks the required scope, or the team does not have API access (Team or Enterprise plan).
404Resource not found (e.g. unknown bill id).
429Rate limit exceeded. See Retry-After and X-RateLimit-* headers.
500Server 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/mcp

Tools

  • 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_tolerance steering 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; materiality filter 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=true for 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, or tracked=true for 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.

Docket Room IntelligencePro

Ask about your legislation

I can analyze your tracked bills, upcoming hearings, and recent changes.

AI-generated · Nonpartisan · Not legal advice