Pluribus AI 2026 Election

Tools · API

Search API

One GET endpoint searches everything the nominees said on the issues and returns the matching quote, its source, and links to the race guide.

Endpoint

GET https://www.2026election.com/api/search — also HEAD and OPTIONS. No key. CORS is open (Access-Control-Allow-Origin: *).

ParameterRequiredValues
qyesWords to search for, e.g. tariffs or medicaid expansion.
statenoFull state name or 2-letter code, matched exactly.
chambernohouse, senate, governor
issuenoIssue topic slug: immigration-border-security, economy-cost-of-living, healthcare, abortion-reproductive-rights, education, energy-environment, taxes-government-spending, guns, crime-public-safety, democracy-elections, government-reform-ethics, housing, foreign-policy-defense, veterans, agriculture-rural, infrastructure-transportation, social-security-retirement. Other text matches issue names by substring.
partynoD, R, other
limitno1–25, default 10.

Examples

curl "https://www.2026election.com/api/search?q=tariffs&state=Georgia&limit=3"
const res = await fetch("https://www.2026election.com/api/search?q=medicaid&chamber=senate");
const { total, results } = await res.json();

Response

A JSON object { query, total, results }. Each result names the candidate, party and incumbency; the race (key, title, url, markdownUrl); the issue and stance; and match, the quote or key point that matched, with its source and url.

{
  "query": "tariffs",
  "total": 42,
  "results": [
    {
      "candidate": "…",
      "party": "Democratic",
      "incumbent": false,
      "race": { "key": "2026-senate-ga", "title": "…", "url": "…", "markdownUrl": "…" },
      "issue": "…",
      "stance": "…",
      "summary": "…",
      "match": { "kind": "quote", "text": "…", "source": "…", "url": "…" },
      "score": 12.3
    }
  ]
}

Errors, limits and caching

Bad input returns 400 with { "error": "…" } saying what to fix. If the index can't load, 500 with { "error": "…" } and Cache-Control: no-store. At most 25 results per request.

Responses are cached at the edge until the next deploy, and the data only changes when we deploy. Fetch freely; there's no need to poll.

Try it

The form below calls the API and shows the JSON. Browser agents that support WebMCP can also fill it in as the search_positions tool.