Data dictionaries

Issue position

Where one candidate stands on one issue, with a neutral summary, their own words where we have them, and the sources.

Returned by
GET /v1/issue-positions, GET /v1/candidates/{id}
Found in
Candidate (issue_positions)
Shapes
The full record is in GET /v1/issue-positions. The shorter forms in GET /v1/candidates/{id} leave some fields out; a field that isn’t in every form says where it is.

How it connects

  • issue.slug is one of GET /v1/issues; stance answers that issue’s question.

Good to know

  • 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

FieldTypeMeaningExample
idintegerPosition id.1
issueobjectThe issue (GET /v1/issues).—
issue.slugstringIssue slug.23 values so far: meaningshealth-coverage
issue.namestringIssue name.Health coverage
stancestringor nullThe 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.supports, opposes, mixed meaningsopposes
summarystringWhere they stand, in neutral words: what they said, or how they voted.Voted against the January 8, 2026 bill (H.R. 1834) to extend the enhanced Affordable Care…
quotestringor nullTheir own words, verbatim, where a source has them.—
checked_onstringYYYY-MM-DDWhen the sources were last read.2026-11-12
sourcesarray of objectEvery link the position was taken from; at least one.—
sources[].urlstringURLWhere the position comes from.https://clerk.house.gov/Votes/202611
sources[].kindstringWhat 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.candidate_website, voting_record, official_statement, questionnaire, debate, news meaningsvoting_record
sources[].publisherstringWho published it: “U.S. Senate”, “The Atlanta Journal-Constitution”.U.S. House Clerk
sources[].titlestringor nullThe source’s title.Roll call 11, House (2026)
sources[].published_onstringor nullYYYY-MM-DDWhen it was published, where known.2026-10-03
candidateobjectThe candidate (GET /v1/candidates/{id}).Only in GET /v1/issue-positions.—
candidate.idintegerCandidate id.Only in GET /v1/issue-positions.17246
candidate.full_namestringFull name.Only in GET /v1/issue-positions.Nick Begich
contestsarray of objectThe candidate’s contests that you can read (and that match the filters), newest election first.Only in GET /v1/issue-positions.—
contests[].idintegerContest id.Only in GET /v1/issue-positions.9963
contests[].titlestringTitle as printed on the ballot.Only in GET /v1/issue-positions.United States Representative
contests[].electionobjectThe contest’s election.Only in GET /v1/issue-positions.—
contests[].election.slugstringElection slug.Only in GET /v1/issue-positions.ak-2026-11-03-general
contests[].election.datestringYYYY-MM-DDElection day.Only in GET /v1/issue-positions.2026-11-03
contests[].statestringTwo capital letters (USPS code)USPS state code.Only in GET /v1/issue-positions.AK

Download every dictionary as CSV or JSON.

Issue position data dictionary · BallotData API