Election.org Public Data API Openapi API

Source-first public election data. Public beta coverage is explicit; null and omitted values are never silently converted to zeroes or inferred facts.

Operations 56

GET /charts/{slug} Chart values, original sources, methodology and copy-ready citation metadata
GET / API discovery
GET /address Resolve an address to geography, public entities, exact school-system profiles, and the current office stack
GET /representatives Return sourced current officeholders
GET /districts Return Census district identifiers
GET /countries Search permanent country foundations
GET /civic-systems Return source-bounded national civic selection systems
GET /international-results Search authoritative international election results
GET /ballots Return an incomplete federal research preview
GET /elections List 2026 federal election dates
GET /alerts Resolve election alerts, calendar subscription, and official voter actions
GET /contests Search permanent 2026 federal contest records
GET /elections/calendar.ics Subscribe to 2026 federal election dates
GET /election-administration Return state election administration profiles
GET /election-rules Return state voting-rule profiles and available current ballot layers
GET /ballot-measures Return official California statewide or Los Angeles local ballot measures
GET /judges Return official California Supreme Court and county-mapped Court of Appeal ballot questions
GET /judicial-officials Search the official California Supreme Court and Court of Appeal roster
GET /offices Search permanent office records
GET /people Search permanent federal and state political-person records
GET /local-adapters Audit official local-government roster adapters
GET /local-coverage Audit nationwide local-power completion by state
GET /local-candidates Search source-backed Los Angeles or San Diego 2026 general-election candidates
GET /local-candidate-positions Search exact campaign-published statements for Los Angeles 2026 candidates
GET /local-candidate-media Search sourced Los Angeles 2026 debate and candidate-media records
GET /local-position-history Audit archived and live observations of Los Angeles 2026 campaign statements
GET /local-promises Search evidence-first Los Angeles campaign promise timelines
GET /local-candidate-backgrounds Compare standardized sourced backgrounds for Los Angeles 2026 candidates
GET /local-candidate-endorsements Search campaign-reported endorsements for Los Angeles 2026 candidates
GET /office-guides Return source-backed public-office authority guides
GET /authority-topics Map civic problems to public decision-authority chains
GET /candidacy-opportunities Return address-matched public-service and candidacy research paths
GET /candidates Search official FEC candidate records
GET /candidate-filings Browse federal candidate first filing dates recorded by the FEC
GET /candidate-profiles Return a source-by-field candidate profile
GET /questionnaires Search uniform candidate questionnaires and verified-response status
GET /candidate-compare Compare two candidates in the same race without scoring
GET /committees Search FEC committee registrations
GET /finance Return separated candidate money categories
GET /vendors Search campaign organization payees or query one committee
GET /state-finance Return official state campaign-finance agencies plus twelve live state contribution and expenditure adapters, including separately reported Minnesota independent-spending relations
GET /governments Search official Census government units and connected local roster records
GET /school-finance-comparisons Return nationwide, state, or exact-system school enrollment and finance comparisons for 2019-2024
GET /results Search official certified historical federal results
GET /presidential-results Search the official 2024 U.S. presidential result
GET /financial-disclosures Search official U.S. House financial-disclosure filing indexes
GET /stock-trades Search verified U.S. House PTR transaction rows
GET /political-ads Search FEC political communication-spending filing rows
GET /datasets Discover versioned Election.org bulk datasets
GET /downloads/federal-contests-2026.csv Download permanent 2026 federal contest filing fields
GET /downloads/federal-candidates-2026.csv Download identity-complete 2026 federal candidate filing records
GET /downloads/federal-results-2022.csv Download official 2022 federal candidate result records
GET /downloads/federal-results-2024.csv Download official 2024 federal candidate result records
GET /downloads/federal-results-2020.csv Download official 2020 federal candidate result records
GET /downloads/federal-results-2018.csv Download official 2018 federal candidate result records
GET /downloads/federal-results-2016.csv Download official 2016 federal candidate result records

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/election-org:election-org-public-data-api-openapi-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

