Endorsement
One endorser endorsing one choice in one contest, with what they said and where they published it.
- Returned by
GET /v1/endorsements,GET /v1/endorsements/{id},GET /v1/contests/{id},GET /v1/candidates/{id},GET /v1/elections/{slug}/export- Found in
- Candidate (
contests[].endorsements), Position (picks) - Shapes
- The full record is in GET /v1/endorsements/{id}. The shorter forms in GET /v1/endorsements, a candidate’s endorsements and a position’s picks leave some fields out; a field that isn’t in every form says where it is.
How it connects
- 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
idis stable:GET /v1/endorsements/{id}/historylists every change to it, andGET /v1/changesevery change to all of them.
Good to know
added_bysays how it got here: a researched data load, staff entry, or our automatic watch of the endorser’s own page.statement,source_urlandpublished_onarenullwhere the endorser’s list gives none.stagecomes from the election: general, primary or runoff.
Fields
| Field | Type | Meaning | Example |
|---|---|---|---|
id | integer | Endorsement id.Only in GET /v1/endorsements/{id} and GET /v1/endorsements. | 51411 |
rank | integeror null | Ranked choice: the rank the endorser gave; null otherwise. | 1 |
statement | stringor null | What the endorser said.Not in GET /v1/endorsements. | — |
source_url | stringor nullURL | Where it was published.Not in GET /v1/endorsements. | https://berkeleydemocraticclub.com/ |
published_on | stringor nullYYYY-MM-DD | When it was published. | — |
retrieved_at | stringISO 8601 date and time with time zone | When we collected it.Only in GET /v1/endorsements/{id}. | 2026-11-13T03:09:35.128Z |
added_by | string | 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).automatic, staff, data_load meanings | data_load |
stage | string | The election stage the endorsement is for: general, primary or runoff (from the election it is in).general, primary, runoff meanings | general |
endorser | object | Who made the endorsement.Not in a position’s picks. | — |
endorser.id | integer | Endorser id.Only in GET /v1/endorsements/{id} and GET /v1/endorsements. | 6260 |
endorser.slug | string | Endorser slug.Only in GET /v1/endorsements/{id} and GET /v1/endorsements. | berkeley-democratic-club |
endorser.name | string | Endorser name.Only in GET /v1/endorsements/{id} and GET /v1/endorsements. | Berkeley Democratic Club |
endorser.category | Endorser category | The kind of endorser.Only in GET /v1/endorsements/{id}. | — |
endorser.description | stringor null | About the endorser.Only in GET /v1/endorsements/{id}. | Chartered Democratic club in Berkeley; endorses in Berkeley city, school and ballot measu… |
endorser.website_url | stringor nullURL | Endorser’s website.Only in GET /v1/endorsements/{id}. | https://berkeleydemocraticclub.com/ |
endorser.logo_url | stringor nullURL | The endorser’s logo image.Only in GET /v1/endorsements/{id}. | — |
endorser.state | stringor nullTwo capital letters (USPS code) | Home state; null for national endorsers.Only in GET /v1/endorsements/{id}. | CA |
endorser.party | Partyor null | The party, for a party or party club.Only in GET /v1/endorsements/{id}. | — |
contest | Contest | The contest, with its district and election.Only in GET /v1/endorsements/{id} and GET /v1/endorsements. | — |
choice | Choice | The choice endorsed, with its candidate.Only in GET /v1/endorsements/{id} and GET /v1/endorsements. | — |
contest.id | integer | Contest id.Only in GET /v1/endorsements. | 92 |
contest.title | string | Title as printed on the ballot.Only in GET /v1/endorsements. | Member of City Council, District 1, City of Berkeley |
election | object | The contest’s election.Only in GET /v1/endorsements. | — |
election.id | integer | Election id.Only in GET /v1/endorsements. | 1 |
election.slug | string | Election slug.Only in GET /v1/endorsements. | ca-2026-11-03-general |
election.date | stringYYYY-MM-DD | Election day.Only in GET /v1/endorsements. | 2026-11-03 |
choice.id | integer | Choice id.Only in GET /v1/endorsements. | 194 |
choice.label | string | As printed: the candidate’s ballot name, or Yes / No.Only in GET /v1/endorsements. | Ross Bernet |
choice.measure_answer | stringor null | yes or no for a measure; null for a candidate.yes, no meaningsOnly in GET /v1/endorsements. | yes |
endorsement_id | integer | Endorsement id.Only in a candidate’s endorsements and a position’s picks. | 1485 |
choice_id | integer | The Choice endorsed.Only in a position’s picks. | 194 |
label | string | That choice’s label.Only in a position’s picks. | Ross Bernet |
measure_answer | stringor null | yes or no for a measure.yes, no meaningsOnly in a position’s picks. | — |