{"title":"BallotData API data dictionary","api_version":"1.6.2","docs":"https://api.ballotdata.ai/docs/dictionary","values":"https://api.ballotdata.ai/docs/values","records":[{"id":"election","title":"Election","summary":"One election in one state on one day: a general, a primary, a runoff or a special election.","endpoints":["GET /v1/elections"],"relations":["An election has many contests: GET /v1/contests?elections={slug}, or the whole election at once with GET /v1/elections/{slug}/export.","The slug is stable and readable (<state>-<date>-<type>); use it in every elections= filter."],"notes":["details holds only the voting rules that apply, so most elections have one or two keys and some have none.","Past elections (November 2020, 2022, 2023, 2024 and 2025) are kept for their results and history and have details.historical set to true. upcoming=true leaves them out.","result_count rises as sources publish results; it is 0 for an upcoming election."],"fields":[{"field":"id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Election id.","values":null,"record":null,"example":"1","where":null},{"field":"slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"Election slug, used in elections= filters: <state>-<date>-<type>.","values":null,"record":null,"example":"ca-2026-11-03-general","where":null},{"field":"name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Election name.","values":null,"record":null,"example":"California General Election","where":null},{"field":"short_name","type":"string","always_present":true,"nullable":true,"format":null,"description":"Shorter name.","values":null,"record":null,"example":"CA General","where":null},{"field":"date","type":"string","always_present":true,"nullable":false,"format":"YYYY-MM-DD","description":"Election day.","values":null,"record":null,"example":"2026-11-03","where":null},{"field":"state","type":"string","always_present":true,"nullable":true,"format":"Two capital letters (USPS code)","description":"State; null for a multi-state election.","values":null,"record":null,"example":"CA","where":null},{"field":"type","type":"string","always_present":true,"nullable":false,"format":null,"description":"Kind of election.","values":{"set":"election-type","open":false,"codes":["general","primary","special","special_primary","runoff","consolidated"]},"record":null,"example":"general","where":null},{"field":"primary_system","type":"string","always_present":true,"nullable":true,"format":null,"description":"How the state runs primaries.","values":{"set":"primary-system","open":false,"codes":["none","closed","semi_closed","open","top_two","top_four","nonpartisan"]},"record":null,"example":"none","where":null},{"field":"info_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"Official election page.","values":null,"record":null,"example":"https://www.sf.gov/november-3-2026-consolidated-general-election","where":null},{"field":"details","type":"object","always_present":true,"nullable":false,"format":null,"description":"Voting rules for the election. Only keys that apply are present.","values":null,"record":null,"example":null,"where":null},{"field":"details.all_mail","type":"boolean","always_present":false,"nullable":false,"format":null,"description":"Every voter is mailed a ballot.","values":null,"record":null,"example":null,"where":null},{"field":"details.ranked_choice","type":"boolean","always_present":false,"nullable":false,"format":null,"description":"Some contests in this election use ranked choice voting.","values":null,"record":null,"example":null,"where":null},{"field":"details.fusion_voting","type":"boolean","always_present":false,"nullable":false,"format":null,"description":"Candidates can appear on more than one party’s line (New York, Connecticut).","values":null,"record":null,"example":null,"where":null},{"field":"details.partisan_primary","type":"boolean","always_present":false,"nullable":false,"format":null,"description":"A party primary.","values":null,"record":null,"example":null,"where":null},{"field":"details.primary","type":"string","always_present":false,"nullable":false,"format":null,"description":"Which primary, where a state holds several.","values":null,"record":null,"example":null,"where":null},{"field":"details.consolidated_with","type":"string or array of string","always_present":false,"nullable":false,"format":null,"description":"Elections held on the same ballot: a name, or a list of names.","values":null,"record":null,"example":"[\"San Francisco Consolidated General Election\"]","where":null},{"field":"details.runoff_date","type":"string","always_present":false,"nullable":false,"format":"YYYY-MM-DD","description":"Date of a runoff, if one is needed.","values":null,"record":null,"example":null,"where":null},{"field":"details.runoff_election_date","type":"string","always_present":false,"nullable":false,"format":"YYYY-MM-DD","description":"Date of the runoff election.","values":null,"record":null,"example":null,"where":null},{"field":"details.top_two_primary_date","type":"string","always_present":false,"nullable":false,"format":"YYYY-MM-DD","description":"Date of the top-two primary that chose these candidates.","values":null,"record":null,"example":null,"where":null},{"field":"details.louisiana_open_primary","type":"boolean","always_present":false,"nullable":false,"format":null,"description":"Louisiana’s open (jungle) primary.","values":null,"record":null,"example":null,"where":null},{"field":"details.note","type":"string","always_present":false,"nullable":false,"format":null,"description":"Anything else voters should know.","values":null,"record":null,"example":null,"where":null},{"field":"details.historical","type":"boolean","always_present":false,"nullable":false,"format":null,"description":"A past election kept for its results and history (the November 5, 2024 general, for example). Never shown to voters on endorsedby.org.","values":null,"record":null,"example":"true","where":null},{"field":"contest_count","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Contests on the ballot.","values":null,"record":null,"example":"2477","where":"Only in GET /v1/elections"},{"field":"endorsement_count","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Endorsements in those contests.","values":null,"record":null,"example":"8156","where":"Only in GET /v1/elections"},{"field":"result_count","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Contests on the ballot with a result.","values":null,"record":null,"example":"242","where":"Only in GET /v1/elections"}]},{"id":"contest","title":"Contest","summary":"One race or question on the ballot: an office to fill, a measure to pass, or a judge to keep.","endpoints":["GET /v1/contests","GET /v1/contests/{id}","GET /v1/elections/{slug}/export"],"relations":["A contest belongs to one election and is voted in one district.","Its choices are the lines a voter can mark, in ballot order; each endorser’s position points at those choices by choice_id.","Every endorsement (GET /v1/endorsements) names its contest by id."],"notes":["Every contest is on the printed ballot, worded as printed. Where a state leaves unopposed races off the ballot, so do we.","office, race_type and partisan are null for a measure; topics is empty for a candidate contest.","ballot_text is the measure’s printed wording and is null where we don’t have it yet; description may be a summary.","result is null until a source publishes one. Results are read again every day until they are certified.","endorsements (GET /v1/contests/{id} only) lists only endorsers who took a position; an endorser with no entry took none."],"fields":[{"field":"id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Contest id.","values":null,"record":null,"example":"92","where":null},{"field":"title","type":"string","always_present":true,"nullable":false,"format":null,"description":"Title as printed on the ballot.","values":null,"record":null,"example":"Member of City Council, District 1, City of Berkeley","where":null},{"field":"short_title","type":"string","always_present":true,"nullable":true,"format":null,"description":"Shorter title.","values":null,"record":null,"example":"Berkeley Council, D1","where":null},{"field":"kind","type":"string","always_present":true,"nullable":false,"format":null,"description":"candidate (an office), measure (a proposition) or retention (keep a judge?).","values":{"set":"contest-kind","open":false,"codes":["candidate","measure","retention"]},"record":null,"example":"candidate","where":null},{"field":"vote_method","type":"string","always_present":true,"nullable":false,"format":null,"description":"How votes are cast: plurality (vote for one), multi_seat (vote for up to votes_allowed), ranked_choice (rank up to ranks_allowed), approval, or yes_no.","values":{"set":"vote-method","open":false,"codes":["plurality","multi_seat","ranked_choice","approval","yes_no"]},"record":null,"example":"ranked_choice","where":null},{"field":"votes_allowed","type":"integer","always_present":true,"nullable":true,"format":null,"description":"How many choices a voter may mark (vote for N).","values":null,"record":null,"example":"1","where":null},{"field":"ranks_allowed","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Ranked choice: how many choices a voter may rank.","values":null,"record":null,"example":"5","where":null},{"field":"measure_code","type":"string","always_present":true,"nullable":true,"format":null,"description":"The measure’s letter or number: “K”, “Prop 1”.","values":null,"record":null,"example":"5","where":null},{"field":"description","type":"string","always_present":true,"nullable":true,"format":null,"description":"A short description or question. For a measure with ballot_text, often a summary.","values":null,"record":null,"example":"Changes Recall Election Process for Statewide Officers","where":null},{"field":"ballot_text","type":"string","always_present":true,"nullable":true,"format":null,"description":"A measure’s wording exactly as printed on the ballot; null where we don’t have it yet.","values":null,"record":null,"example":"CHANGES RECALL ELECTION PROCESS FOR STATEWIDE OFFICERS. LEGISLATIVE CONSTITUTIONAL AMENDM…","where":null},{"field":"full_text_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"The official full text of a measure.","values":null,"record":null,"example":"https://vig.cdn.sos.ca.gov/2026/general/pdf/prop5-text-proposed-laws.pdf","where":null},{"field":"unopposed","type":"boolean","always_present":true,"nullable":false,"format":null,"description":"A candidate contest with no more candidates still running than seats (the same rule endorsedby.org uses). Always false for measures.","values":null,"record":null,"example":"true","where":null},{"field":"ballot_order","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Position on the printed ballot.","values":null,"record":null,"example":"151","where":null},{"field":"party","type":"Party","always_present":true,"nullable":true,"format":null,"description":"For a party primary, the party.","values":null,"record":"party","example":null,"where":null},{"field":"details","type":"object","always_present":true,"nullable":false,"format":null,"description":"Facts about the contest. Only keys that apply are present.","values":null,"record":null,"example":null,"where":null},{"field":"details.uncontested","type":"boolean","always_present":false,"nullable":false,"format":null,"description":"Only one candidate is running.","values":null,"record":null,"example":null,"where":null},{"field":"details.nonpartisan","type":"boolean","always_present":false,"nullable":false,"format":null,"description":"Candidates appear without a party.","values":null,"record":null,"example":null,"where":null},{"field":"details.measure_type","type":"string","always_present":false,"nullable":false,"format":null,"description":"What kind of measure, as the election office classes it.","values":{"set":"measure-type","open":true,"codes":["local","other","bond","tax_rate","charter_amendment","local_proposition","constitutional_amendment","charter amendment","legislative_constitutional_amendment","referendum","Local Proposition","school_referendum","Charter Amendment","general tax","town_question","local_option","levy","sales tax","special tax","ordinance","municipal","tax","municipality_question","parcel tax","school_question","advisory","local_question","ordinance (tax)","Bond Issue","County Ordinance","non_binding","city_question","initiative","initiative_statute","initiated_constitutional_amendment","initiated_statute","initiative_constitutional_amendment","county_question","legislative_statute","school","Constitutional Amendment","legislatively_referred_constitutional_amendment","statute","county charter amendment","City Charter Amendment","County Proposition","appropriations limit","initiative (tax)","debt_exclusion","formation","initiative constitutional amendment","initiative_to_the_legislature","recall","village_question","charter","constitutional_initiative","initiative statute","legislative constitutional amendment","statewide_referendum","tax levy","Charter Amendment by act of County Council","Initiative","Local Referendum by Petition","appointive offices","cpa","fire district","initiative ordinance","land use","lease approval","legislative_bond","ordinance (land use)","sales surtax","Bond Act","Charter Amendment by Petition","Charter Amendment via Local Petition","Charter Resolution","County Charter Adoption Referendum","General Assembly Referendum","appointive office","bylaw amendment","charter and general tax","city_referendum","constitutional_convention","county","county measure","county parcel tax (initiative)","county tax","county tax (initiative)","fee","general plan amendment","hospital lease","hotel tax","initiated_act","initiative bond","initiative constitutional amendment and statute","initiative_constitutional_amendment_and_statute","legislative bond","legislative statute","legislative_constitutional_ratification","legislative_referral","ordinance (initiative)","parcel tax (initiative)","property transfer","regional tax","reorganization"]},"record":null,"example":"legislative constitutional amendment","where":null},{"field":"details.vote_required","type":"string","always_present":false,"nullable":false,"format":null,"description":"Share of the vote needed to pass, e.g. \"2/3\" or \"55%\".","values":null,"record":null,"example":null,"where":null},{"field":"details.majority_required","type":"boolean","always_present":false,"nullable":false,"format":null,"description":"A candidate needs a majority to win outright (else a runoff).","values":null,"record":null,"example":null,"where":null},{"field":"details.amount","type":"number","always_present":false,"nullable":false,"format":null,"description":"Dollar amount of a bond or tax measure.","values":null,"record":null,"example":null,"where":null},{"field":"details.term","type":"string","always_present":false,"nullable":false,"format":null,"description":"Length of the term, e.g. \"4 years\".","values":null,"record":null,"example":null,"where":null},{"field":"details.short_term","type":"boolean","always_present":false,"nullable":false,"format":null,"description":"The seat is for the remainder of an unexpired term.","values":null,"record":null,"example":null,"where":null},{"field":"details.justice","type":"string","always_present":false,"nullable":false,"format":null,"description":"The judge or justice a retention question is about.","values":null,"record":null,"example":"Kelli M. Evans","where":null},{"field":"details.runoff_date","type":"string","always_present":false,"nullable":false,"format":"YYYY-MM-DD","description":"Date of a runoff, if one is needed.","values":null,"record":null,"example":null,"where":null},{"field":"details.stage","type":"string","always_present":false,"nullable":false,"format":null,"description":"Which round of a multi-round contest this is.","values":{"set":"contest-stage","open":true,"codes":["open_primary","runoff","general"]},"record":null,"example":null,"where":null},{"field":"details.elected_at_large","type":"boolean","always_present":false,"nullable":false,"format":null,"description":"Elected by the whole jurisdiction, not by district.","values":null,"record":null,"example":null,"where":null},{"field":"details.none_of_these","type":"boolean","always_present":false,"nullable":false,"format":null,"description":"The ballot offers “None of these candidates” (Nevada).","values":null,"record":null,"example":null,"where":null},{"field":"details.primary_nominating","type":"boolean","always_present":false,"nullable":false,"format":null,"description":"The primary nominates a party’s candidate.","values":null,"record":null,"example":null,"where":null},{"field":"details.winners","type":"integer","always_present":false,"nullable":false,"format":null,"description":"Number of winners, where it differs from votes_allowed.","values":null,"record":null,"example":null,"where":null},{"field":"details.ref_type","type":"string","always_present":false,"nullable":false,"format":null,"description":"Kind of referendum.","values":{"set":"ref-type","open":true,"codes":["nonrecurring","debt","operating","other"]},"record":null,"example":null,"where":null},{"field":"details.party_lines_unverified","type":"boolean","always_present":false,"nullable":false,"format":null,"description":"The candidates are known, but their party lines haven’t been checked against a printed ballot yet.","values":null,"record":null,"example":null,"where":null},{"field":"details.question_wording","type":"string","always_present":false,"nullable":false,"format":null,"description":"How description relates to the printed question.","values":{"set":"question-wording","open":true,"codes":["notice"]},"record":null,"example":null,"where":null},{"field":"source_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"The official source the contest was loaded from.","values":null,"record":null,"example":null,"where":null},{"field":"office","type":"object","always_present":true,"nullable":true,"format":null,"description":"The office a candidate or retention contest fills; null for a measure.","values":null,"record":null,"example":null,"where":null},{"field":"office.type","type":"string","always_present":true,"nullable":false,"format":null,"description":"The office, normalized across states: us_representative, governor, state_senator, mayor, school_board, trial_court, sheriff, …","values":{"set":"office-type","open":false,"codes":["president","us_senator","us_representative","governor","lieutenant_governor","attorney_general","secretary_of_state","state_treasurer","state_auditor","state_superintendent","insurance_commissioner","agriculture_commissioner","land_commissioner","labor_commissioner","utility_commission","university_board","state_board_of_education","state_senator","state_representative","state_supreme_court","state_appellate_court","trial_court","municipal_court","magistrate","justice_of_the_peace","court_clerk","mayor","local_executive","city_council","county_legislature","neighborhood_council","school_board","school_superintendent","college_board","special_district_board","water_conservation_board","sheriff","prosecutor","coroner","constable","assessor","tax_collector","treasurer","auditor","recorder","clerk","surveyor","public_works","police_fire","other_county_office","other"]},"record":null,"example":"city_council","where":null},{"field":"office.level","type":"string","always_present":true,"nullable":false,"format":null,"description":"Level of government the office belongs to (state courts are state, whatever district they sit in).","values":{"set":"office-level","open":false,"codes":["federal","state","local"]},"record":null,"example":"local","where":null},{"field":"office.branch","type":"string","always_present":true,"nullable":false,"format":null,"description":"Branch of government.","values":{"set":"office-branch","open":false,"codes":["executive","legislative","judicial"]},"record":null,"example":"legislative","where":null},{"field":"race_type","type":"string","always_present":true,"nullable":true,"format":null,"description":"regular (a full term), special (the rest of an unexpired term, or a special election), recall, or retention (keep a judge?); null for a measure.","values":{"set":"race-type","open":false,"codes":["regular","special","recall","retention"]},"record":null,"example":"regular","where":null},{"field":"partisan","type":"boolean","always_present":true,"nullable":true,"format":null,"description":"Candidates run with a party label on the ballot; null for a measure or retention question.","values":null,"record":null,"example":"true","where":null},{"field":"topics","type":"array of string","always_present":true,"nullable":false,"format":null,"description":"A measure’s topics (GET /v1/measure-topics), assigned by rule from its title, summary and wording; empty for candidate contests.","values":{"set":"measure-topic","open":false,"codes":["taxes","bonds","budgets","education","housing","elections","government","term_limits","ethics","local_boundaries","public_safety","criminal_justice","health","mental_health","environment","energy","water","transportation","parks_recreation","libraries","land_use","economic_development","cannabis","alcohol","gambling","abortion","civil_rights","labor","pensions","firearms","utilities","immigration","veterans","animals","seniors","children"]},"record":null,"example":"[\"housing\",\"elections\",\"government\"]","where":null},{"field":"district","type":"District","always_present":true,"nullable":false,"format":null,"description":"The district a contest is voted in.","values":null,"record":"district","example":null,"where":null},{"field":"result","type":"Contest result","always_present":true,"nullable":true,"format":null,"description":"The election result, once a source has one; null before then.","values":null,"record":"result","example":null,"where":null},{"field":"election","type":"Election","always_present":true,"nullable":false,"format":null,"description":"The election the contest is in.","values":null,"record":"election","example":null,"where":"Not in the export"},{"field":"choices","type":"array of Choice","always_present":true,"nullable":false,"format":null,"description":"Every choice, in ballot order.","values":null,"record":"choice","example":null,"where":"Only in GET /v1/contests/{id} and GET /v1/contests"},{"field":"endorsements","type":"array of Position","always_present":true,"nullable":false,"format":null,"description":"Every (matching) endorser’s position, by endorser name.","values":null,"record":"position","example":null,"where":"Only in GET /v1/contests/{id}"}]},{"id":"choice","title":"Choice","summary":"One line a voter can mark in a contest: a candidate, or a Yes or No answer to a measure or retention question.","endpoints":["GET /v1/contests","GET /v1/contests/{id}","GET /v1/endorsements/{id}","GET /v1/elections/{slug}/export"],"relations":["A choice belongs to one contest. Endorsements point at it by choice_id.","A candidate choice has a candidate, whose id is the same in every contest they run in (GET /v1/candidates/{id})."],"notes":["label is the name exactly as printed, which can differ from the candidate’s full_name.","incumbent is null where we don’t know yet, and always null for a measure answer.","result is null until the contest has a result. Choices’ votes can add up to less than the contest’s total_votes, because write-ins and other lines are counted separately.","endorsement_count counts endorsers, so a ranked-choice ranking or a slate counts once per endorser."],"fields":[{"field":"id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Choice id: the choice_id endorsements refer to.","values":null,"record":null,"example":"191","where":null},{"field":"label","type":"string","always_present":true,"nullable":false,"format":null,"description":"As printed: the candidate’s ballot name, or Yes / No.","values":null,"record":null,"example":"Daria Wrubel","where":null},{"field":"measure_answer","type":"string","always_present":true,"nullable":true,"format":null,"description":"yes or no for a measure or retention question; null for a candidate.","values":{"set":"measure-answer","open":false,"codes":["yes","no"]},"record":null,"example":"yes","where":null},{"field":"option","type":"string","always_present":true,"nullable":true,"format":null,"description":"A special line: none_of_these (Nevada).","values":{"set":"choice-option","open":false,"codes":["none_of_these"]},"record":null,"example":null,"where":null},{"field":"ballot_designation","type":"string","always_present":true,"nullable":true,"format":null,"description":"Occupation line printed under the name, e.g. “Transit Planner”.","values":null,"record":null,"example":"Youth Therapist","where":null},{"field":"withdrawn","type":"boolean","always_present":true,"nullable":false,"format":null,"description":"The candidate withdrew but is still printed on the ballot.","values":null,"record":null,"example":"false","where":null},{"field":"incumbent","type":"boolean","always_present":true,"nullable":true,"format":null,"description":"The candidate holds this seat now: true or false where we know, null where we don’t yet (and for a measure answer).","values":null,"record":null,"example":"true","where":null},{"field":"vote_meaning","type":"string","always_present":true,"nullable":true,"format":null,"description":"For a measure answer: what a Yes (or No) vote means, as the election office words it.","values":null,"record":null,"example":"A YES vote on this measure means: The state would create a new homebuying assistance prog…","where":null},{"field":"endorsement_count","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Endorsers who endorsed this choice (for a measure: who back this answer).","values":null,"record":null,"example":"6","where":null},{"field":"candidate","type":"Candidate","always_present":true,"nullable":true,"format":null,"description":"The candidate; null for a measure answer.","values":null,"record":"candidate","example":null,"where":null},{"field":"party","type":"Party","always_present":true,"nullable":true,"format":null,"description":"The party (or party preference) printed beside the name.","values":null,"record":"party","example":null,"where":null},{"field":"party_label","type":"string","always_present":true,"nullable":true,"format":null,"description":"The party text exactly as printed, where it differs (fusion lines, top-two preferences).","values":null,"record":null,"example":null,"where":null},{"field":"result","type":"object","always_present":true,"nullable":true,"format":null,"description":"This choice’s votes, once the contest has a result; null before then.","values":null,"record":null,"example":null,"where":null},{"field":"result.votes","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Votes for this choice. null only on a party-reported result, which names a winner without counts.","values":null,"record":null,"example":"33000","where":null},{"field":"result.vote_pct","type":"number","always_present":true,"nullable":true,"format":null,"description":"Share of the contest’s votes, 0 to 100, as the source gives it (three decimals).","values":null,"record":null,"example":"18.275","where":null},{"field":"result.winner","type":"boolean","always_present":true,"nullable":true,"format":null,"description":"true for a winner (for vote-for-N, each of the N), false for a choice that lost; null when not decided yet or not stated, such as a race headed to a runoff.","values":null,"record":null,"example":null,"where":null}]},{"id":"district","title":"District","summary":"The area a contest is voted in: a state, a congressional or legislative district, a county, a city, a ward or a school district.","endpoints":["GET /v1/contests","GET /v1/contests/{id}","GET /v1/elections/{slug}/export"],"relations":["Many contests share a district. id matches an officeholder’s district_id, which links a contest to whoever holds the seat now.","ocd_id is the Open Civic Data division id, the same id other civic data uses; filter contests with districts={ocd_id}."],"notes":["type is open: it comes from the election offices’ own classifications, so new values can appear as we load more places.","ocd_id is null for a few local districts that have no Open Civic Data division."],"fields":[{"field":"id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"District id. Matches an officeholder’s district_id.","values":null,"record":null,"example":"1","where":null},{"field":"ocd_id","type":"string","always_present":true,"nullable":true,"format":null,"description":"Open Civic Data division id, used in districts= filters.","values":null,"record":null,"example":"ocd-division/country:us/state:ca","where":null},{"field":"name","type":"string","always_present":true,"nullable":false,"format":null,"description":"District name.","values":null,"record":null,"example":"California","where":null},{"field":"level","type":"string","always_present":true,"nullable":false,"format":null,"description":"Level of government.","values":{"set":"district-level","open":false,"codes":["federal","state","county","city","school","special"]},"record":null,"example":"state","where":null},{"field":"type","type":"string","always_present":true,"nullable":false,"format":null,"description":"Kind of district: statewide, congressional, state_upper, state_lower, county, council, school, …","values":{"set":"district-type","open":true,"codes":["airport_authority","anc_smd","annexation_area","appellate_district","appraisal_district","assistance_district","board_district","board_of_education_district","board_of_equalization","board_of_regents","board_of_review_district","cemetery_district","chancery_court_district","chancery_court_district_subdistrict","circuit_court","circuit_court_district","circuit_court_district_subdistrict","city","city_council","college","college_district","commission","commission_district","commissioner_district","commissioner_precinct","community_college","community_college_district","congressional","conservancy_district","conservation_district","constable_district","constable_precinct","council","council_district","county","county_budget_committee","county_commission","county_commission_district","county_council","county_council_district","county_court_district","county_division","county_part","court_district","court_of_appeal","court_of_appeal_district","court_of_appeals","court_of_appeals_district","court_of_appeals_division","district","district_attorney","district_attorney_district","district_court","district_court_district","division","educational_service_unit","election_district","emergency_services_district","ems_district","executive_council","fire","fire_district","fire_protection_district","forest_preserve_district","gid","governors_council","hospital_district","judicial","judicial_circuit","judicial_district","judicial_subcircuit","justice_court","justice_court_district","justice_precinct","learning_community_subcouncil","legislative","library_district","magistrate","magistrate_district","mental_health_district","municipality","natural_resources_district","nursing_home","park_district","pec_district","place","port_district","precinct","precinct_group","probate_district","prosecutorial","prosecutorial_district","psc_district","public_power_district","public_service_commission","public_service_district","public_utility_district","quorum_court_district","reclamation_district","regents_district","regional","regional_office_of_education","registry_district","road","rtm_district","sanitary_district","sboe","sboe_district","school","school_board","school_board_district","school_district","school_district_area","school_subdistrict","school_tax_district","school_zone","service_district","sewer_district","sldl","sldu","soil_conservation_district","soil_water_district","special","special_district","state","state_board_of_education","state_house","state_lower","state_upper","statewide","superior_court","superior_court_district","supervisorial","supreme_court_district","tax_district","town","township","transit","transit_district","transportation_district","trustee_area","trustee_district","tv_district","utility_district","village","ward","water","water_district","water_reclamation_district","water_sewer_district","watershed_district"]},"record":null,"example":"statewide","where":null},{"field":"state","type":"string","always_present":true,"nullable":true,"format":"Two capital letters (USPS code)","description":"USPS state code.","values":null,"record":null,"example":"CA","where":null}]},{"id":"result","title":"Contest result","summary":"The vote count of one contest, with its source. Each choice’s own votes are on the choice.","endpoints":["GET /v1/contests","GET /v1/contests/{id}","GET /v1/candidates","GET /v1/candidates/{id}","GET /v1/elections/{slug}/export"],"relations":["A contest has at most one result. Each choice’s votes, vote_pct and winner are in its own result (see Choice)."],"notes":["status is unofficial while counts are still changing and certified once the canvass is certified.","A party result (source_kind party) names a winner without counts: votes and total_votes are null and party_reported is true. It is replaced as soon as an official result appears.","Past elections’ results are mostly compiled from certified precinct returns (source_kind compiled), with official_url linking the state’s own results where we have them.","The blank, over and under vote counts and precincts are only where the source reports them."],"fields":[{"field":"status","type":"string","always_present":true,"nullable":false,"format":null,"description":"unofficial (election-night and canvass counts, still changing) or certified (the canvass is certified).","values":{"set":"result-status","open":false,"codes":["unofficial","certified"]},"record":null,"example":"unofficial","where":null},{"field":"source_kind","type":"string","always_present":true,"nullable":false,"format":null,"description":"Where the result comes from: official (a state, county, city or federal election office), compiled (certified official returns compiled by a research group, such as the MIT Election Data and Science Lab’s precinct returns, summed to the contest) or party (a state or national party’s own announcement of the winner, with no vote counts; replaced as soon as an official result appears).","values":{"set":"result-source-kind","open":false,"codes":["official","compiled","party"]},"record":null,"example":"official","where":null},{"field":"party_reported","type":"boolean","always_present":true,"nullable":false,"format":null,"description":"true when the result is a party’s announcement (source_kind party), not an official count.","values":null,"record":null,"example":"false","where":null},{"field":"total_votes","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Votes cast in the contest: the printed choices plus write-ins. null on a party-reported result.","values":null,"record":null,"example":"180571","where":null},{"field":"precincts_reporting","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Precincts counted so far, where the source says.","values":null,"record":null,"example":"179","where":"Only in a contest’s result"},{"field":"precincts_total","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Precincts in the contest, where the source says.","values":null,"record":null,"example":"179","where":"Only in a contest’s result"},{"field":"source","type":"object","always_present":true,"nullable":false,"format":null,"description":"The source of the result.","values":null,"record":null,"example":null,"where":"Only in a contest’s result"},{"field":"source.name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Who published the result.","values":null,"record":null,"example":"California Secretary of State","where":"Only in a contest’s result"},{"field":"source.url","type":"string","always_present":true,"nullable":false,"format":"URL","description":"Where it was published: the contest’s own results page where the source has one. Every result has one.","values":null,"record":null,"example":"https://api.sos.ca.gov/returns/us-rep/district/44","where":"Only in a contest’s result"},{"field":"source.contest_name","type":"string","always_present":true,"nullable":true,"format":null,"description":"The contest’s name in the source, which may differ from the printed title.","values":null,"record":null,"example":"U.S. House of Representatives District 44","where":"Only in a contest’s result"},{"field":"source.updated_at","type":"string","always_present":true,"nullable":true,"format":"ISO 8601 date and time with time zone","description":"When the source last updated it, if it says.","values":null,"record":null,"example":"2026-11-12T18:50:00+00:00","where":"Only in a contest’s result"},{"field":"official_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"For a compiled result, the state’s own certified results, where we have them.","values":null,"record":null,"example":null,"where":"Only in a contest’s result"},{"field":"more_sources","type":"array of object","always_present":true,"nullable":false,"format":null,"description":"Further announcements of the same result (party-reported results that more than one party published).","values":null,"record":null,"example":null,"where":"Only in a contest’s result"},{"field":"more_sources[].name","type":"string","always_present":true,"nullable":true,"format":null,"description":"Who published it.","values":null,"record":null,"example":null,"where":"Only in a contest’s result"},{"field":"more_sources[].url","type":"string","always_present":true,"nullable":false,"format":"URL","description":"Where it was published.","values":null,"record":null,"example":null,"where":"Only in a contest’s result"},{"field":"write_in_votes","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Votes for write-in candidates, where the source counts them.","values":null,"record":null,"example":null,"where":"Only in a contest’s result"},{"field":"blank_votes","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Blank votes, where the source counts them.","values":null,"record":null,"example":null,"where":"Only in a contest’s result"},{"field":"over_votes","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Overvotes, where the source counts them.","values":null,"record":null,"example":null,"where":"Only in a contest’s result"},{"field":"under_votes","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Undervotes, where the source counts them.","values":null,"record":null,"example":null,"where":"Only in a contest’s result"},{"field":"other_choices","type":"array of object","always_present":true,"nullable":false,"format":null,"description":"Lines the source reports that aren’t on the printed ballot, such as named write-ins.","values":null,"record":null,"example":null,"where":"Only in a contest’s result"},{"field":"other_choices[].label","type":"string","always_present":true,"nullable":true,"format":null,"description":"As the source reports it: a write-in’s name, “Write-in”, or another line not on the printed ballot.","values":null,"record":null,"example":null,"where":"Only in a contest’s result"},{"field":"other_choices[].votes","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Votes for it.","values":null,"record":null,"example":null,"where":"Only in a contest’s result"},{"field":"other_choices[].write_in","type":"boolean","always_present":true,"nullable":false,"format":null,"description":"A write-in candidate.","values":null,"record":null,"example":null,"where":"Only in a contest’s result"},{"field":"rcv_rounds","type":"array of object","always_present":true,"nullable":true,"format":null,"description":"Ranked choice: the rounds of the official tabulation, as the source reports them; null for other contests or where we don’t have them.","values":null,"record":null,"example":null,"where":"Only in a contest’s result"},{"field":"notes","type":"string","always_present":true,"nullable":true,"format":null,"description":"Anything else about the result, such as how a ranked-choice winner was decided.","values":null,"record":null,"example":null,"where":"Only in a contest’s result"},{"field":"fetched_at","type":"string","always_present":true,"nullable":false,"format":"ISO 8601 date and time with time zone","description":"When we last read it from the source.","values":null,"record":null,"example":"2026-11-13T03:28:26.570963+00:00","where":"Only in a contest’s result"},{"field":"source_url","type":"string","always_present":true,"nullable":false,"format":"URL","description":"Where the result was published.","values":null,"record":null,"example":"https://api.sos.ca.gov/returns/governor","where":"Only in a candidate’s contests"}]},{"id":"party","title":"Party","summary":"A political party, as printed beside a candidate or as an endorser’s party.","endpoints":[],"relations":[],"notes":["A choice’s party_label has the party text exactly as printed where it differs from the party’s name (fusion lines, top-two preferences)."],"fields":[{"field":"slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"Party slug.","values":{"set":"party","open":true,"codes":["conservative","constitution","dc-statehood-green","democratic","green","independent-american","independent-party","independent-party-of-delaware","independent-party-of-oregon","legal-marijuana-now","libertarian","pacific-green","progressive","progressive-party-of-oregon","republican","working-families"]},"record":null,"example":"republican","where":null},{"field":"name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Party name.","values":null,"record":null,"example":"Republican","where":null},{"field":"abbreviation","type":"string","always_present":true,"nullable":true,"format":null,"description":"Short form as printed, e.g. DEM.","values":null,"record":null,"example":"REP","where":null}]},{"id":"measure-topic","title":"Measure topic","summary":"A subject ballot measures are tagged with.","endpoints":["GET /v1/measure-topics"],"relations":[],"notes":["A measure’s topics are assigned by rule from its title, summary and wording."],"fields":[{"field":"slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"Topic slug, for topics= filters.","values":null,"record":null,"example":"taxes","where":null},{"field":"name","type":"string","always_present":true,"nullable":false,"format":null,"description":"The topic’s display name.","values":null,"record":null,"example":"Taxes","where":null}]},{"id":"state","title":"State","summary":"A state, or the District of Columbia.","endpoints":["GET /v1/states"],"relations":[],"notes":[],"fields":[{"field":"code","type":"string","always_present":true,"nullable":false,"format":"Two capital letters (USPS code)","description":"USPS state code.","values":null,"record":null,"example":"AK","where":null},{"field":"fips","type":"string","always_present":true,"nullable":false,"format":null,"description":"Two-digit FIPS code.","values":null,"record":null,"example":"02","where":null},{"field":"name","type":"string","always_present":true,"nullable":false,"format":null,"description":"The state’s full name.","values":null,"record":null,"example":"Alaska","where":null}]},{"id":"candidate","title":"Candidate","summary":"A person on the ballot, with the contests they run in, how to reach them, campaign finance and where they stand on issues.","endpoints":["GET /v1/candidates","GET /v1/candidates/{id}"],"relations":["One candidate record per person: someone who runs in several elections has one id and a contest entry for each.","Each contest entry names the choice the candidate appears as, its district and election, and the endorsements they received there.","issue_positions are the same records as GET /v1/issue-positions?candidates={id}."],"notes":["name is split from full_name, so a part is null when the name has none.","ids.fec and finance are for federal candidates only; ids.bioguide only for people who have served in Congress.","contact is filled from public sources (Wikidata, Open States, FEC filings, official candidate lists and the campaign’s own site) and is empty where we have nothing yet. Each detail’s source is in contact.sources.","issue_positions is empty where we have none yet. Positions are never inferred from party or endorsements."],"fields":[{"field":"id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Candidate id.","values":null,"record":null,"example":"5","where":null},{"field":"full_name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Full name.","values":null,"record":null,"example":"Xavier Becerra","where":null},{"field":"name","type":"object","always_present":true,"nullable":false,"format":null,"description":"The candidate’s name in parts, split from the full name.","values":null,"record":null,"example":null,"where":null},{"field":"name.given","type":"string","always_present":true,"nullable":true,"format":null,"description":"Given (first) name.","values":null,"record":null,"example":"Xavier","where":null},{"field":"name.middle","type":"string","always_present":true,"nullable":true,"format":null,"description":"Middle name(s) or initials.","values":null,"record":null,"example":"Diaz","where":null},{"field":"name.family","type":"string","always_present":true,"nullable":true,"format":null,"description":"Family (last) name, with particles such as “de la” or “Van”.","values":null,"record":null,"example":"Becerra","where":null},{"field":"name.suffix","type":"string","always_present":true,"nullable":true,"format":null,"description":"Jr., Sr., II, III, …","values":null,"record":null,"example":null,"where":null},{"field":"name.nickname","type":"string","always_present":true,"nullable":true,"format":null,"description":"The name in quotes or parentheses on the ballot, e.g. “Bobby”.","values":null,"record":null,"example":"Hov","where":null},{"field":"website_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"Campaign website.","values":null,"record":null,"example":null,"where":null},{"field":"photo_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"A photo of the candidate.","values":null,"record":null,"example":null,"where":null},{"field":"incumbent","type":"boolean","always_present":true,"nullable":true,"format":null,"description":"Holds the seat now: true or false where we know, null where we don’t yet.","values":null,"record":null,"example":"true","where":"Not in a choice’s candidate"},{"field":"ids","type":"object","always_present":true,"nullable":false,"format":null,"description":"Ids in other public systems.","values":null,"record":null,"example":null,"where":null},{"field":"ids.fec","type":"string","always_present":true,"nullable":true,"format":null,"description":"Federal Election Commission candidate id (U.S. House and Senate candidates).","values":null,"record":null,"example":"H6CA11268","where":null},{"field":"ids.bioguide","type":"string","always_present":true,"nullable":true,"format":null,"description":"Congressional Biographical Directory id (sitting members of Congress).","values":null,"record":null,"example":"M001225","where":null},{"field":"contact","type":"object","always_present":true,"nullable":false,"format":null,"description":"How to reach the candidate: website and social accounts from Wikidata (CC0), an incumbent’s official contacts (Open States, CC0), the campaign committee’s address from its FEC filing, what official candidate lists and state campaign-finance filings publish, and what the campaign publishes on its own site, each with its source. Empty where we have nothing yet.","values":null,"record":null,"example":null,"where":null},{"field":"contact.website","type":"string","always_present":true,"nullable":true,"format":"URL","description":"Website, from Wikidata or (for an incumbent) the official site.","values":null,"record":null,"example":"https://www.conniechansf.com","where":null},{"field":"contact.email","type":"string","always_present":true,"nullable":true,"format":"Email address","description":"Email: an incumbent’s official address, or what the campaign publishes.","values":null,"record":null,"example":"info@conniechansf.com","where":null},{"field":"contact.phone","type":"string","always_present":true,"nullable":true,"format":null,"description":"Phone: an incumbent’s office phone, or what the campaign publishes.","values":null,"record":null,"example":"(415) 340-0168","where":null},{"field":"contact.mailing_address","type":"string","always_present":true,"nullable":true,"format":null,"description":"Campaign committee mailing address, from its FEC filing.","values":null,"record":null,"example":"330 N Brand Blvd Ste 700, Glendale, CA 91203","where":null},{"field":"contact.social","type":"object","always_present":true,"nullable":false,"format":null,"description":"Social accounts, from Wikidata, an incumbent’s official accounts, or the campaign’s own website. Only keys we found are present.","values":null,"record":null,"example":null,"where":null},{"field":"contact.social.facebook","type":"string","always_present":false,"nullable":false,"format":"URL","description":"Facebook page.","values":null,"record":null,"example":"https://facebook.com/conniechansanfrancisco","where":null},{"field":"contact.social.x","type":"string","always_present":false,"nullable":false,"format":"URL","description":"X (Twitter) account.","values":null,"record":null,"example":"https://x.com/conniechansf","where":null},{"field":"contact.social.instagram","type":"string","always_present":false,"nullable":false,"format":"URL","description":"Instagram account.","values":null,"record":null,"example":"https://instagram.com/connie_chan_sf","where":null},{"field":"contact.social.youtube","type":"string","always_present":false,"nullable":false,"format":"URL","description":"YouTube channel.","values":null,"record":null,"example":"https://www.youtube.com/@ConnieChanSF","where":null},{"field":"contact.social.linkedin","type":"string","always_present":false,"nullable":false,"format":"URL","description":"LinkedIn page.","values":null,"record":null,"example":"https://www.linkedin.com/in/scott-wiener-936760","where":null},{"field":"contact.social.tiktok","type":"string","always_present":false,"nullable":false,"format":"URL","description":"TikTok account.","values":null,"record":null,"example":"https://tiktok.com/@connie_chan","where":null},{"field":"contact.social.threads","type":"string","always_present":false,"nullable":false,"format":"URL","description":"Threads account.","values":null,"record":null,"example":"https://www.threads.net/@scott_wiener","where":null},{"field":"contact.social.bluesky","type":"string","always_present":false,"nullable":false,"format":"URL","description":"Bluesky account.","values":null,"record":null,"example":"https://bsky.app/profile/scottwiener.bsky.social","where":null},{"field":"contact.sources","type":"array of object","always_present":true,"nullable":false,"format":null,"description":"Where each contact detail came from.","values":null,"record":null,"example":null,"where":null},{"field":"contact.sources[].url","type":"string","always_present":true,"nullable":false,"format":"URL","description":"Where we read it.","values":null,"record":null,"example":"https://elections.cdn.sos.ca.gov/statewide-elections/2026-general/contact-list.pdf","where":null},{"field":"contact.sources[].kind","type":"string","always_present":true,"nullable":false,"format":null,"description":"wikidata, open_states (the official contacts of an incumbent), fec_filing, official_filing (a state, county or city candidate list or campaign-finance filing) or campaign_website.","values":{"set":"contact-source-kind","open":false,"codes":["wikidata","open_states","fec_filing","official_filing","campaign_website"]},"record":null,"example":"official_filing","where":null},{"field":"contact.sources[].read_on","type":"string","always_present":true,"nullable":false,"format":"YYYY-MM-DD","description":"When we read it.","values":null,"record":null,"example":"2026-11-13","where":null},{"field":"finance","type":"array of object","always_present":true,"nullable":false,"format":null,"description":"FEC campaign finance totals, newest cycle first; empty for candidates without an FEC id.","values":null,"record":null,"example":null,"where":"Only in GET /v1/candidates/{id}"},{"field":"finance[].cycle","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Two-year FEC cycle, by its last year: 2026 = 2025–2026.","values":null,"record":null,"example":null,"where":"Only in GET /v1/candidates/{id}"},{"field":"finance[].committee_id","type":"string","always_present":true,"nullable":true,"format":null,"description":"Principal campaign committee’s FEC id.","values":null,"record":null,"example":null,"where":"Only in GET /v1/candidates/{id}"},{"field":"finance[].receipts","type":"number","always_present":true,"nullable":false,"format":null,"description":"Total receipts, dollars.","values":null,"record":null,"example":null,"where":"Only in GET /v1/candidates/{id}"},{"field":"finance[].disbursements","type":"number","always_present":true,"nullable":false,"format":null,"description":"Total disbursements, dollars.","values":null,"record":null,"example":null,"where":"Only in GET /v1/candidates/{id}"},{"field":"finance[].cash_on_hand","type":"number","always_present":true,"nullable":false,"format":null,"description":"Cash on hand at coverage_end, dollars.","values":null,"record":null,"example":null,"where":"Only in GET /v1/candidates/{id}"},{"field":"finance[].debts","type":"number","always_present":true,"nullable":false,"format":null,"description":"Debts owed by the campaign, dollars.","values":null,"record":null,"example":null,"where":"Only in GET /v1/candidates/{id}"},{"field":"finance[].individual_contributions","type":"number","always_present":true,"nullable":true,"format":null,"description":"Contributions from individuals, dollars.","values":null,"record":null,"example":null,"where":"Only in GET /v1/candidates/{id}"},{"field":"finance[].coverage_end","type":"string","always_present":true,"nullable":true,"format":"YYYY-MM-DD","description":"The date the totals run through.","values":null,"record":null,"example":null,"where":"Only in GET /v1/candidates/{id}"},{"field":"finance[].source_url","type":"string","always_present":true,"nullable":false,"format":"URL","description":"The FEC page for these totals.","values":null,"record":null,"example":null,"where":"Only in GET /v1/candidates/{id}"},{"field":"contests","type":"array of object","always_present":true,"nullable":false,"format":null,"description":"The contests they’re on that you can read, newest election first, each with the endorsements received.","values":null,"record":null,"example":null,"where":"Not in a choice’s candidate"},{"field":"contests[].contest","type":"object","always_present":true,"nullable":false,"format":null,"description":"The contest.","values":null,"record":null,"example":null,"where":"Not in a choice’s candidate"},{"field":"contests[].contest.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Contest id.","values":null,"record":null,"example":"57","where":"Not in a choice’s candidate"},{"field":"contests[].contest.title","type":"string","always_present":true,"nullable":false,"format":null,"description":"Title as printed on the ballot.","values":null,"record":null,"example":"Governor","where":"Not in a choice’s candidate"},{"field":"contests[].contest.kind","type":"string","always_present":true,"nullable":false,"format":null,"description":"candidate or retention.","values":{"set":"contest-kind","open":false,"codes":["candidate","measure","retention"]},"record":null,"example":"candidate","where":"Not in a choice’s candidate"},{"field":"contests[].contest.vote_method","type":"string","always_present":true,"nullable":false,"format":null,"description":"How votes are cast.","values":{"set":"vote-method","open":false,"codes":["plurality","multi_seat","ranked_choice","approval","yes_no"]},"record":null,"example":"plurality","where":"Not in a choice’s candidate"},{"field":"contests[].contest.votes_allowed","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Vote for N.","values":null,"record":null,"example":"1","where":"Not in a choice’s candidate"},{"field":"contests[].contest.ranks_allowed","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Ranked choice: how many choices a voter may rank.","values":null,"record":null,"example":null,"where":"Not in a choice’s candidate"},{"field":"contests[].contest.office","type":"object","always_present":true,"nullable":true,"format":null,"description":"The office the contest fills.","values":null,"record":null,"example":null,"where":"Not in a choice’s candidate"},{"field":"contests[].contest.office.type","type":"string","always_present":true,"nullable":false,"format":null,"description":"The office, normalized across states: us_representative, governor, state_senator, mayor, school_board, trial_court, sheriff, …","values":{"set":"office-type","open":false,"codes":["president","us_senator","us_representative","governor","lieutenant_governor","attorney_general","secretary_of_state","state_treasurer","state_auditor","state_superintendent","insurance_commissioner","agriculture_commissioner","land_commissioner","labor_commissioner","utility_commission","university_board","state_board_of_education","state_senator","state_representative","state_supreme_court","state_appellate_court","trial_court","municipal_court","magistrate","justice_of_the_peace","court_clerk","mayor","local_executive","city_council","county_legislature","neighborhood_council","school_board","school_superintendent","college_board","special_district_board","water_conservation_board","sheriff","prosecutor","coroner","constable","assessor","tax_collector","treasurer","auditor","recorder","clerk","surveyor","public_works","police_fire","other_county_office","other"]},"record":null,"example":"governor","where":"Not in a choice’s candidate"},{"field":"contests[].contest.office.level","type":"string","always_present":true,"nullable":false,"format":null,"description":"Level of government the office belongs to (state courts are state, whatever district they sit in).","values":{"set":"office-level","open":false,"codes":["federal","state","local"]},"record":null,"example":"state","where":"Not in a choice’s candidate"},{"field":"contests[].contest.office.branch","type":"string","always_present":true,"nullable":false,"format":null,"description":"Branch of government.","values":{"set":"office-branch","open":false,"codes":["executive","legislative","judicial"]},"record":null,"example":"executive","where":"Not in a choice’s candidate"},{"field":"contests[].contest.race_type","type":"string","always_present":true,"nullable":true,"format":null,"description":"regular, special, recall or retention.","values":{"set":"race-type","open":false,"codes":["regular","special","recall","retention"]},"record":null,"example":"regular","where":"Not in a choice’s candidate"},{"field":"contests[].district","type":"object","always_present":true,"nullable":false,"format":null,"description":"The district the contest is voted in.","values":null,"record":null,"example":null,"where":"Not in a choice’s candidate"},{"field":"contests[].district.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"District id.","values":null,"record":null,"example":"1","where":"Not in a choice’s candidate"},{"field":"contests[].district.ocd_id","type":"string","always_present":true,"nullable":true,"format":null,"description":"Open Civic Data division id.","values":null,"record":null,"example":"ocd-division/country:us/state:ca","where":"Not in a choice’s candidate"},{"field":"contests[].district.name","type":"string","always_present":true,"nullable":false,"format":null,"description":"District name.","values":null,"record":null,"example":"California","where":"Not in a choice’s candidate"},{"field":"contests[].district.level","type":"string","always_present":true,"nullable":false,"format":null,"description":"Level of government.","values":{"set":"district-level","open":false,"codes":["federal","state","county","city","school","special"]},"record":null,"example":"state","where":"Not in a choice’s candidate"},{"field":"contests[].district.state","type":"string","always_present":true,"nullable":true,"format":"Two capital letters (USPS code)","description":"USPS state code.","values":null,"record":null,"example":"CA","where":"Not in a choice’s candidate"},{"field":"contests[].election","type":"object","always_present":true,"nullable":false,"format":null,"description":"The contest’s election.","values":null,"record":null,"example":null,"where":"Not in a choice’s candidate"},{"field":"contests[].election.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Election id.","values":null,"record":null,"example":"1","where":"Not in a choice’s candidate"},{"field":"contests[].election.slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"Election slug.","values":null,"record":null,"example":"ca-2026-11-03-general","where":"Not in a choice’s candidate"},{"field":"contests[].election.name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Election name.","values":null,"record":null,"example":"California General Election","where":"Not in a choice’s candidate"},{"field":"contests[].election.date","type":"string","always_present":true,"nullable":false,"format":"YYYY-MM-DD","description":"Election day.","values":null,"record":null,"example":"2026-11-03","where":"Not in a choice’s candidate"},{"field":"contests[].choice","type":"object","always_present":true,"nullable":false,"format":null,"description":"The line the candidate appears on in this contest.","values":null,"record":null,"example":null,"where":"Not in a choice’s candidate"},{"field":"contests[].choice.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Choice id.","values":null,"record":null,"example":"13","where":"Not in a choice’s candidate"},{"field":"contests[].choice.label","type":"string","always_present":true,"nullable":false,"format":null,"description":"The name as printed.","values":null,"record":null,"example":"Xavier Becerra","where":"Not in a choice’s candidate"},{"field":"contests[].choice.ballot_designation","type":"string","always_present":true,"nullable":true,"format":null,"description":"Occupation line printed under the name.","values":null,"record":null,"example":"Voting Rights Attorney","where":"Not in a choice’s candidate"},{"field":"contests[].choice.withdrawn","type":"boolean","always_present":true,"nullable":false,"format":null,"description":"Withdrew but still printed.","values":null,"record":null,"example":"false","where":"Not in a choice’s candidate"},{"field":"contests[].choice.party","type":"Party","always_present":true,"nullable":true,"format":null,"description":"The party printed beside the name.","values":null,"record":"party","example":null,"where":"Not in a choice’s candidate"},{"field":"contests[].choice.party_label","type":"string","always_present":true,"nullable":true,"format":null,"description":"The party text exactly as printed, where it differs.","values":null,"record":null,"example":null,"where":"Not in a choice’s candidate"},{"field":"contests[].choice.result","type":"object","always_present":true,"nullable":true,"format":null,"description":"The candidate’s votes and whether they won, once the contest has a result.","values":null,"record":null,"example":null,"where":"Not in a choice’s candidate"},{"field":"contests[].choice.result.votes","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Votes for this choice. null only on a party-reported result, which names a winner without counts.","values":null,"record":null,"example":"8124241","where":"Not in a choice’s candidate"},{"field":"contests[].choice.result.vote_pct","type":"number","always_present":true,"nullable":true,"format":null,"description":"Share of the contest’s votes, 0 to 100, as the source gives it (three decimals).","values":null,"record":null,"example":"65.728","where":"Not in a choice’s candidate"},{"field":"contests[].choice.result.winner","type":"boolean","always_present":true,"nullable":true,"format":null,"description":"true for a winner (for vote-for-N, each of the N), false for a choice that lost; null when not decided yet or not stated, such as a race headed to a runoff.","values":null,"record":null,"example":"true","where":"Not in a choice’s candidate"},{"field":"contests[].result","type":"Contest result","always_present":true,"nullable":true,"format":null,"description":"The contest’s result, once a source has one.","values":null,"record":"result","example":null,"where":"Not in a choice’s candidate"},{"field":"contests[].endorsement_count","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Endorsers who endorsed this candidate in this contest.","values":null,"record":null,"example":"50","where":"Not in a choice’s candidate"},{"field":"contests[].endorsements","type":"array of Endorsement","always_present":true,"nullable":false,"format":null,"description":"Every endorsement they received in this contest, by endorser name.","values":null,"record":"endorsement","example":null,"where":"Only in GET /v1/candidates/{id}"},{"field":"issue_positions","type":"array of Issue position","always_present":true,"nullable":false,"format":null,"description":"Where they stand on common issues (GET /v1/issues), in issue order, each with its sources. Empty where we have none yet.","values":null,"record":"issue-position","example":null,"where":"Only in GET /v1/candidates/{id}"}]},{"id":"issue","title":"Issue","summary":"A policy issue we record candidates’ positions on, framed as a yes or no question.","endpoints":["GET /v1/issues"],"relations":[],"notes":[],"fields":[{"field":"slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"Issue slug, for issues= filters.","values":{"set":"issue","open":true,"codes":["abortion","death-penalty","guns","immigration-enforcement","path-to-citizenship","school-choice","public-school-funding","social-security-medicare","medicaid-snap","health-coverage","climate-clean-energy","taxes-high-earners","minimum-wage","unions","lgbtq-protections","transgender-athletes","criminal-justice","marijuana","voter-id","tariffs","ukraine-aid","money-in-politics","congress-stock-trading"]},"record":null,"example":"abortion","where":null},{"field":"name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Short name: “Abortion”.","values":null,"record":null,"example":"Abortion","where":null},{"field":"question","type":"string","always_present":true,"nullable":false,"format":null,"description":"The yes/no question a position’s stance answers.","values":null,"record":null,"example":"Should abortion be legal in most or all cases?","where":null},{"field":"description","type":"string","always_present":true,"nullable":false,"format":null,"description":"What the issue covers.","values":null,"record":null,"example":"Access to abortion, including bans, gestational limits, exceptions, federal protections a…","where":null}]},{"id":"issue-position","title":"Issue position","summary":"Where one candidate stands on one issue, with a neutral summary, their own words where we have them, and the sources.","endpoints":["GET /v1/issue-positions","GET /v1/candidates/{id}"],"relations":["issue.slug is one of GET /v1/issues; stance answers that issue’s question."],"notes":["Positions come only from what the candidate said or how they voted, never from their party or endorsements. Every position has at least one source.","stance is null for a stated position that answers the question neither way."],"fields":[{"field":"id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Position id.","values":null,"record":null,"example":"1","where":null},{"field":"issue","type":"object","always_present":true,"nullable":false,"format":null,"description":"The issue (GET /v1/issues).","values":null,"record":null,"example":null,"where":null},{"field":"issue.slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"Issue slug.","values":{"set":"issue","open":true,"codes":["abortion","death-penalty","guns","immigration-enforcement","path-to-citizenship","school-choice","public-school-funding","social-security-medicare","medicaid-snap","health-coverage","climate-clean-energy","taxes-high-earners","minimum-wage","unions","lgbtq-protections","transgender-athletes","criminal-justice","marijuana","voter-id","tariffs","ukraine-aid","money-in-politics","congress-stock-trading"]},"record":null,"example":"health-coverage","where":null},{"field":"issue.name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Issue name.","values":null,"record":null,"example":"Health coverage","where":null},{"field":"stance","type":"string","always_present":true,"nullable":true,"format":null,"description":"The answer to the issue’s question: supports (yes), opposes (no), mixed (yes to part, or yes with limits the summary spells out), or null for a stated position that doesn’t answer it either way.","values":{"set":"stance","open":false,"codes":["supports","opposes","mixed"]},"record":null,"example":"opposes","where":null},{"field":"summary","type":"string","always_present":true,"nullable":false,"format":null,"description":"Where they stand, in neutral words: what they said, or how they voted.","values":null,"record":null,"example":"Voted against the January 8, 2026 bill (H.R. 1834) to extend the enhanced Affordable Care…","where":null},{"field":"quote","type":"string","always_present":true,"nullable":true,"format":null,"description":"Their own words, verbatim, where a source has them.","values":null,"record":null,"example":null,"where":null},{"field":"checked_on","type":"string","always_present":true,"nullable":false,"format":"YYYY-MM-DD","description":"When the sources were last read.","values":null,"record":null,"example":"2026-11-12","where":null},{"field":"sources","type":"array of object","always_present":true,"nullable":false,"format":null,"description":"Every link the position was taken from; at least one.","values":null,"record":null,"example":null,"where":null},{"field":"sources[].url","type":"string","always_present":true,"nullable":false,"format":"URL","description":"Where the position comes from.","values":null,"record":null,"example":"https://clerk.house.gov/Votes/202611","where":null},{"field":"sources[].kind","type":"string","always_present":true,"nullable":false,"format":null,"description":"What kind of source: the candidate’s own site, an official roll-call vote record, an official statement, a published candidate questionnaire, a debate, or news reporting.","values":{"set":"issue-source-kind","open":false,"codes":["candidate_website","voting_record","official_statement","questionnaire","debate","news"]},"record":null,"example":"voting_record","where":null},{"field":"sources[].publisher","type":"string","always_present":true,"nullable":false,"format":null,"description":"Who published it: “U.S. Senate”, “The Atlanta Journal-Constitution”.","values":null,"record":null,"example":"U.S. House Clerk","where":null},{"field":"sources[].title","type":"string","always_present":true,"nullable":true,"format":null,"description":"The source’s title.","values":null,"record":null,"example":"Roll call 11, House (2026)","where":null},{"field":"sources[].published_on","type":"string","always_present":true,"nullable":true,"format":"YYYY-MM-DD","description":"When it was published, where known.","values":null,"record":null,"example":"2026-10-03","where":null},{"field":"candidate","type":"object","always_present":true,"nullable":false,"format":null,"description":"The candidate (GET /v1/candidates/{id}).","values":null,"record":null,"example":null,"where":"Only in GET /v1/issue-positions"},{"field":"candidate.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Candidate id.","values":null,"record":null,"example":"17246","where":"Only in GET /v1/issue-positions"},{"field":"candidate.full_name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Full name.","values":null,"record":null,"example":"Nick Begich","where":"Only in GET /v1/issue-positions"},{"field":"contests","type":"array of object","always_present":true,"nullable":false,"format":null,"description":"The candidate’s contests that you can read (and that match the filters), newest election first.","values":null,"record":null,"example":null,"where":"Only in GET /v1/issue-positions"},{"field":"contests[].id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Contest id.","values":null,"record":null,"example":"9963","where":"Only in GET /v1/issue-positions"},{"field":"contests[].title","type":"string","always_present":true,"nullable":false,"format":null,"description":"Title as printed on the ballot.","values":null,"record":null,"example":"United States Representative","where":"Only in GET /v1/issue-positions"},{"field":"contests[].election","type":"object","always_present":true,"nullable":false,"format":null,"description":"The contest’s election.","values":null,"record":null,"example":null,"where":"Only in GET /v1/issue-positions"},{"field":"contests[].election.slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"Election slug.","values":null,"record":null,"example":"ak-2026-11-03-general","where":"Only in GET /v1/issue-positions"},{"field":"contests[].election.date","type":"string","always_present":true,"nullable":false,"format":"YYYY-MM-DD","description":"Election day.","values":null,"record":null,"example":"2026-11-03","where":"Only in GET /v1/issue-positions"},{"field":"contests[].state","type":"string","always_present":true,"nullable":false,"format":"Two capital letters (USPS code)","description":"USPS state code.","values":null,"record":null,"example":"AK","where":"Only in GET /v1/issue-positions"}]},{"id":"officeholder","title":"Officeholder","summary":"Who holds a seat now: a governor, a member of Congress or a state legislator.","endpoints":["GET /v1/officeholders","GET /v1/officeholders/{id}"],"relations":["district_id is the id of the contest district for the same seat, so a contest’s district.id finds who holds it now."],"notes":["person_id comes from Open States and stays the same across terms and offices."],"fields":[{"field":"person_id","type":"string","always_present":true,"nullable":false,"format":"UUID","description":"Open States person id; stays the same across terms and offices.","values":null,"record":null,"example":"6c2a35d5-c04c-44d0-8bd9-92a625e2b525","where":null},{"field":"name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Full name.","values":null,"record":null,"example":"Akilah Weber Pierson","where":null},{"field":"given_name","type":"string","always_present":true,"nullable":true,"format":null,"description":"Given name.","values":null,"record":null,"example":"Akilah","where":null},{"field":"family_name","type":"string","always_present":true,"nullable":true,"format":null,"description":"Family name.","values":null,"record":null,"example":"Weber Pierson","where":null},{"field":"office","type":"string","always_present":true,"nullable":false,"format":null,"description":"The office held, normalized across states.","values":{"set":"officeholder-office","open":false,"codes":["us_senator","us_representative","governor","lieutenant_governor","attorney_general","secretary_of_state","chief_election_officer","treasurer","auditor","state_senator","state_representative","state_legislator","city_council"]},"record":null,"example":"state_senator","where":null},{"field":"office_title","type":"string","always_present":true,"nullable":false,"format":null,"description":"Title the state uses: “Assemblymember”, “Delegate”.","values":null,"record":null,"example":"State Senator","where":null},{"field":"level","type":"string","always_present":true,"nullable":false,"format":null,"description":"Level of government.","values":{"set":"officeholder-level","open":false,"codes":["federal","state","city"]},"record":null,"example":"state","where":null},{"field":"state","type":"string","always_present":true,"nullable":false,"format":"Two capital letters (USPS code)","description":"USPS state code.","values":null,"record":null,"example":"CA","where":null},{"field":"district","type":"string","always_present":true,"nullable":true,"format":null,"description":"District as the legislature names it: \"12\", \"1A\", \"21st Middlesex\".","values":null,"record":null,"example":"39","where":null},{"field":"district_ocd_id","type":"string","always_present":true,"nullable":false,"format":null,"description":"OCD division id of the seat.","values":null,"record":null,"example":"ocd-division/country:us/state:ca/sldu:39","where":null},{"field":"district_id","type":"integer","always_present":true,"nullable":true,"format":null,"description":"The matching contest district id, where there is one.","values":null,"record":null,"example":"245","where":null},{"field":"party","type":"string","always_present":true,"nullable":true,"format":null,"description":"Party as published: “Democratic”, “Republican/Conservative”.","values":null,"record":null,"example":"Democratic","where":null},{"field":"party_abbreviation","type":"string","always_present":true,"nullable":true,"format":null,"description":"Party abbreviation.","values":null,"record":null,"example":"DEM","where":null},{"field":"term_start","type":"string","always_present":true,"nullable":true,"format":"YYYY-MM-DD","description":"Start of the current term.","values":null,"record":null,"example":"2024-12-02","where":null},{"field":"term_end","type":"string","always_present":true,"nullable":true,"format":"YYYY-MM-DD","description":"End of the current term.","values":null,"record":null,"example":null,"where":null},{"field":"email","type":"string","always_present":true,"nullable":true,"format":"Email address","description":"Official office email.","values":null,"record":null,"example":"senator.weber@senate.ca.gov","where":null},{"field":"phone","type":"string","always_present":true,"nullable":true,"format":null,"description":"Office phone (capitol office first).","values":null,"record":null,"example":"916-651-4039","where":null},{"field":"website_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"Their official web page.","values":null,"record":null,"example":"https://sd39.senate.ca.gov/","where":null},{"field":"image_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"Their official photo.","values":null,"record":null,"example":"https://sd39.senate.ca.gov/sites/sd39.senate.ca.gov/files/website/sd39_bio_portrait.jpg","where":null},{"field":"offices","type":"array of object","always_present":true,"nullable":false,"format":null,"description":"Offices with their addresses and phones.","values":null,"record":null,"example":null,"where":null},{"field":"offices[].classification","type":"string","always_present":false,"nullable":false,"format":null,"description":"Which office: capitol, district, home or primary.","values":{"set":"office-classification","open":true,"codes":["capitol","district","home","capitol-mail","district-mail","primary"]},"record":null,"example":"capitol","where":null},{"field":"offices[].address","type":"string","always_present":false,"nullable":false,"format":null,"description":"The office’s mailing address.","values":null,"record":null,"example":"1021 O St. Suite 7310, Sacramento, CA 95814","where":null},{"field":"offices[].voice","type":"string","always_present":false,"nullable":false,"format":null,"description":"The office’s phone number.","values":null,"record":null,"example":"916-651-4039","where":null},{"field":"offices[].fax","type":"string","always_present":false,"nullable":false,"format":null,"description":"The office’s fax number.","values":null,"record":null,"example":null,"where":null},{"field":"social","type":"object","always_present":true,"nullable":false,"format":null,"description":"Social accounts, where known. Only keys we have are present.","values":null,"record":null,"example":null,"where":null},{"field":"social.twitter","type":"string","always_present":false,"nullable":false,"format":null,"description":"X (Twitter) handle, without the @.","values":null,"record":null,"example":null,"where":null},{"field":"social.facebook","type":"string","always_present":false,"nullable":false,"format":null,"description":"Facebook handle.","values":null,"record":null,"example":null,"where":null},{"field":"social.instagram","type":"string","always_present":false,"nullable":false,"format":null,"description":"Instagram handle.","values":null,"record":null,"example":null,"where":null},{"field":"social.youtube","type":"string","always_present":false,"nullable":false,"format":null,"description":"YouTube handle or channel id.","values":null,"record":null,"example":null,"where":null},{"field":"source_urls","type":"array of string","always_present":true,"nullable":false,"format":"URL","description":"Where the data came from.","values":null,"record":null,"example":"[\"https://a79.asmdc.org\",\"https://a79.asmdc.org/\",\"https://ballotpedia.org/Akilah_Weber\",…","where":null},{"field":"updated_at","type":"string","always_present":true,"nullable":false,"format":"ISO 8601 date and time with time zone","description":"When we last refreshed this record.","values":null,"record":null,"example":"2026-11-13T03:04:14.637025+00:00","where":null},{"field":"seats","type":"array of Officeholder","always_present":true,"nullable":false,"format":null,"description":"Every seat they hold (rarely more than one).","values":null,"record":"officeholder","example":null,"where":"Only in GET /v1/officeholders/{id}"}]},{"id":"endorser","title":"Endorser","summary":"An organization or person that endorses: a union, a newspaper, a party, an advocacy group or an elected official.","endpoints":["GET /v1/endorsers","GET /v1/endorsers/{slug}"],"relations":["An endorser has many endorsements across elections; filter any endorsement list with endorsers={slug}.","category is one of GET /v1/endorser-categories."],"notes":["We collect every endorser, however few endorsements they make. endorsement_count counts contests, so a ranked-choice ranking or a slate counts once.","state is null for national endorsers; filter them with endorser_states=national."],"fields":[{"field":"id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Endorser id.","values":null,"record":null,"example":"1","where":null},{"field":"slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"Endorser slug.","values":null,"record":null,"example":"sf-chronicle","where":null},{"field":"name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Endorser name.","values":null,"record":null,"example":"San Francisco Chronicle","where":null},{"field":"category","type":"Endorser category","always_present":true,"nullable":false,"format":null,"description":"The kind of endorser.","values":null,"record":"endorser-category","example":null,"where":null},{"field":"description","type":"string","always_present":true,"nullable":true,"format":null,"description":"About the endorser.","values":null,"record":null,"example":"Daily newspaper editorial board","where":"Not in positions and a candidate’s endorsements"},{"field":"website_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"Endorser’s website.","values":null,"record":null,"example":"https://www.sfchronicle.com/opinion/","where":"Not in positions and a candidate’s endorsements"},{"field":"logo_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"The endorser’s logo image.","values":null,"record":null,"example":null,"where":"Not in positions and a candidate’s endorsements"},{"field":"state","type":"string","always_present":true,"nullable":true,"format":"Two capital letters (USPS code)","description":"Home state; null for national endorsers.","values":null,"record":null,"example":"CA","where":null},{"field":"party","type":"Party","always_present":true,"nullable":true,"format":null,"description":"The party, for a party or party club.","values":null,"record":"party","example":null,"where":"Not in positions and a candidate’s endorsements"},{"field":"endorsement_count","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Contests this endorser takes a position in, across every election you can read. A ranked-choice order or a vote-for-N slate counts once.","values":null,"record":null,"example":"18","where":"Not in positions and a candidate’s endorsements"},{"field":"elections","type":"array of object","always_present":true,"nullable":false,"format":null,"description":"Elections the endorser has endorsed in, newest first.","values":null,"record":null,"example":null,"where":"Only in GET /v1/endorsers/{slug}"},{"field":"elections[].election","type":"string","always_present":true,"nullable":false,"format":null,"description":"Election slug.","values":null,"record":null,"example":null,"where":"Only in GET /v1/endorsers/{slug}"},{"field":"elections[].name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Election name.","values":null,"record":null,"example":null,"where":"Only in GET /v1/endorsers/{slug}"},{"field":"elections[].date","type":"string","always_present":true,"nullable":false,"format":"YYYY-MM-DD","description":"Election day.","values":null,"record":null,"example":null,"where":"Only in GET /v1/endorsers/{slug}"},{"field":"elections[].contests","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Contests this endorser took a position in.","values":null,"record":null,"example":null,"where":"Only in GET /v1/endorsers/{slug}"}]},{"id":"position","title":"Position","summary":"One endorser’s position in one contest: the choice, choices or ranking they endorsed.","endpoints":["GET /v1/contests/{id}","GET /v1/elections/{slug}/export"],"relations":["Each pick is one endorsement (endorsement_id) of one choice (choice_id) in the contest.","One pick for a vote-for-one race, up to votes_allowed for a vote-for-N race, a ranking for ranked choice, and Yes or No for a measure."],"notes":["An endorser who took no position in the contest has no entry."],"fields":[{"field":"endorser","type":"Endorser","always_present":true,"nullable":false,"format":null,"description":"Who made an endorsement.","values":null,"record":"endorser","example":null,"where":null},{"field":"picks","type":"array of Endorsement","always_present":true,"nullable":false,"format":null,"description":"One pick for vote-for-one, up to N for vote-for-N, the ranking for ranked choice, Yes or No for a measure.","values":null,"record":"endorsement","example":null,"where":null}]},{"id":"endorsement","title":"Endorsement","summary":"One endorser endorsing one choice in one contest, with what they said and where they published it.","endpoints":["GET /v1/endorsements","GET /v1/endorsements/{id}","GET /v1/contests/{id}","GET /v1/candidates/{id}","GET /v1/elections/{slug}/export"],"relations":["An endorsement links an endorser to one choice in one contest. A ranked-choice ranking or a vote-for-N slate is several endorsements, one per choice.","Its id is stable: GET /v1/endorsements/{id}/history lists every change to it, and GET /v1/changes every change to all of them."],"notes":["added_by says how it got here: a researched data load, staff entry, or our automatic watch of the endorser’s own page.","statement, source_url and published_on are null where the endorser’s list gives none.","stage comes from the election: general, primary or runoff."],"fields":[{"field":"id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Endorsement id.","values":null,"record":null,"example":"51411","where":"Only in GET /v1/endorsements/{id} and GET /v1/endorsements"},{"field":"rank","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Ranked choice: the rank the endorser gave; null otherwise.","values":null,"record":null,"example":"1","where":null},{"field":"statement","type":"string","always_present":true,"nullable":true,"format":null,"description":"What the endorser said.","values":null,"record":null,"example":null,"where":"Not in GET /v1/endorsements"},{"field":"source_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"Where it was published.","values":null,"record":null,"example":"https://berkeleydemocraticclub.com/","where":"Not in GET /v1/endorsements"},{"field":"published_on","type":"string","always_present":true,"nullable":true,"format":"YYYY-MM-DD","description":"When it was published.","values":null,"record":null,"example":null,"where":null},{"field":"retrieved_at","type":"string","always_present":true,"nullable":false,"format":"ISO 8601 date and time with time zone","description":"When we collected it.","values":null,"record":null,"example":"2026-11-13T03:09:35.128Z","where":"Only in GET /v1/endorsements/{id}"},{"field":"added_by","type":"string","always_present":true,"nullable":false,"format":null,"description":"How the endorsement got here: automatic (added by our automatic watch of the endorser’s own page), staff (entered by hand by BallotData staff) or data_load (loaded in a researched data pass).","values":{"set":"added-by","open":false,"codes":["automatic","staff","data_load"]},"record":null,"example":"data_load","where":null},{"field":"stage","type":"string","always_present":true,"nullable":false,"format":null,"description":"The election stage the endorsement is for: general, primary or runoff (from the election it is in).","values":{"set":"stage","open":false,"codes":["general","primary","runoff"]},"record":null,"example":"general","where":null},{"field":"endorser","type":"object","always_present":true,"nullable":false,"format":null,"description":"Who made the endorsement.","values":null,"record":null,"example":null,"where":"Not in a position’s picks"},{"field":"endorser.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Endorser id.","values":null,"record":null,"example":"6260","where":"Only in GET /v1/endorsements/{id} and GET /v1/endorsements"},{"field":"endorser.slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"Endorser slug.","values":null,"record":null,"example":"berkeley-democratic-club","where":"Only in GET /v1/endorsements/{id} and GET /v1/endorsements"},{"field":"endorser.name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Endorser name.","values":null,"record":null,"example":"Berkeley Democratic Club","where":"Only in GET /v1/endorsements/{id} and GET /v1/endorsements"},{"field":"endorser.category","type":"Endorser category","always_present":true,"nullable":false,"format":null,"description":"The kind of endorser.","values":null,"record":"endorser-category","example":null,"where":"Only in GET /v1/endorsements/{id}"},{"field":"endorser.description","type":"string","always_present":true,"nullable":true,"format":null,"description":"About the endorser.","values":null,"record":null,"example":"Chartered Democratic club in Berkeley; endorses in Berkeley city, school and ballot measu…","where":"Only in GET /v1/endorsements/{id}"},{"field":"endorser.website_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"Endorser’s website.","values":null,"record":null,"example":"https://berkeleydemocraticclub.com/","where":"Only in GET /v1/endorsements/{id}"},{"field":"endorser.logo_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"The endorser’s logo image.","values":null,"record":null,"example":null,"where":"Only in GET /v1/endorsements/{id}"},{"field":"endorser.state","type":"string","always_present":true,"nullable":true,"format":"Two capital letters (USPS code)","description":"Home state; null for national endorsers.","values":null,"record":null,"example":"CA","where":"Only in GET /v1/endorsements/{id}"},{"field":"endorser.party","type":"Party","always_present":true,"nullable":true,"format":null,"description":"The party, for a party or party club.","values":null,"record":"party","example":null,"where":"Only in GET /v1/endorsements/{id}"},{"field":"contest","type":"Contest","always_present":true,"nullable":false,"format":null,"description":"The contest, with its district and election.","values":null,"record":"contest","example":null,"where":"Only in GET /v1/endorsements/{id} and GET /v1/endorsements"},{"field":"choice","type":"Choice","always_present":true,"nullable":false,"format":null,"description":"The choice endorsed, with its candidate.","values":null,"record":"choice","example":null,"where":"Only in GET /v1/endorsements/{id} and GET /v1/endorsements"},{"field":"contest.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Contest id.","values":null,"record":null,"example":"92","where":"Only in GET /v1/endorsements"},{"field":"contest.title","type":"string","always_present":true,"nullable":false,"format":null,"description":"Title as printed on the ballot.","values":null,"record":null,"example":"Member of City Council, District 1, City of Berkeley","where":"Only in GET /v1/endorsements"},{"field":"election","type":"object","always_present":true,"nullable":false,"format":null,"description":"The contest’s election.","values":null,"record":null,"example":null,"where":"Only in GET /v1/endorsements"},{"field":"election.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Election id.","values":null,"record":null,"example":"1","where":"Only in GET /v1/endorsements"},{"field":"election.slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"Election slug.","values":null,"record":null,"example":"ca-2026-11-03-general","where":"Only in GET /v1/endorsements"},{"field":"election.date","type":"string","always_present":true,"nullable":false,"format":"YYYY-MM-DD","description":"Election day.","values":null,"record":null,"example":"2026-11-03","where":"Only in GET /v1/endorsements"},{"field":"choice.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Choice id.","values":null,"record":null,"example":"194","where":"Only in GET /v1/endorsements"},{"field":"choice.label","type":"string","always_present":true,"nullable":false,"format":null,"description":"As printed: the candidate’s ballot name, or Yes / No.","values":null,"record":null,"example":"Ross Bernet","where":"Only in GET /v1/endorsements"},{"field":"choice.measure_answer","type":"string","always_present":true,"nullable":true,"format":null,"description":"yes or no for a measure; null for a candidate.","values":{"set":"measure-answer","open":false,"codes":["yes","no"]},"record":null,"example":"yes","where":"Only in GET /v1/endorsements"},{"field":"endorsement_id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Endorsement id.","values":null,"record":null,"example":"1485","where":"Only in a candidate’s endorsements and a position’s picks"},{"field":"choice_id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"The Choice endorsed.","values":null,"record":null,"example":"194","where":"Only in a position’s picks"},{"field":"label","type":"string","always_present":true,"nullable":false,"format":null,"description":"That choice’s label.","values":null,"record":null,"example":"Ross Bernet","where":"Only in a position’s picks"},{"field":"measure_answer","type":"string","always_present":true,"nullable":true,"format":null,"description":"yes or no for a measure.","values":{"set":"measure-answer","open":false,"codes":["yes","no"]},"record":null,"example":null,"where":"Only in a position’s picks"}]},{"id":"endorsement-history","title":"Endorsement history","summary":"One change to one endorsement: created, updated or deleted, with its values before and after.","endpoints":["GET /v1/endorsements/{id}/history"],"relations":[],"notes":["We have kept history since October 27, 2026. For an endorsement collected before then, the created entry’s time is when we collected it.","choice_label is null if the choice has since been removed from the ballot."],"fields":[{"field":"at","type":"string","always_present":true,"nullable":false,"format":"ISO 8601 date and time with time zone","description":"When the change was made. For endorsements collected before we kept history (October 27, 2026), created is when we collected it.","values":null,"record":null,"example":"2026-09-19T04:12:08.331Z","where":null},{"field":"change","type":"string","always_present":true,"nullable":false,"format":null,"description":"What happened to the endorsement: created, updated or deleted.","values":{"set":"change","open":false,"codes":["created","updated","deleted"]},"record":null,"example":"created","where":null},{"field":"changed","type":"array of string","always_present":true,"nullable":false,"format":null,"description":"For updated: the fields that changed. Empty otherwise.","values":{"set":"changed-field","open":false,"codes":["choice_id","rank","statement","source_url","published_on"]},"record":null,"example":"[\"rank\"]","where":null},{"field":"before","type":"object","always_present":true,"nullable":true,"format":null,"description":"The values before the change; null for created.","values":null,"record":null,"example":null,"where":null},{"field":"before.choice_id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"The choice endorsed.","values":null,"record":null,"example":"20931","where":null},{"field":"before.choice_label","type":"string","always_present":true,"nullable":true,"format":null,"description":"That choice’s label as printed; null if the choice has since been removed from the ballot.","values":null,"record":null,"example":"Jane Doe","where":null},{"field":"before.rank","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Ranked choice: the rank; null otherwise.","values":null,"record":null,"example":"2","where":null},{"field":"before.statement","type":"string","always_present":true,"nullable":true,"format":null,"description":"What the endorser said.","values":null,"record":null,"example":null,"where":null},{"field":"before.source_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"Where it was published.","values":null,"record":null,"example":"https://sflaborcouncil.org/endorsements","where":null},{"field":"before.published_on","type":"string","always_present":true,"nullable":true,"format":"YYYY-MM-DD","description":"When it was published.","values":null,"record":null,"example":"2026-09-18","where":null},{"field":"after","type":"object","always_present":true,"nullable":true,"format":null,"description":"The values after the change; null for deleted.","values":null,"record":null,"example":null,"where":null},{"field":"after.choice_id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"The choice endorsed.","values":null,"record":null,"example":"20931","where":null},{"field":"after.choice_label","type":"string","always_present":true,"nullable":true,"format":null,"description":"That choice’s label as printed; null if the choice has since been removed from the ballot.","values":null,"record":null,"example":"Jane Doe","where":null},{"field":"after.rank","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Ranked choice: the rank; null otherwise.","values":null,"record":null,"example":"2","where":null},{"field":"after.statement","type":"string","always_present":true,"nullable":true,"format":null,"description":"What the endorser said.","values":null,"record":null,"example":null,"where":null},{"field":"after.source_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"Where it was published.","values":null,"record":null,"example":"https://sflaborcouncil.org/endorsements","where":null},{"field":"after.published_on","type":"string","always_present":true,"nullable":true,"format":"YYYY-MM-DD","description":"When it was published.","values":null,"record":null,"example":"2026-09-18","where":null}]},{"id":"change","title":"Change","summary":"One entry in the feed of every endorsement added, changed or deleted, for keeping a copy up to date.","endpoints":["GET /v1/changes"],"relations":["endorsement_id is the endorsement changed. The same change is in that endorsement’s history."],"notes":["Changes are in id order. Keep the next_cursor of the last page you read and pass it next time, so nothing is missed or repeated.","The endorser’s slug and name are null if the endorser has since been removed."],"fields":[{"field":"id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"The change’s id: increasing and unique. Pages are in this order.","values":null,"record":null,"example":"512330","where":null},{"field":"at","type":"string","always_present":true,"nullable":false,"format":"ISO 8601 date and time with time zone","description":"When the change was made.","values":null,"record":null,"example":"2026-11-02T18:04:11.902Z","where":null},{"field":"change","type":"string","always_present":true,"nullable":false,"format":null,"description":"What happened to the endorsement: created, updated or deleted.","values":{"set":"change","open":false,"codes":["created","updated","deleted"]},"record":null,"example":"updated","where":null},{"field":"changed","type":"array of string","always_present":true,"nullable":false,"format":null,"description":"For updated: the fields that changed. Empty otherwise.","values":{"set":"changed-field","open":false,"codes":["choice_id","rank","statement","source_url","published_on"]},"record":null,"example":"[\"rank\"]","where":null},{"field":"endorsement_id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"The endorsement changed.","values":null,"record":null,"example":"90211","where":null},{"field":"endorser","type":"object","always_present":true,"nullable":false,"format":null,"description":"Who made the endorsement.","values":null,"record":null,"example":null,"where":null},{"field":"endorser.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Endorser id.","values":null,"record":null,"example":"512","where":null},{"field":"endorser.slug","type":"string","always_present":true,"nullable":true,"format":null,"description":"Endorser slug; null if the endorser has since been removed.","values":null,"record":null,"example":"sf-labor-council","where":null},{"field":"endorser.name","type":"string","always_present":true,"nullable":true,"format":null,"description":"Endorser name; null if the endorser has since been removed.","values":null,"record":null,"example":"San Francisco Labor Council","where":null},{"field":"endorser.category","type":"Endorser category","always_present":true,"nullable":true,"format":null,"description":"The endorser’s category.","values":null,"record":"endorser-category","example":null,"where":null},{"field":"contest","type":"object","always_present":true,"nullable":false,"format":null,"description":"The contest.","values":null,"record":null,"example":null,"where":null},{"field":"contest.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Contest id.","values":null,"record":null,"example":"4410","where":null},{"field":"contest.title","type":"string","always_present":true,"nullable":false,"format":null,"description":"Title as printed on the ballot.","values":null,"record":null,"example":"Member, Board of Supervisors, District 8","where":null},{"field":"election","type":"object","always_present":true,"nullable":false,"format":null,"description":"The contest’s election.","values":null,"record":null,"example":null,"where":null},{"field":"election.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Election id.","values":null,"record":null,"example":"3","where":null},{"field":"election.slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"Election slug.","values":null,"record":null,"example":"ca-2026-11-03-general","where":null},{"field":"election.date","type":"string","always_present":true,"nullable":false,"format":"YYYY-MM-DD","description":"Election day.","values":null,"record":null,"example":"2026-11-03","where":null},{"field":"before","type":"object","always_present":true,"nullable":true,"format":null,"description":"The values before the change; null for created.","values":null,"record":null,"example":null,"where":null},{"field":"before.choice_id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"The choice endorsed.","values":null,"record":null,"example":"20931","where":null},{"field":"before.choice_label","type":"string","always_present":true,"nullable":true,"format":null,"description":"That choice’s label as printed; null if the choice has since been removed from the ballot.","values":null,"record":null,"example":"Jane Doe","where":null},{"field":"before.rank","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Ranked choice: the rank; null otherwise.","values":null,"record":null,"example":"2","where":null},{"field":"before.statement","type":"string","always_present":true,"nullable":true,"format":null,"description":"What the endorser said.","values":null,"record":null,"example":null,"where":null},{"field":"before.source_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"Where it was published.","values":null,"record":null,"example":"https://sflaborcouncil.org/endorsements","where":null},{"field":"before.published_on","type":"string","always_present":true,"nullable":true,"format":"YYYY-MM-DD","description":"When it was published.","values":null,"record":null,"example":"2026-09-18","where":null},{"field":"after","type":"object","always_present":true,"nullable":true,"format":null,"description":"The values after the change; null for deleted.","values":null,"record":null,"example":null,"where":null},{"field":"after.choice_id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"The choice endorsed.","values":null,"record":null,"example":"20931","where":null},{"field":"after.choice_label","type":"string","always_present":true,"nullable":true,"format":null,"description":"That choice’s label as printed; null if the choice has since been removed from the ballot.","values":null,"record":null,"example":"Jane Doe","where":null},{"field":"after.rank","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Ranked choice: the rank; null otherwise.","values":null,"record":null,"example":"1","where":null},{"field":"after.statement","type":"string","always_present":true,"nullable":true,"format":null,"description":"What the endorser said.","values":null,"record":null,"example":null,"where":null},{"field":"after.source_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"Where it was published.","values":null,"record":null,"example":"https://sflaborcouncil.org/endorsements","where":null},{"field":"after.published_on","type":"string","always_present":true,"nullable":true,"format":"YYYY-MM-DD","description":"When it was published.","values":null,"record":null,"example":"2026-09-18","where":null}]},{"id":"endorser-category","title":"Endorser category","summary":"A kind of endorser: labor, editorial, party, business and the rest.","endpoints":["GET /v1/endorser-categories"],"relations":[],"notes":[],"fields":[{"field":"slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"Category slug, used in categories= filters.","values":{"set":"endorser-category","open":true,"codes":["editorial","labor","environment","business","party","club","community","officials"]},"record":null,"example":"editorial","where":null},{"field":"name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Display name (plural).","values":null,"record":null,"example":"Voter guides & editorial boards","where":null},{"field":"singular_name","type":"string","always_present":true,"nullable":false,"format":null,"description":"One of them: “Labor union”.","values":null,"record":null,"example":"Voter guide","where":"Only in GET /v1/endorser-categories"},{"field":"endorser_count","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Endorsers in this category.","values":null,"record":null,"example":"1655","where":"Only in GET /v1/endorser-categories"}]},{"id":"export","title":"Election export (JSON)","summary":"A whole election in one download: the election, then every contest with its choices, result and every endorser’s position.","endpoints":["GET /v1/elections/{slug}/export"],"relations":["The election is given once at the top; each contest has the same fields as a Contest without its election."],"notes":["Contests are in ballot order: races from federal down, then measures. Every contest you can read is there, endorsed or not."],"fields":[{"field":"election","type":"Election","always_present":true,"nullable":false,"format":null,"description":"The election the contest is in.","values":null,"record":"election","example":null,"where":null},{"field":"contests","type":"array of Contest","always_present":true,"nullable":false,"format":null,"description":"Every contest you can read in the election, in ballot order: races from federal down, then measures.","values":null,"record":"contest","example":null,"where":null}]},{"id":"coverage","title":"Coverage","summary":"How much data we have for one state.","endpoints":["GET /v1/coverage"],"relations":[],"notes":["Counts are for upcoming elections unless you pass upcoming=false."],"fields":[{"field":"state","type":"string","always_present":true,"nullable":false,"format":"Two capital letters (USPS code)","description":"USPS state code.","values":null,"record":null,"example":"AK","where":null},{"field":"name","type":"string","always_present":true,"nullable":false,"format":null,"description":"State name.","values":null,"record":null,"example":"Alaska","where":null},{"field":"election_count","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Elections in this state.","values":null,"record":null,"example":"0","where":null},{"field":"contest_count","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Contests in those elections.","values":null,"record":null,"example":"0","where":null},{"field":"measure_count","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Of those, ballot measures.","values":null,"record":null,"example":"0","where":null},{"field":"endorser_count","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Endorsers with endorsements here.","values":null,"record":null,"example":"0","where":null},{"field":"endorsement_count","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Endorsements in those contests.","values":null,"record":null,"example":"0","where":null},{"field":"endorsed_contest_count","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Contests with at least one endorsement.","values":null,"record":null,"example":"0","where":null},{"field":"first_election","type":"string","always_present":true,"nullable":true,"format":"YYYY-MM-DD","description":"Day of the earliest election counted.","values":null,"record":null,"example":null,"where":null},{"field":"last_election","type":"string","always_present":true,"nullable":true,"format":"YYYY-MM-DD","description":"Day of the latest election counted.","values":null,"record":null,"example":null,"where":null},{"field":"updated_at","type":"string","always_present":true,"nullable":true,"format":"ISO 8601 date and time with time zone","description":"When a contest or endorsement last changed.","values":null,"record":null,"example":null,"where":null}]},{"id":"error","title":"Error","summary":"What every endpoint returns when a request fails.","endpoints":[],"relations":[],"notes":["The HTTP status for each code is on the Field values page."],"fields":[{"field":"error","type":"object","always_present":true,"nullable":false,"format":null,"description":"What went wrong.","values":null,"record":null,"example":null,"where":null},{"field":"error.code","type":"string","always_present":true,"nullable":false,"format":null,"description":"Machine-readable error code.","values":{"set":"error-code","open":false,"codes":["missing_api_key","invalid_api_key","revoked_api_key","expired_api_key","ip_not_allowed","account_pending","account_suspended","account_closed","insufficient_scope","no_access","outside_purchase","invalid_parameter","invalid_cursor","invalid_filter","invalid_json","invalid_subscription","body_too_large","not_found","subscription_not_found","conflict","too_many_requests","too_many_failures","rate_limit_exceeded","daily_limit_exceeded","too_many_streams","cursor_expired","warming_up","server_busy","not_available","internal_error"]},"record":null,"example":null,"where":null},{"field":"error.message","type":"string","always_present":true,"nullable":false,"format":null,"description":"What went wrong, in plain English.","values":null,"record":null,"example":null,"where":null},{"field":"error.request_id","type":"string","always_present":true,"nullable":false,"format":"UUID","description":"Quote this when you write to us. Also sent as the X-Request-Id header.","values":null,"record":null,"example":null,"where":null}]},{"id":"stream-event","title":"Stream event","summary":"One endorsement change as the Endorsement Stream delivers it, by Server-Sent Events, polling, email, file or postback.","endpoints":["GET /v1/stream","GET /v1/events"],"relations":["The same changes as GET /v1/changes, with more of the contest and choice in each one."],"notes":["id increases and is unique: use it to drop an event you have already seen."],"fields":[{"field":"id","type":"string","always_present":true,"nullable":false,"format":null,"description":"The change’s id: increasing and unique. Use it to drop repeats.","values":null,"record":null,"example":"18342","where":null},{"field":"type","type":"string","always_present":true,"nullable":false,"format":null,"description":"What happened: an endorsement created, updated or deleted.","values":{"set":"event-type","open":false,"codes":["endorsement.created","endorsement.updated","endorsement.deleted"]},"record":null,"example":"endorsement.created","where":null},{"field":"occurred_at","type":"string","always_present":true,"nullable":false,"format":"ISO 8601 date and time with time zone","description":"When the change was made.","values":null,"record":null,"example":"2026-10-14T21:07:33.512Z","where":null},{"field":"endorsement","type":"object","always_present":true,"nullable":false,"format":null,"description":"The endorsement as it is now (for endorsement.deleted, as it was).","values":null,"record":null,"example":null,"where":null},{"field":"endorsement.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Endorsement id.","values":null,"record":null,"example":"90211","where":null},{"field":"endorsement.rank","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Ranked choice: the rank the endorser gave; null otherwise.","values":null,"record":null,"example":"1","where":null},{"field":"endorsement.statement","type":"string","always_present":true,"nullable":true,"format":null,"description":"What the endorser said.","values":null,"record":null,"example":null,"where":null},{"field":"endorsement.source_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"Where it was published.","values":null,"record":null,"example":"https://sflaborcouncil.org/endorsements","where":null},{"field":"endorsement.published_on","type":"string","always_present":true,"nullable":true,"format":"YYYY-MM-DD","description":"When it was published.","values":null,"record":null,"example":"2026-09-18","where":null},{"field":"endorsement.added_by","type":"string","always_present":true,"nullable":false,"format":null,"description":"How the endorsement got here: automatic (added by our automatic watch of the endorser’s own page), staff (entered by hand by BallotData staff) or data_load (loaded in a researched data pass).","values":{"set":"added-by","open":false,"codes":["automatic","staff","data_load"]},"record":null,"example":"data_load","where":null},{"field":"changed","type":"array of string","always_present":true,"nullable":false,"format":null,"description":"For endorsement.updated: the fields that changed. Empty for other events.","values":{"set":"changed-field","open":false,"codes":["choice_id","rank","statement","source_url","published_on"]},"record":null,"example":null,"where":null},{"field":"previous","type":"object","always_present":true,"nullable":true,"format":null,"description":"For endorsement.updated: the values before the change. null for other events.","values":null,"record":null,"example":null,"where":null},{"field":"previous.choice_id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"The choice endorsed before.","values":null,"record":null,"example":null,"where":null},{"field":"previous.rank","type":"integer","always_present":true,"nullable":true,"format":null,"description":"The rank before.","values":null,"record":null,"example":null,"where":null},{"field":"previous.statement","type":"string","always_present":true,"nullable":true,"format":null,"description":"The statement before.","values":null,"record":null,"example":null,"where":null},{"field":"previous.source_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"The source URL before.","values":null,"record":null,"example":null,"where":null},{"field":"previous.published_on","type":"string","always_present":true,"nullable":true,"format":"YYYY-MM-DD","description":"The publication date before.","values":null,"record":null,"example":null,"where":null},{"field":"endorser","type":"object","always_present":true,"nullable":false,"format":null,"description":"Who made the endorsement.","values":null,"record":null,"example":null,"where":null},{"field":"endorser.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Endorser id.","values":null,"record":null,"example":"512","where":null},{"field":"endorser.slug","type":"string","always_present":true,"nullable":true,"format":null,"description":"Endorser slug; null if the endorser has since been removed.","values":null,"record":null,"example":"sf-labor-council","where":null},{"field":"endorser.name","type":"string","always_present":true,"nullable":true,"format":null,"description":"Endorser name; null if the endorser has since been removed.","values":null,"record":null,"example":"San Francisco Labor Council","where":null},{"field":"endorser.category","type":"Endorser category","always_present":true,"nullable":true,"format":null,"description":"The endorser’s category.","values":null,"record":"endorser-category","example":null,"where":null},{"field":"endorser.state","type":"string","always_present":true,"nullable":true,"format":null,"description":"Home state, or null for a national endorser.","values":null,"record":null,"example":"CA","where":null},{"field":"contest","type":"object","always_present":true,"nullable":false,"format":null,"description":"The contest.","values":null,"record":null,"example":null,"where":null},{"field":"contest.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Contest id.","values":null,"record":null,"example":"4410","where":null},{"field":"contest.title","type":"string","always_present":true,"nullable":true,"format":null,"description":"Title as printed on the ballot.","values":null,"record":null,"example":"Member, Board of Supervisors, District 8","where":null},{"field":"contest.short_title","type":"string","always_present":true,"nullable":true,"format":null,"description":"Shorter title.","values":null,"record":null,"example":"Supervisor, D8","where":null},{"field":"contest.kind","type":"string","always_present":true,"nullable":true,"format":null,"description":"candidate (an office), measure (a proposition) or retention (keep a judge?).","values":{"set":"contest-kind","open":false,"codes":["candidate","measure","retention"]},"record":null,"example":"candidate","where":null},{"field":"contest.vote_method","type":"string","always_present":true,"nullable":true,"format":null,"description":"How votes are cast.","values":{"set":"vote-method","open":false,"codes":["plurality","multi_seat","ranked_choice","approval","yes_no"]},"record":null,"example":"ranked_choice","where":null},{"field":"contest.votes_allowed","type":"integer","always_present":true,"nullable":true,"format":null,"description":"How many choices a voter may mark (vote for N).","values":null,"record":null,"example":"1","where":null},{"field":"contest.ranks_allowed","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Ranked choice: how many choices a voter may rank.","values":null,"record":null,"example":"10","where":null},{"field":"contest.measure_code","type":"string","always_present":true,"nullable":true,"format":null,"description":"The measure’s letter or number.","values":null,"record":null,"example":null,"where":null},{"field":"contest.district","type":"object","always_present":true,"nullable":true,"format":null,"description":"The district the contest is voted in.","values":null,"record":null,"example":null,"where":null},{"field":"contest.district.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"District id.","values":null,"record":null,"example":"77","where":null},{"field":"contest.district.name","type":"string","always_present":true,"nullable":false,"format":null,"description":"District name.","values":null,"record":null,"example":"San Francisco Supervisorial District 8","where":null},{"field":"contest.district.level","type":"string","always_present":true,"nullable":false,"format":null,"description":"Level of government.","values":{"set":"district-level","open":false,"codes":["federal","state","county","city","school","special"]},"record":null,"example":"county","where":null},{"field":"contest.district.ocd_id","type":"string","always_present":true,"nullable":true,"format":null,"description":"Open Civic Data division id.","values":null,"record":null,"example":"ocd-division/country:us/state:ca/county:san_francisco/council_district:8","where":null},{"field":"contest.district.state","type":"string","always_present":true,"nullable":true,"format":null,"description":"USPS state code.","values":null,"record":null,"example":"CA","where":null},{"field":"election","type":"object","always_present":true,"nullable":true,"format":null,"description":"The contest’s election.","values":null,"record":null,"example":null,"where":null},{"field":"election.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Election id.","values":null,"record":null,"example":"3","where":null},{"field":"election.slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"Election slug.","values":null,"record":null,"example":"ca-2026-11-03-general","where":null},{"field":"election.name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Election name.","values":null,"record":null,"example":"California General Election","where":null},{"field":"election.date","type":"string","always_present":true,"nullable":false,"format":"YYYY-MM-DD","description":"Election day.","values":null,"record":null,"example":"2026-11-03","where":null},{"field":"election.state","type":"string","always_present":true,"nullable":true,"format":null,"description":"USPS state code; null for a multi-state election.","values":null,"record":null,"example":"CA","where":null},{"field":"election.type","type":"string","always_present":true,"nullable":false,"format":null,"description":"Kind of election.","values":{"set":"election-type","open":false,"codes":["general","primary","special","special_primary","runoff","consolidated"]},"record":null,"example":"general","where":null},{"field":"choice","type":"object","always_present":true,"nullable":false,"format":null,"description":"The choice endorsed.","values":null,"record":null,"example":null,"where":null},{"field":"choice.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Choice id.","values":null,"record":null,"example":"20931","where":null},{"field":"choice.label","type":"string","always_present":true,"nullable":true,"format":null,"description":"As printed: the candidate’s ballot name, or Yes / No.","values":null,"record":null,"example":"Jane Doe","where":null},{"field":"choice.measure_answer","type":"string","always_present":true,"nullable":true,"format":null,"description":"yes or no for a measure; null for a candidate.","values":{"set":"measure-answer","open":false,"codes":["yes","no"]},"record":null,"example":null,"where":null},{"field":"choice.candidate","type":"object","always_present":true,"nullable":true,"format":null,"description":"The candidate; null for a measure answer.","values":null,"record":null,"example":null,"where":null},{"field":"choice.candidate.id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Candidate id.","values":null,"record":null,"example":"8811","where":null},{"field":"choice.candidate.full_name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Full name.","values":null,"record":null,"example":"Jane Doe","where":null},{"field":"choice.party","type":"object","always_present":true,"nullable":true,"format":null,"description":"The party printed beside the name.","values":null,"record":null,"example":null,"where":null},{"field":"choice.party.slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"Party slug.","values":null,"record":null,"example":null,"where":null},{"field":"choice.party.name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Party name.","values":null,"record":null,"example":null,"where":null},{"field":"choice.withdrawn","type":"boolean","always_present":true,"nullable":true,"format":null,"description":"The candidate withdrew but is still printed on the ballot.","values":null,"record":null,"example":"false","where":null},{"field":"choice.incumbent","type":"boolean","always_present":true,"nullable":true,"format":null,"description":"The candidate holds this seat now: true or false where we know, null where we don’t (and for a measure answer).","values":null,"record":null,"example":"true","where":null}]},{"id":"subscription","title":"Subscription","summary":"A saved filter for the Endorsement Stream: which endorsements’ changes to send you.","endpoints":["GET /v1/subscriptions","POST /v1/subscriptions"],"relations":[],"notes":["In a filter, fields combine with AND and the values within one field with OR; a missing field matches everything."],"fields":[{"field":"id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Subscription id.","values":null,"record":null,"example":"7","where":"Only in GET /v1/subscriptions"},{"field":"name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Name, unique in your account.","values":null,"record":null,"example":"CA labor","where":null},{"field":"filter","type":"object","always_present":true,"nullable":false,"format":null,"description":"Which endorsements: fields combine with AND, values within a field with OR, and a missing field matches everything. Each field takes at most 500 values.","values":null,"record":null,"example":null,"where":null},{"field":"filter.categories","type":"array of string","always_present":false,"nullable":false,"format":null,"description":"Endorser category slugs (GET /v1/endorser-categories).","values":{"set":"endorser-category","open":true,"codes":["editorial","labor","environment","business","party","club","community","officials"]},"record":null,"example":"[\"labor\"]","where":null},{"field":"filter.endorsers","type":"array of string","always_present":false,"nullable":false,"format":null,"description":"Endorser slugs (GET /v1/endorsers).","values":null,"record":null,"example":null,"where":null},{"field":"filter.endorser_states","type":"array of string","always_present":false,"nullable":false,"format":null,"description":"Endorsers’ home states (USPS codes), or \"national\".","values":null,"record":null,"example":null,"where":null},{"field":"filter.states","type":"array of string","always_present":false,"nullable":false,"format":"Two capital letters (USPS code)","description":"States the contests are voted in.","values":null,"record":null,"example":"[\"CA\"]","where":null},{"field":"filter.elections","type":"array of string","always_present":false,"nullable":false,"format":null,"description":"Election slugs (GET /v1/elections).","values":null,"record":null,"example":null,"where":null},{"field":"filter.contest_kinds","type":"array of string","always_present":false,"nullable":false,"format":null,"description":"Contest kinds: candidate, measure or retention.","values":{"set":"contest-kind","open":false,"codes":["candidate","measure","retention"]},"record":null,"example":null,"where":null},{"field":"filter.levels","type":"array of string","always_present":false,"nullable":false,"format":null,"description":"Levels of government of the contests’ districts.","values":{"set":"district-level","open":false,"codes":["federal","state","county","city","school","special"]},"record":null,"example":null,"where":null},{"field":"filter.types","type":"array of string","always_present":false,"nullable":false,"format":null,"description":"Stream only: kinds of change.","values":{"set":"change","open":false,"codes":["created","updated","deleted"]},"record":null,"example":null,"where":null},{"field":"created_at","type":"string","always_present":true,"nullable":false,"format":"ISO 8601 date and time with time zone","description":"When the subscription was created.","values":null,"record":null,"example":"2026-10-15T17:20:04.112Z","where":"Only in GET /v1/subscriptions"},{"field":"updated_at","type":"string","always_present":true,"nullable":false,"format":"ISO 8601 date and time with time zone","description":"When it last changed.","values":null,"record":null,"example":"2026-10-15T17:20:04.112Z","where":"Only in GET /v1/subscriptions"}]}],"export_csv_columns":[{"column":"election_slug","field":"election_slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"The election’s slug, the same on every row.","values":null,"record":null,"example":"ca-2026-11-03-general","where":"From election.slug in the JSON export","from":"election.slug"},{"column":"election_date","field":"election_date","type":"string","always_present":true,"nullable":false,"format":"YYYY-MM-DD","description":"Election day.","values":null,"record":null,"example":"2026-11-03","where":"From election.date in the JSON export","from":"election.date"},{"column":"contest_id","field":"contest_id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Contest id (GET /v1/contests/{id}).","values":null,"record":null,"example":"225","where":"From contests[].id in the JSON export","from":"contests[].id"},{"column":"contest_title","field":"contest_title","type":"string","always_present":true,"nullable":false,"format":null,"description":"Contest title as printed on the ballot.","values":null,"record":null,"example":"United States Representative, District 44","where":"From contests[].title in the JSON export","from":"contests[].title"},{"column":"contest_kind","field":"contest_kind","type":"string","always_present":true,"nullable":false,"format":null,"description":"candidate, measure or retention.","values":{"set":"contest-kind","open":false,"codes":["candidate","measure","retention"]},"record":null,"example":"candidate","where":"From contests[].kind in the JSON export","from":"contests[].kind"},{"column":"vote_method","field":"vote_method","type":"string","always_present":true,"nullable":false,"format":null,"description":"How votes are cast: plurality, multi_seat, ranked_choice, approval or yes_no.","values":{"set":"vote-method","open":false,"codes":["plurality","multi_seat","ranked_choice","approval","yes_no"]},"record":null,"example":"plurality","where":"From contests[].vote_method in the JSON export","from":"contests[].vote_method"},{"column":"votes_allowed","field":"votes_allowed","type":"integer","always_present":true,"nullable":true,"format":null,"description":"How many choices a voter may mark (vote for N).","values":null,"record":null,"example":"1","where":"From contests[].votes_allowed in the JSON export","from":"contests[].votes_allowed"},{"column":"ranks_allowed","field":"ranks_allowed","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Ranked choice: how many choices a voter may rank.","values":null,"record":null,"example":"5","where":"From contests[].ranks_allowed in the JSON export","from":"contests[].ranks_allowed"},{"column":"measure_code","field":"measure_code","type":"string","always_present":true,"nullable":true,"format":null,"description":"A measure’s letter or number.","values":null,"record":null,"example":"37","where":"From contests[].measure_code in the JSON export","from":"contests[].measure_code"},{"column":"district_id","field":"district_id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"The contest’s district id.","values":null,"record":null,"example":"170","where":"From contests[].district.id in the JSON export","from":"contests[].district.id"},{"column":"district_name","field":"district_name","type":"string","always_present":true,"nullable":false,"format":null,"description":"The district’s name.","values":null,"record":null,"example":"California Congressional District 44","where":"From contests[].district.name in the JSON export","from":"contests[].district.name"},{"column":"district_level","field":"district_level","type":"string","always_present":true,"nullable":false,"format":null,"description":"The district’s level of government.","values":{"set":"district-level","open":false,"codes":["federal","state","county","city","school","special"]},"record":null,"example":"federal","where":"From contests[].district.level in the JSON export","from":"contests[].district.level"},{"column":"district_ocd_id","field":"district_ocd_id","type":"string","always_present":true,"nullable":true,"format":null,"description":"The district’s Open Civic Data division id.","values":null,"record":null,"example":"ocd-division/country:us/state:ca/cd:44","where":"From contests[].district.ocd_id in the JSON export","from":"contests[].district.ocd_id"},{"column":"state","field":"state","type":"string","always_present":true,"nullable":true,"format":"Two capital letters (USPS code)","description":"The district’s state (the election’s state where the district has none).","values":null,"record":null,"example":"CA","where":"From contests[].district.state in the JSON export","from":"contests[].district.state"},{"column":"choice_id","field":"choice_id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"The choice endorsed.","values":null,"record":null,"example":"783","where":"From contests[].endorsements[].picks[].choice_id in the JSON export","from":"contests[].endorsements[].picks[].choice_id"},{"column":"choice_label","field":"choice_label","type":"string","always_present":true,"nullable":false,"format":null,"description":"That choice as printed: the candidate’s ballot name, or Yes or No.","values":null,"record":null,"example":"Nanette Diaz Barragán","where":"From contests[].endorsements[].picks[].label in the JSON export","from":"contests[].endorsements[].picks[].label"},{"column":"measure_answer","field":"measure_answer","type":"string","always_present":true,"nullable":true,"format":null,"description":"yes or no for a measure; empty for a candidate.","values":{"set":"measure-answer","open":false,"codes":["yes","no"]},"record":null,"example":"yes","where":"From contests[].endorsements[].picks[].measure_answer in the JSON export","from":"contests[].endorsements[].picks[].measure_answer"},{"column":"candidate_id","field":"candidate_id","type":"integer","always_present":true,"nullable":true,"format":null,"description":"The endorsed candidate’s id (GET /v1/candidates/{id}); empty for a measure.","values":null,"record":null,"example":"392","where":"From contests[].choices[].candidate.id in the JSON export","from":"contests[].choices[].candidate.id"},{"column":"candidate_name","field":"candidate_name","type":"string","always_present":true,"nullable":true,"format":null,"description":"The endorsed candidate’s full name; empty for a measure.","values":null,"record":null,"example":"Nanette Diaz Barragán","where":"From contests[].choices[].candidate.full_name in the JSON export","from":"contests[].choices[].candidate.full_name"},{"column":"party","field":"party","type":"string","always_present":true,"nullable":true,"format":null,"description":"The party as printed beside the name (party_label where there is one, else the party’s name).","values":null,"record":null,"example":"Democratic","where":"From contests[].choices[].party_label in the JSON export","from":"contests[].choices[].party_label"},{"column":"incumbent","field":"incumbent","type":"boolean","always_present":true,"nullable":true,"format":null,"description":"true when the candidate holds the seat now, false when not, empty where we don’t know.","values":null,"record":null,"example":"true","where":"From contests[].choices[].incumbent in the JSON export","from":"contests[].choices[].incumbent"},{"column":"withdrawn","field":"withdrawn","type":"boolean","always_present":true,"nullable":false,"format":null,"description":"true when the candidate withdrew but is still printed on the ballot.","values":null,"record":null,"example":"false","where":"From contests[].choices[].withdrawn in the JSON export","from":"contests[].choices[].withdrawn"},{"column":"endorsement_id","field":"endorsement_id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Endorsement id (GET /v1/endorsements/{id}).","values":null,"record":null,"example":"2128","where":"From contests[].endorsements[].picks[].endorsement_id in the JSON export","from":"contests[].endorsements[].picks[].endorsement_id"},{"column":"endorser_id","field":"endorser_id","type":"integer","always_present":true,"nullable":false,"format":null,"description":"Endorser id.","values":null,"record":null,"example":"23","where":"From contests[].endorsements[].endorser.id in the JSON export","from":"contests[].endorsements[].endorser.id"},{"column":"endorser_slug","field":"endorser_slug","type":"string","always_present":true,"nullable":false,"format":null,"description":"Endorser slug (GET /v1/endorsers/{slug}).","values":null,"record":null,"example":"california-democratic-party","where":"From contests[].endorsements[].endorser.slug in the JSON export","from":"contests[].endorsements[].endorser.slug"},{"column":"endorser_name","field":"endorser_name","type":"string","always_present":true,"nullable":false,"format":null,"description":"Endorser name.","values":null,"record":null,"example":"California Democratic Party","where":"From contests[].endorsements[].endorser.name in the JSON export","from":"contests[].endorsements[].endorser.name"},{"column":"endorser_category","field":"endorser_category","type":"string","always_present":true,"nullable":false,"format":null,"description":"The endorser’s category slug.","values":{"set":"endorser-category","open":true,"codes":["editorial","labor","environment","business","party","club","community","officials"]},"record":null,"example":"party","where":"From contests[].endorsements[].endorser.category.slug in the JSON export","from":"contests[].endorsements[].endorser.category.slug"},{"column":"endorser_state","field":"endorser_state","type":"string","always_present":true,"nullable":true,"format":"Two capital letters (USPS code)","description":"The endorser’s home state; empty for a national endorser.","values":null,"record":null,"example":"CA","where":"From contests[].endorsements[].endorser.state in the JSON export","from":"contests[].endorsements[].endorser.state"},{"column":"rank","field":"rank","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Ranked choice: 1 for first choice, 2 for second, and so on; empty otherwise.","values":null,"record":null,"example":"1","where":"From contests[].endorsements[].picks[].rank in the JSON export","from":"contests[].endorsements[].picks[].rank"},{"column":"statement","field":"statement","type":"string","always_present":true,"nullable":true,"format":null,"description":"What the endorser said about it.","values":null,"record":null,"example":null,"where":"From contests[].endorsements[].picks[].statement in the JSON export","from":"contests[].endorsements[].picks[].statement"},{"column":"source_url","field":"source_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"Where the endorsement was published.","values":null,"record":null,"example":"https://cadem.org/wp-content/uploads/2026/08/FINAL-2026-General-Election-Endorsements.pdf","where":"From contests[].endorsements[].picks[].source_url in the JSON export","from":"contests[].endorsements[].picks[].source_url"},{"column":"published_on","field":"published_on","type":"string","always_present":true,"nullable":true,"format":"YYYY-MM-DD","description":"When it was published.","values":null,"record":null,"example":null,"where":"From contests[].endorsements[].picks[].published_on in the JSON export","from":"contests[].endorsements[].picks[].published_on"},{"column":"added_by","field":"added_by","type":"string","always_present":true,"nullable":false,"format":null,"description":"How the endorsement got here: automatic, staff or data_load.","values":{"set":"added-by","open":false,"codes":["automatic","staff","data_load"]},"record":null,"example":"data_load","where":"From contests[].endorsements[].picks[].added_by in the JSON export","from":"contests[].endorsements[].picks[].added_by"},{"column":"choice_votes","field":"choice_votes","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Votes for the endorsed choice; empty until the contest has a result.","values":null,"record":null,"example":"147571","where":"From contests[].choices[].result.votes in the JSON export","from":"contests[].choices[].result.votes"},{"column":"choice_vote_pct","field":"choice_vote_pct","type":"number","always_present":true,"nullable":true,"format":null,"description":"The endorsed choice’s share of the vote, 0 to 100.","values":null,"record":null,"example":"81.725","where":"From contests[].choices[].result.vote_pct in the JSON export","from":"contests[].choices[].result.vote_pct"},{"column":"choice_winner","field":"choice_winner","type":"boolean","always_present":true,"nullable":true,"format":null,"description":"true when the endorsed choice won, false when it lost, empty when not decided or not stated.","values":null,"record":null,"example":null,"where":"From contests[].choices[].result.winner in the JSON export","from":"contests[].choices[].result.winner"},{"column":"result_status","field":"result_status","type":"string","always_present":true,"nullable":true,"format":null,"description":"unofficial or certified; empty until the contest has a result.","values":{"set":"result-status","open":false,"codes":["unofficial","certified"]},"record":null,"example":"unofficial","where":"From contests[].result.status in the JSON export","from":"contests[].result.status"},{"column":"result_source_kind","field":"result_source_kind","type":"string","always_present":true,"nullable":true,"format":null,"description":"Where the result comes from: official, compiled or party.","values":{"set":"result-source-kind","open":false,"codes":["official","compiled","party"]},"record":null,"example":"official","where":"From contests[].result.source_kind in the JSON export","from":"contests[].result.source_kind"},{"column":"result_total_votes","field":"result_total_votes","type":"integer","always_present":true,"nullable":true,"format":null,"description":"Votes cast in the contest.","values":null,"record":null,"example":"180571","where":"From contests[].result.total_votes in the JSON export","from":"contests[].result.total_votes"},{"column":"result_source_url","field":"result_source_url","type":"string","always_present":true,"nullable":true,"format":"URL","description":"Where the result was published.","values":null,"record":null,"example":"https://api.sos.ca.gov/returns/us-rep/district/44","where":"From contests[].result.source.url in the JSON export","from":"contests[].result.source.url"}]}