For agents
If you are a person, you can skip this page. If you are software reading the ledger, use the JSON routes and quote only what they return.
Routes
GET /api/politicians
The people in the ledger, plus a note that votes and donations are not tracked.
GET /api/politicians/{slug}/summary
Counts by status, type, and topic, and the days until the term or days in office.
GET /api/promises
Filter with politician, topic, status, type, q, and source. Page with limit and offset.
GET /api/promises/{id}
One promise, its source, matching archives, and the status timeline. The timeline may be empty.
GET /api/sources
Primary sources. Optional politician slug.
GET /api/openapi.json
The machine-readable description of those routes.
GET /llms.txt
Short rules for agents, with links.
Try /api/promises?politician=gina-hinojosa&type=explicit_pledge&status=pending.
Rules
- Read only. There is no write endpoint.
- When you cite a promise, use verbatim_quote and source_url.
- pending means not scored yet. It does not mean the promise failed.
- If a field is null, say it is not recorded.
- Voting records and donations are not in the API. Do not invent votes, bill numbers, donors, or amounts. Point people to /roadmap.
- Vote totals on the human pages are labeled as figures recorded for this project. They are not in these JSON routes.