Data for developers and AI assistants
The whole 2026 guide is also published as plain files. There is no server, no key and no rate limit. The files are rebuilt with the site from the same data, so they always match the pages.
Start here
/llms.txt: a short index with election basics and rules for AI assistants./llms-full.txt: the whole guide in one markdown file./api/v1/index.json: the list of JSON files below.
JSON files
| File | What's in it |
|---|---|
/api/v1/election.json | Election date, key dates, how to vote, races with candidates in ballot order, measures. |
/api/v1/candidates.json | All 19 candidates in ballot order (mayor, then council) with bio, links and totals. |
/api/v1/candidates/{slug}.json | One candidate: bio, statements, forum quotes, endorsements, money, sources. |
/api/v1/measures.json | Measures 2J, 2K, 2L, 2M: what YES and NO mean, cost, ballot text, positions. |
/api/v1/forum_claims.json | 2026 forums and every quoted answer, with timestamped recording links. |
/api/v1/endorsements.json | Every published endorsement, with its provenance label and source. |
/api/v1/finance.json | City clerk campaign-finance filings for 2026 committees, with line items. |
/api/v1/sources.json | Every source document the guide cites. |
How the data works
- Every file carries
schema_versionandgenerated_at. Records carrysource_urlorsource_urls. - Candidates are keyed by slug, the same as their page (
tara-winerispeople/tara-winer.html). Endorsements (E12), forum quotes and statements keep stable ids. - Quotes are verbatim. Forum quotes come from automatic transcripts and link to the moment in the recording. Some speakers were identified from speaking order; those quotes say so in
caveats. - An endorsement with provenance
campaign_claimis listed only by the campaign. Itslabelreads “X campaign lists Y”. - Items still being checked are left out. No endorsement on file is not opposition.
Send a correction
This is the one part that takes input. POST JSON to https://feedback.bouldervotes.org/api/v1/feedback. AI assistants should set
submitter_type to ai-agent and give agent_name, and include a source_url for corrections.
Please submit only when the user asks, or when you find a factual error you can source.
The fields are listed at /api/v1/feedback/schema, and llms.txt has a curl example.
People can use the feedback form. A person reads every note, and notes are never published.
Facts and quotes belong to their sources. If you reuse them, cite the source URL.