election-org-openapi-openapi.json Raw ↑
{"openapi":"3.1.0","info":{"title":"Election.org Public Data API","version":"2026-09-12","description":"Source-first public election data. Public beta coverage is explicit; null and omitted values are never silently converted to zeroes or inferred facts.","contact":{"email":"data@election.org"}},"servers":[{"url":"https://election.org/api/v1"}],"externalDocs":{"description":"Citation and reuse guidance","url":"https://election.org/data/api#attribution"},"components":{"schemas":{"Citation":{"type":"object","description":"Suggested attribution, not a forced backlink or new license. Collection sources are not necessarily evidence for every returned record. Dates are not request generation times.","required":["suggested_credit","record_url","record_urls","credit_url","original_sources","updated_at","verified_at","guidance_url","rights_note"],"properties":{"suggested_credit":{"type":"string"},"record_url":{"type":["string","null"],"format":"uri"},"record_urls":{"type":"array","items":{"type":"string","format":"uri"}},"credit_url":{"type":"string","format":"uri"},"original_sources":{"type":"array","description":"Returned-data source references. References explicitly marked applies_to_returned_records: false remain in response sources but are excluded here.","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"},"updated_at":{"type":["string","null"]},"verified_at":{"type":["string","null"]},"record_date":{"type":["string","null"],"description":"Date on the cited record, not a source check or dataset update"}}}},"updated_at":{"type":["string","null"],"description":"Explicit dataset update date, or null when unspecified"},"verified_at":{"type":["string","null"],"description":"Latest stated source check; does not establish freshness of every record"},"dates_note":{"type":"string"},"source_scope":{"type":"string"},"source_summary_truncated":{"type":"boolean"},"guidance_url":{"type":"string","format":"uri"},"rights_note":{"type":"string"}}},"PublicDataResponse":{"type":"object","required":["data","citation"],"properties":{"data":{},"citation":{"$ref":"#/components/schemas/Citation"}},"additionalProperties":true}}},"paths":{"/charts/{slug}":{"get":{"summary":"Chart values, original sources, methodology and copy-ready citation metadata","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Legacy chart payload with additive citation object","content":{"application/json":{"schema":{"type":"object","required":["chart","metadata","sources","citation"],"properties":{"chart":{},"metadata":{},"sources":{"type":"array","items":{}},"citation":{"$ref":"#/components/schemas/Citation"}}}}}},"404":{"description":"Chart not found"}}}},"/":{"get":{"summary":"API discovery","responses":{"200":{"description":"Endpoint manifest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}}}}},"/address":{"get":{"summary":"Resolve an address to geography, public entities, exact school-system profiles, and the current office stack","parameters":[{"name":"address","in":"query","required":true,"description":"U.S. street address or 5-digit ZIP. ZIP results are approximate.","schema":{"type":"string","minLength":5,"maxLength":120}}],"responses":{"200":{"description":"Resolved geography, FIPS-matched Census government entities, exact LEA-ID-connected school-system profiles, and public offices","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}},"400":{"description":"Required location input is missing or invalid"},"422":{"description":"Location is unmatched or ambiguous; error.retryable=false. This does not describe a provider outage."},"500":{"description":"Lookup could not be completed; no result or empty coverage should be inferred. Private, no-store response."},"503":{"description":"Upstream location service is unavailable; error.code=lookup_unavailable, error.retryable=true. Retry later; do not downgrade to ZIP or infer no match."},"504":{"description":"The bounded location-service wait timed out; error.code=lookup_timeout, error.retryable=true. Retry later. Private, no-store response."}}}},"/representatives":{"get":{"summary":"Return sourced current officeholders","parameters":[{"name":"address","in":"query","required":true,"description":"U.S. street address or 5-digit ZIP. ZIP results are approximate.","schema":{"type":"string","minLength":5,"maxLength":120}}],"responses":{"200":{"description":"Grouped representative, government-entity, exact school-system profile, and honest office-shell records","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}},"400":{"description":"Required location input is missing or invalid"},"422":{"description":"Location is unmatched or ambiguous; error.retryable=false. This does not describe a provider outage."},"500":{"description":"Lookup could not be completed; no result or empty coverage should be inferred. Private, no-store response."},"503":{"description":"Upstream location service is unavailable; error.code=lookup_unavailable, error.retryable=true. Retry later; do not downgrade to ZIP or infer no match."},"504":{"description":"The bounded location-service wait timed out; error.code=lookup_timeout, error.retryable=true. Retry later. Private, no-store response."}}}},"/districts":{"get":{"summary":"Return Census district identifiers","parameters":[{"name":"address","in":"query","required":true,"description":"U.S. street address or 5-digit ZIP. ZIP results are approximate.","schema":{"type":"string","minLength":5,"maxLength":120}}],"responses":{"200":{"description":"Political and school-district geography with FIPS-matched Census government entities and exact school-district GEOID-to-LEA profile links","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}},"400":{"description":"Required location input is missing or invalid"},"422":{"description":"Location is unmatched or ambiguous; error.retryable=false. This does not describe a provider outage."},"500":{"description":"Lookup could not be completed; no result or empty coverage should be inferred. Private, no-store response."},"503":{"description":"Upstream location service is unavailable; error.code=lookup_unavailable, error.retryable=true. Retry later; do not downgrade to ZIP or infer no match."},"504":{"description":"The bounded location-service wait timed out; error.code=lookup_timeout, error.retryable=true. Retry later. Private, no-store response."}}}},"/countries":{"get":{"summary":"Search permanent country foundations","description":"Returns permanent records for every World Bank country with a published 2024 Population, total value of at least 50 million, plus the prior G20-plus-Spain foundation and official-source expansions. Aggregate regions and income groups are excluded. Records include stable IDs, sourced population values, International IDEA electoral-management labels, official national-authority links when asserted, IPU-mapped parliamentary institutions, and explicit missing coverage. A record is not a claim that national election data is complete.","parameters":[{"name":"code","in":"query","description":"ISO alpha-2, ISO alpha-3, canonical slug, or known country alias.","schema":{"type":"string","maxLength":40}},{"name":"q","in":"query","description":"Country name, code, region, or subregion.","schema":{"type":"string","maxLength":100}},{"name":"region","in":"query","description":"Exact region label, such as Americas, Asia, Europe, or Pacific.","schema":{"type":"string","maxLength":40}}],"responses":{"200":{"description":"Source-linked country foundations and an explicit international coverage contract","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}},"404":{"description":"Requested country was not found"}}}},"/civic-systems":{"get":{"summary":"Return source-bounded national civic selection systems","description":"Returns official-source institutional selection paths for countries where indirect election or appointment must remain distinct from a nationwide popular-election result. The adapter explicitly publishes national_result_available=false and never infers candidates, turnout, party allocation, or vote totals.","parameters":[{"name":"country","in":"query","description":"China CN/CHN/china or Saudi Arabia SA/SAU/saudi-arabia.","schema":{"type":"string"}}],"responses":{"200":{"description":"Official-source civic-system records and explicit evidence limits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}},"404":{"description":"Requested civic-system adapter was not found"}}}},"/international-results":{"get":{"summary":"Search authoritative international election results","description":"Search authoritative national election results including Ethiopia's official source-bounded 2021 general-election layer, Uganda's official final 2021 presidential result, and Egypt's official final 2024 presidential result. Ethiopia exposes the September House and regional-council aggregates for Harari, SNNP, and Somali without treating that three-region table as a complete national result or inventing candidate votes or current tenure. Source-specific vote, seat, candidate, personal-vote, elected-result, alternate, aggregate-only, document-coverage, and disputed-territorial-scope layers stay separate.","parameters":[{"name":"country","in":"query","description":"Current coverage includes Ethiopia ET/ETH, Uganda UG/UGA, and Egypt EG/EGY alongside the other published country adapters. Amharic ኢትዮጵያ and Arabic مصر are also accepted by the runtime endpoint.","schema":{"type":"string","default":"IN"}},{"name":"year","in":"query","schema":{"type":"integer","enum":[2021,2022,2023,2024,2025,2026],"default":2024}},{"name":"round","in":"query","description":"Brazil 2022 presidential round (defaults to 2), or the round in which a French constituency seat was decided.","schema":{"type":"integer","enum":[1,2]}},{"name":"id","in":"query","schema":{"type":"string"}},{"name":"state","in":"query","description":"India State/Union Territory, UK region/nation, Canadian province/territory, Australian state/territory, German Land, French department, South African province, Mexican state, Brazilian federative unit/overseas result group, Japanese prefecture, Argentina electoral district, Republic of Korea region, Indonesian province/overseas result district, Türkiye province, Nigeria state/FCT result-document coverage record, Pakistan province/area aggregate, Poland voivodeship, Sweden Riksdag constituency, or Russia CEC commission row; accepts names, native names where available, codes where available, or Election.org slugs.","schema":{"type":"string"}},{"name":"region","in":"query","description":"UK Parliament region or nation name, Republic of Korea regional total, Indonesian geographic result, Türkiye province, or Election.org slug.","schema":{"type":"string"}},{"name":"province","in":"query","description":"Canadian province or territory, South African province, or Spanish Congress constituency name or Election.org slug.","schema":{"type":"string"}},{"name":"prefecture","in":"query","description":"Japanese prefecture name, native name, two-digit code, ISO 3166-2 code, or Election.org slug.","schema":{"type":"string"}},{"name":"department","in":"query","description":"French department name, official code, or Election.org slug.","schema":{"type":"string"}},{"name":"constituency","in":"query","schema":{"type":"string"}},{"name":"commission","in":"query","description":"Russia CEC commission name or Election.org slug, such as Москва. Use the separate id parameter for a permanent record ID.","schema":{"type":"string"}},{"name":"district","in":"query","description":"Italian 2022 Chamber single-member district label, Argentine 2023 runoff electoral-district ID, or Netherlands 2025 electoral-district ID, name, or Election.org slug.","schema":{"type":"string"}},{"name":"record_type","in":"query","description":"For Italy, return district or raw list-mark records. For Spain, return province, party, or historical elected-member records. For the Netherlands, return district, party, or historical elected-member records. For the Republic of Korea, return region or historical candidate-result records. For Indonesia, return region or historical candidate-ticket result records. For Türkiye, return province, final component, or historical candidate-result records. For Nigeria, return the national declaration, historical candidate-result records, or state/FCT result-document coverage records. For the Philippines, return national, Senate candidate, or party-list records. For New Zealand, return national, party, electorate, or historical candidate-result records. For Poland, return region or historical candidate-result records. For Sweden, return national, constituency, named party, or historical candidate personal-vote records. For Russia, return national, CEC commission-row, or historical candidate-result records.","schema":{"type":"string","enum":["national","state","district","list","province","constituency","party","party_list","member","region","candidate","senate_candidate","commission"]}},{"name":"candidate","in":"query","schema":{"type":"string"}},{"name":"party","in":"query","description":"Germany first-vote or second-vote party/choice label, French official candidate nuance code, South African party name or abbreviation, Japanese filing-party category, Italian published list label, Argentine runoff political grouping, Spanish seated-party family, Netherlands party name or official ID, or Republic of Korea candidate party. Italy returns raw direct list marks, not a final legally apportioned party total.","schema":{"type":"string"}},{"name":"represented","in":"query","description":"For South Africa or Japan, filter to parties/categories with seats (true) or without seats (false).","schema":{"type":"boolean"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":350,"default":100}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Historical constituency results, candidacy records where safely available, source fingerprints, and explicit coverage limits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}},"404":{"description":"Requested permanent result ID was not found"},"422":{"description":"Country or year is not yet supported"}}}},"/ballots":{"get":{"summary":"Return an incomplete federal research preview","description":"Never represents FEC filing records as an official complete ballot.","parameters":[{"name":"address","in":"query","required":true,"description":"U.S. street address or 5-digit ZIP. ZIP results are approximate.","schema":{"type":"string","minLength":5,"maxLength":120}}],"responses":{"200":{"description":"Federal filing-record research preview with completeness caveat","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}},"400":{"description":"Required location input is missing or invalid"},"422":{"description":"Location is unmatched or ambiguous; error.retryable=false. This does not describe a provider outage."},"500":{"description":"Lookup could not be completed; no result or empty coverage should be inferred. Private, no-store response."},"503":{"description":"Upstream location service is unavailable; error.code=lookup_unavailable, error.retryable=true. Retry later; do not downgrade to ZIP or infer no match."},"504":{"description":"The bounded location-service wait timed out; error.code=lookup_timeout, error.retryable=true. Retry later. Private, no-store response."}}}},"/elections":{"get":{"summary":"List 2026 federal election dates","parameters":[{"name":"state","in":"query","required":false,"description":"Two-letter postal abbreviation.","schema":{"type":"string","minLength":2,"maxLength":2}}],"responses":{"200":{"description":"FEC-sourced primary, runoff, and general dates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}}}}},"/alerts":{"get":{"summary":"Resolve election alerts, calendar subscription, and official voter actions","description":"Accepts either an address or a state. Address input is used to resolve jurisdiction and is not returned in the response or calendar URL. Current automated coverage is limited to the FEC 2026 federal congressional calendar plus the federal general election.","parameters":[{"name":"address","in":"query","required":false,"description":"U.S. street address or 5-digit ZIP. ZIP results are approximate.","schema":{"type":"string","minLength":5,"maxLength":120}},{"name":"state","in":"query","required":false,"description":"Two-letter postal abbreviation.","schema":{"type":"string","minLength":2,"maxLength":2}}],"responses":{"200":{"description":"Upcoming sourced dates, calendar feed, official voter actions, and explicit unavailable alert types","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}},"400":{"description":"Neither state nor address provided"},"422":{"description":"Address unresolved or jurisdiction unsupported"},"500":{"description":"Lookup could not be completed; no result or empty coverage should be inferred. Private, no-store response."},"503":{"description":"Upstream location service is unavailable; error.code=lookup_unavailable, error.retryable=true. Retry later; do not downgrade to ZIP or infer no match."},"504":{"description":"The bounded location-service wait timed out; error.code=lookup_timeout, error.retryable=true. Retry later. Private, no-store response."}}}},"/contests":{"get":{"summary":"Search permanent 2026 federal contest records","description":"Groups identity-complete FEC filing records by office, state, and district. Inclusion never proves ballot qualification.","parameters":[{"name":"id","in":"query","schema":{"type":"string"}},{"name":"q","in":"query","description":"Contest title, ID, or candidate name.","schema":{"type":"string","maxLength":100}},{"name":"state","in":"query","required":false,"description":"Two-letter postal abbreviation.","schema":{"type":"string","minLength":2,"maxLength":2}},{"name":"office","in":"query","schema":{"type":"string","enum":["H","S"]}},{"name":"district","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":250}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Current contest entities, candidate filing records, FEC election dates, and coverage limits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}},"404":{"description":"Requested contest ID not found"},"422":{"description":"Invalid office filter"}}}},"/elections/calendar.ics":{"get":{"summary":"Subscribe to 2026 federal election dates","parameters":[{"name":"state","in":"query","required":true,"description":"Two-letter postal abbreviation.","schema":{"type":"string","minLength":2,"maxLength":2}}],"responses":{"200":{"description":"iCalendar feed with one-day reminders"},"400":{"description":"Missing or unsupported state code"}}}},"/election-administration":{"get":{"summary":"Return state election administration profiles","parameters":[{"name":"state","in":"query","required":false,"description":"Two-letter postal abbreviation.","schema":{"type":"string","minLength":2,"maxLength":2}}],"responses":{"200":{"description":"EAC/NCSL authority, official links, and voting-policy records","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}}}}},"/election-rules":{"get":{"summary":"Return state voting-rule profiles and available current ballot layers","parameters":[{"name":"state","in":"query","required":false,"description":"Two-letter postal abbreviation.","schema":{"type":"string","minLength":2,"maxLength":2}}],"responses":{"200":{"description":"Source-language rules, explicit uncovered fields, and official links","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}}}}},"/ballot-measures":{"get":{"summary":"Return official California statewide or Los Angeles local ballot measures","parameters":[{"name":"state","in":"query","required":false,"description":"Two-letter postal abbreviation.","schema":{"type":"string","minLength":2,"maxLength":2}},{"name":"number","in":"query","schema":{"type":"integer"}},{"name":"level","in":"query","schema":{"type":"string","enum":["statewide","local","all"],"default":"statewide"}},{"name":"locality","in":"query","description":"Current local coverage accepts los-angeles.","schema":{"type":"string"}},{"name":"code","in":"query","schema":{"type":"string"}},{"name":"id","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":250}}],"responses":{"200":{"description":"Official ballot fields, Yes/No meanings, source links, and explicit document-quality limits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}}}}},"/judges":{"get":{"summary":"Return official California Supreme Court and county-mapped Court of Appeal ballot questions","parameters":[{"name":"state","in":"query","required":false,"description":"Two-letter postal abbreviation.","schema":{"type":"string","minLength":2,"maxLength":2}},{"name":"county","in":"query","schema":{"type":"string"}},{"name":"district","in":"query","schema":{"type":"string"}},{"name":"level","in":"query","schema":{"type":"string","enum":["supreme_court","court_of_appeal"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":250}}],"responses":{"200":{"description":"Exact ballot questions, county scope, Yes/No meanings, official source links, and visible gaps","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}}}}},"/judicial-officials":{"get":{"summary":"Search the official California Supreme Court and Court of Appeal roster","parameters":[{"name":"state","in":"query","required":false,"description":"Two-letter postal abbreviation.","schema":{"type":"string","minLength":2,"maxLength":2}},{"name":"q","in":"query","schema":{"type":"string","maxLength":100}},{"name":"level","in":"query","schema":{"type":"string","enum":["supreme_court","court_of_appeal"]}},{"name":"district","in":"query","description":"Ordinal appellate district name, such as First.","schema":{"type":"string"}},{"name":"court","in":"query","description":"Court slug returned by a judicial-official record.","schema":{"type":"string"}},{"name":"ballot","in":"query","schema":{"type":"string","enum":["connected","not_connected"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":250}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Source-reported court membership, roles, service-note status, permanent profile links, and separately sourced ballot connections","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}},"400":{"description":"Invalid filter value"},"404":{"description":"Court slug not found"}}}},"/offices":{"get":{"summary":"Search permanent office records","parameters":[{"name":"state","in":"query","required":false,"description":"Two-letter postal abbreviation.","schema":{"type":"string","minLength":2,"maxLength":2}},{"name":"level","in":"query","schema":{"type":"string","enum":["federal","state","local"]}},{"name":"q","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":250}}],"responses":{"200":{"description":"Office records","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}}}}},"/people":{"get":{"summary":"Search permanent federal and state political-person records","description":"Federal terms join only on the source person ID, state roles only on the Open States person UUID, and campaign records only on exact FEC IDs. Names alone never merge people. Federal history begins with terms starting in 1923; the state layer is a current-role snapshot.","parameters":[{"name":"id","in":"query","description":"Election.org person ID, descriptive route slug, or unique source person ID.","schema":{"type":"string"}},{"name":"fec_id","in":"query","description":"Exact FEC candidate ID; ambiguous IDs fail closed.","schema":{"type":"string"}},{"name":"q","in":"query","description":"Name, role, person ID, FEC ID, Bioguide ID, state, or district.","schema":{"type":"string","maxLength":120}},{"name":"level","in":"query","schema":{"type":"string","enum":["federal","state"]}},{"name":"state","in":"query","required":false,"description":"Two-letter postal abbreviation.","schema":{"type":"string","minLength":2,"maxLength":2}},{"name":"status","in":"query","schema":{"type":"string","enum":["current","historical"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":250}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Permanent person IDs, current roles, exact external identifiers, optional full career terms, sources, and coverage limits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}},"404":{"description":"No unique person matched the supplied identifier"}}}},"/local-adapters":{"get":{"summary":"Audit official local-government roster adapters","parameters":[{"name":"state","in":"query","required":false,"description":"Two-letter postal abbreviation.","schema":{"type":"string","minLength":2,"maxLength":2}},{"name":"id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Official sources, validation contracts, covered locality GEOIDs, counts, portraits, and permanent directory links","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}}}}},"/local-coverage":{"get":{"summary":"Audit nationwide local-power completion by state","description":"Separates complete government-entity inventory from current-holder, judicial, school-board, and special-district boundary coverage. No entity row is presented as an officeholder roster.","parameters":[{"name":"state","in":"query","required":false,"description":"Two-letter postal abbreviation.","schema":{"type":"string","minLength":2,"maxLength":2}}],"responses":{"200":{"description":"State-by-state entity counts, source-linked local holder rows, adapter localities, judicial records, status labels, and explicit next gaps","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}}}}},"/local-candidates":{"get":{"summary":"Search source-backed Los Angeles or San Diego 2026 general-election candidates","description":"Los Angeles is the default locality. San Diego nominees come from the official Notice of Nominees and separate City Clerk candidate log. Candidate-submitted materials remain distinct from certified identity and contest fields. Unsupported localities return an error, not candidates from another city.","parameters":[{"name":"locality","in":"query","description":"Trimmed, case-insensitive city slug; omitted or empty selects Los Angeles.","schema":{"type":"string","enum":["los-angeles","san-diego"],"default":"los-angeles"}},{"name":"id","in":"query","schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":100}},{"name":"contest","in":"query","description":"Contest slug or ID, such as mayor or la-2026-general-mayor.","schema":{"type":"string"}},{"name":"office","in":"query","description":"Permanent local office slug, such as city-attorney.","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":250}}],"responses":{"200":{"description":"Certified candidates, candidate-provided contact fields, permanent page links, source boundaries, and local coverage limits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}},"422":{"description":"Unsupported locality; error.code=unsupported_locality with supported_localities. No substituted city records."}}}},"/local-candidate-positions":{"get":{"summary":"Search exact campaign-published statements for Los Angeles 2026 candidates","description":"Every record preserves the campaign as speaker and an exact heading of 25 words or fewer. Topic normalization enables equal-field comparison but never implies ideology, agreement, priority, truth, or ballot status.","parameters":[{"name":"candidate","in":"query","description":"Candidate ID, slug, or name fragment.","schema":{"type":"string"}},{"name":"contest","in":"query","description":"Contest ID or slug, such as mayor.","schema":{"type":"string"}},{"name":"topic","in":"query","description":"Canonical topic ID or label fragment.","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":250}}],"responses":{"200":{"description":"Attributed campaign statements, source hashes, retrieval dates, topic vocabulary, contest matrices, and explicit coverage limits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}}}}},"/local-candidate-media":{"get":{"summary":"Search sourced Los Angeles 2026 debate and candidate-media records","description":"Debate events require dated source evidence and named participants. Full recordings, neutral topic indexes, clips, candidate statements, and official transcripts remain distinct source classes; missing media remains explicit.","parameters":[{"name":"candidate","in":"query","description":"Candidate ID, slug, or name fragment.","schema":{"type":"string"}},{"name":"contest","in":"query","description":"Contest ID or slug, such as mayor.","schema":{"type":"string"}},{"name":"stage","in":"query","schema":{"type":"string","enum":["primary","general"]}},{"name":"topic","in":"query","description":"Canonical topic ID or label fragment.","schema":{"type":"string"}}],"responses":{"200":{"description":"Debate events, source evidence, recording status, topic timestamps, separate City Clerk candidate media records, transcript fingerprints, and explicit coverage gaps","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}}}}},"/local-position-history":{"get":{"summary":"Audit archived and live observations of Los Angeles 2026 campaign statements","description":"An Internet Archive capture proves only that the exact current excerpt appeared by the capture time. Capture time is not publication time, and the API never generates a flip-flop, reversal, consistency, or motive claim.","parameters":[{"name":"candidate","in":"query","description":"Candidate ID, slug, or name fragment.","schema":{"type":"string"}},{"name":"contest","in":"query","description":"Contest ID or slug, such as mayor.","schema":{"type":"string"}},{"name":"topic","in":"query","description":"Canonical topic ID or label fragment.","schema":{"type":"string"}},{"name":"archived","in":"query","description":"Filter for records with a matching archived observation.","schema":{"type":"string","enum":["yes","no","true","false"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":250}}],"responses":{"200":{"description":"Campaign position histories, exact archived and live observations, source-page capture coverage, fingerprints, explicit snapshot errors, and interpretation limits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataResponse"}}}}}}},"/local-promises":{"get":{"summary":"Search evidence-first Los Angeles campaign promise timelines","description":"Each record connects a precise campaign commitment to dated public actions or current official measures. Statuses describe only the narrowest source-supported action and never mean kept, broken, truthful, effective, or caused by the officeholder.","parameters":[{"name":"person","in":"query","description":"Person ID, slug, or name fragment.","schema":{"type":"string"}},{"name":"topic","in":"query","description":"Canonical topic ID or label fragment.","schema":{"type":"string"}},{"name":"status","in":"query","description":"Exact evidence-status code.","schema":{"type":"string","enum":["action_completed","official_reporting_says_threshold_exceeded","target_not_reached_as_of_source"]}}],"responses":{"200":{"description":"Commitments, evidence statuses, dated timelines, excerpts, retrieval metadata, SHA-2

# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/election-org/refs/heads/main/openapi/_original/election-org-openapi-openapi.json