curl --request GET \
--url https://api.aries.com/v1/predictions/elections/{cycle}/statesimport requests
url = "https://api.aries.com/v1/predictions/elections/{cycle}/states"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.aries.com/v1/predictions/elections/{cycle}/states', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aries.com/v1/predictions/elections/{cycle}/states",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.aries.com/v1/predictions/elections/{cycle}/states"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.aries.com/v1/predictions/elections/{cycle}/states")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aries.com/v1/predictions/elections/{cycle}/states")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"asOf": "2026-10-22T17:32:50.815Z",
"cycle": 2026,
"electionDate": "2026-11-03",
"national": {
"balanceOfPower": {
"eventId": "HORC_1126",
"outcomes": [
{
"symbol": "HORC_1126_Democratic",
"yesPrice": "0.55",
"yesPriceChange24h": "0.01",
"house": "D",
"party": "D",
"senate": "D"
}
]
},
"houseControl": {
"eventId": "HORC_1126",
"outcomes": [
{
"symbol": "HORC_1126_Democratic",
"yesPrice": "0.55",
"yesPriceChange24h": "0.01",
"house": "D",
"party": "D",
"senate": "D"
}
]
},
"senateControl": {
"eventId": "HORC_1126",
"outcomes": [
{
"symbol": "HORC_1126_Democratic",
"yesPrice": "0.55",
"yesPriceChange24h": "0.01",
"house": "D",
"party": "D",
"senate": "D"
}
]
}
},
"states": [
{
"code": "TX",
"governor": [
{
"baseEventId": "AXXTX",
"electionDate": "2026-11-03",
"eventId": "AXXTX_110326",
"heldBy": "D",
"lastTradeDate": "2026-12-06",
"outcomes": [
{
"incumbent": true,
"name": "James Talarico",
"party": "D",
"photo": {
"credit": "Gage Skidmore",
"license": "CC BY-SA 4.0",
"licenseUrl": "https://creativecommons.org/licenses/by-sa/4.0",
"sourceUrl": "https://commons.wikimedia.org/wiki/File:K_Paxton.jpg",
"url": "<string>"
},
"symbol": "AXXTX_110326_JT",
"tradable": true,
"yesPrice": "0.66",
"yesPriceChange24h": "0.08"
}
],
"partyMarket": {
"eventId": "HORC_1126",
"outcomes": [
{
"symbol": "HORC_1126_Democratic",
"yesPrice": "0.55",
"yesPriceChange24h": "0.01",
"house": "D",
"party": "D",
"senate": "D"
}
]
},
"raceType": "general",
"resolvedAt": "2023-11-07T05:31:56Z",
"status": "open",
"title": "Texas Senate",
"winningSymbol": "<string>",
"atLarge": false,
"district": 7
}
],
"house": [
{
"baseEventId": "AXXTX",
"electionDate": "2026-11-03",
"eventId": "AXXTX_110326",
"heldBy": "D",
"lastTradeDate": "2026-12-06",
"outcomes": [
{
"incumbent": true,
"name": "James Talarico",
"party": "D",
"photo": {
"credit": "Gage Skidmore",
"license": "CC BY-SA 4.0",
"licenseUrl": "https://creativecommons.org/licenses/by-sa/4.0",
"sourceUrl": "https://commons.wikimedia.org/wiki/File:K_Paxton.jpg",
"url": "<string>"
},
"symbol": "AXXTX_110326_JT",
"tradable": true,
"yesPrice": "0.66",
"yesPriceChange24h": "0.08"
}
],
"partyMarket": {
"eventId": "HORC_1126",
"outcomes": [
{
"symbol": "HORC_1126_Democratic",
"yesPrice": "0.55",
"yesPriceChange24h": "0.01",
"house": "D",
"party": "D",
"senate": "D"
}
]
},
"raceType": "general",
"resolvedAt": "2023-11-07T05:31:56Z",
"status": "open",
"title": "Texas Senate",
"winningSymbol": "<string>",
"atLarge": false,
"district": 7
}
],
"houseSeats": 38,
"name": "Texas",
"senate": [
{
"baseEventId": "AXXTX",
"electionDate": "2026-11-03",
"eventId": "AXXTX_110326",
"heldBy": "D",
"lastTradeDate": "2026-12-06",
"outcomes": [
{
"incumbent": true,
"name": "James Talarico",
"party": "D",
"photo": {
"credit": "Gage Skidmore",
"license": "CC BY-SA 4.0",
"licenseUrl": "https://creativecommons.org/licenses/by-sa/4.0",
"sourceUrl": "https://commons.wikimedia.org/wiki/File:K_Paxton.jpg",
"url": "<string>"
},
"symbol": "AXXTX_110326_JT",
"tradable": true,
"yesPrice": "0.66",
"yesPriceChange24h": "0.08"
}
],
"partyMarket": {
"eventId": "HORC_1126",
"outcomes": [
{
"symbol": "HORC_1126_Democratic",
"yesPrice": "0.55",
"yesPriceChange24h": "0.01",
"house": "D",
"party": "D",
"senate": "D"
}
]
},
"raceType": "general",
"resolvedAt": "2023-11-07T05:31:56Z",
"status": "open",
"title": "Texas Senate",
"winningSymbol": "<string>",
"atLarge": false,
"district": 7
}
]
}
]
}
}{
"error": {
"code": "SYMBOL_REQUIRED",
"message": "string",
"type": "VALIDATION"
},
"success": false
}{
"error": {
"code": "EVENT_NOT_FOUND",
"message": "string",
"type": "NOT_FOUND"
},
"success": false
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "string",
"type": "INTERNAL"
},
"success": false
}Get Election Map
Returns every Senate, House and governor race of an election cycle in all 50 states, with each candidate’s latest price, plus the chamber-control markets, in one response.
Use Case: Shade an election map, list rated races and show who leads each one, without a request per race.
curl --request GET \
--url https://api.aries.com/v1/predictions/elections/{cycle}/statesimport requests
url = "https://api.aries.com/v1/predictions/elections/{cycle}/states"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.aries.com/v1/predictions/elections/{cycle}/states', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aries.com/v1/predictions/elections/{cycle}/states",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.aries.com/v1/predictions/elections/{cycle}/states"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.aries.com/v1/predictions/elections/{cycle}/states")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aries.com/v1/predictions/elections/{cycle}/states")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"asOf": "2026-10-22T17:32:50.815Z",
"cycle": 2026,
"electionDate": "2026-11-03",
"national": {
"balanceOfPower": {
"eventId": "HORC_1126",
"outcomes": [
{
"symbol": "HORC_1126_Democratic",
"yesPrice": "0.55",
"yesPriceChange24h": "0.01",
"house": "D",
"party": "D",
"senate": "D"
}
]
},
"houseControl": {
"eventId": "HORC_1126",
"outcomes": [
{
"symbol": "HORC_1126_Democratic",
"yesPrice": "0.55",
"yesPriceChange24h": "0.01",
"house": "D",
"party": "D",
"senate": "D"
}
]
},
"senateControl": {
"eventId": "HORC_1126",
"outcomes": [
{
"symbol": "HORC_1126_Democratic",
"yesPrice": "0.55",
"yesPriceChange24h": "0.01",
"house": "D",
"party": "D",
"senate": "D"
}
]
}
},
"states": [
{
"code": "TX",
"governor": [
{
"baseEventId": "AXXTX",
"electionDate": "2026-11-03",
"eventId": "AXXTX_110326",
"heldBy": "D",
"lastTradeDate": "2026-12-06",
"outcomes": [
{
"incumbent": true,
"name": "James Talarico",
"party": "D",
"photo": {
"credit": "Gage Skidmore",
"license": "CC BY-SA 4.0",
"licenseUrl": "https://creativecommons.org/licenses/by-sa/4.0",
"sourceUrl": "https://commons.wikimedia.org/wiki/File:K_Paxton.jpg",
"url": "<string>"
},
"symbol": "AXXTX_110326_JT",
"tradable": true,
"yesPrice": "0.66",
"yesPriceChange24h": "0.08"
}
],
"partyMarket": {
"eventId": "HORC_1126",
"outcomes": [
{
"symbol": "HORC_1126_Democratic",
"yesPrice": "0.55",
"yesPriceChange24h": "0.01",
"house": "D",
"party": "D",
"senate": "D"
}
]
},
"raceType": "general",
"resolvedAt": "2023-11-07T05:31:56Z",
"status": "open",
"title": "Texas Senate",
"winningSymbol": "<string>",
"atLarge": false,
"district": 7
}
],
"house": [
{
"baseEventId": "AXXTX",
"electionDate": "2026-11-03",
"eventId": "AXXTX_110326",
"heldBy": "D",
"lastTradeDate": "2026-12-06",
"outcomes": [
{
"incumbent": true,
"name": "James Talarico",
"party": "D",
"photo": {
"credit": "Gage Skidmore",
"license": "CC BY-SA 4.0",
"licenseUrl": "https://creativecommons.org/licenses/by-sa/4.0",
"sourceUrl": "https://commons.wikimedia.org/wiki/File:K_Paxton.jpg",
"url": "<string>"
},
"symbol": "AXXTX_110326_JT",
"tradable": true,
"yesPrice": "0.66",
"yesPriceChange24h": "0.08"
}
],
"partyMarket": {
"eventId": "HORC_1126",
"outcomes": [
{
"symbol": "HORC_1126_Democratic",
"yesPrice": "0.55",
"yesPriceChange24h": "0.01",
"house": "D",
"party": "D",
"senate": "D"
}
]
},
"raceType": "general",
"resolvedAt": "2023-11-07T05:31:56Z",
"status": "open",
"title": "Texas Senate",
"winningSymbol": "<string>",
"atLarge": false,
"district": 7
}
],
"houseSeats": 38,
"name": "Texas",
"senate": [
{
"baseEventId": "AXXTX",
"electionDate": "2026-11-03",
"eventId": "AXXTX_110326",
"heldBy": "D",
"lastTradeDate": "2026-12-06",
"outcomes": [
{
"incumbent": true,
"name": "James Talarico",
"party": "D",
"photo": {
"credit": "Gage Skidmore",
"license": "CC BY-SA 4.0",
"licenseUrl": "https://creativecommons.org/licenses/by-sa/4.0",
"sourceUrl": "https://commons.wikimedia.org/wiki/File:K_Paxton.jpg",
"url": "<string>"
},
"symbol": "AXXTX_110326_JT",
"tradable": true,
"yesPrice": "0.66",
"yesPriceChange24h": "0.08"
}
],
"partyMarket": {
"eventId": "HORC_1126",
"outcomes": [
{
"symbol": "HORC_1126_Democratic",
"yesPrice": "0.55",
"yesPriceChange24h": "0.01",
"house": "D",
"party": "D",
"senate": "D"
}
]
},
"raceType": "general",
"resolvedAt": "2023-11-07T05:31:56Z",
"status": "open",
"title": "Texas Senate",
"winningSymbol": "<string>",
"atLarge": false,
"district": 7
}
]
}
]
}
}{
"error": {
"code": "SYMBOL_REQUIRED",
"message": "string",
"type": "VALIDATION"
},
"success": false
}{
"error": {
"code": "EVENT_NOT_FOUND",
"message": "string",
"type": "NOT_FOUND"
},
"success": false
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "string",
"type": "INTERNAL"
},
"success": false
}https://api.tradearies.dev). Production availability will be announced in the changelog.Overview
One request returns the whole cycle: every state, every race in it, and every candidate’s price. Use it to drive a map, a rated race list and a chamber-control card from a single response.GET /v1/predictions/elections/2026/states
2026 is the only cycle served. Any other answers 404.
Response shape
data.national holds the chamber-control markets. data.states holds all 50 states, sorted by name, each with its senate, governor and house races. A state with no race for an office has an empty array, never null. DC is not included.
Prices in this example are illustrative, and the response is trimmed to one Senate and one House race.
{
"success": true,
"data": {
"cycle": 2026,
"electionDate": "2026-11-03",
"asOf": "2026-10-23T07:30:23.118Z",
"national": {
"houseControl": {
"eventId": "HORC_1126",
"outcomes": [
{ "symbol": "HORC_1126_Democratic", "party": "D", "yesPrice": "0.92", "yesPriceChange24h": "0" },
{ "symbol": "HORC_1126_Republican", "party": "R", "yesPrice": "0.10", "yesPriceChange24h": "0" }
]
},
"senateControl": {
"eventId": "SENM_1126",
"outcomes": [
{ "symbol": "SENM_1126_Democratic", "party": "D", "yesPrice": "0.66", "yesPriceChange24h": "0" },
{ "symbol": "SENM_1126_Republican", "party": "R", "yesPrice": "0.36", "yesPriceChange24h": "0" }
]
},
"balanceOfPower": {
"eventId": "FEDRO_1126",
"outcomes": [
{ "symbol": "FEDRO_1126_SDHD", "senate": "D", "house": "D", "yesPrice": "0.70", "yesPriceChange24h": "0" },
{ "symbol": "FEDRO_1126_SRHD", "senate": "R", "house": "D", "yesPrice": "0.37", "yesPriceChange24h": "0" }
]
}
},
"states": [
{
"code": "TX",
"name": "Texas",
"houseSeats": 38,
"senate": [
{
"eventId": "AXXTX_110326",
"baseEventId": "AXXTX",
"title": "Texas Senate",
"raceType": "general",
"electionDate": "2026-11-03",
"heldBy": null,
"status": "open",
"lastTradeDate": "2026-12-06",
"winningSymbol": null,
"resolvedAt": null,
"partyMarket": {
"eventId": "XXXTX_110326",
"outcomes": [
{ "symbol": "XXXTX_110326_R", "party": "R", "yesPrice": "0.76", "yesPriceChange24h": "0" },
{ "symbol": "XXXTX_110326_D", "party": "D", "yesPrice": "0.25", "yesPriceChange24h": "0" }
]
},
"outcomes": [
{
"symbol": "AXXTX_110326_JT",
"name": "James Talarico",
"party": null,
"incumbent": null,
"yesPrice": "0.66",
"yesPriceChange24h": "0.08",
"tradable": true,
"photo": null
},
{
"symbol": "AXXTX_110326_KP",
"name": "Ken Paxton",
"party": null,
"incumbent": null,
"yesPrice": "0.35",
"yesPriceChange24h": "-0.06",
"tradable": true,
"photo": null
}
]
}
],
"governor": [],
"house": [
{
"eventId": "G07TX_110326",
"baseEventId": "G07TX",
"title": "TX-07",
"district": 7,
"atLarge": false,
"raceType": "general",
"electionDate": "2026-11-03",
"heldBy": null,
"status": "open",
"lastTradeDate": "2026-12-06",
"winningSymbol": null,
"resolvedAt": null,
"partyMarket": null,
"outcomes": [
{
"symbol": "G07TX_110326_LF",
"name": "Lizzie Fletcher",
"party": null,
"incumbent": null,
"yesPrice": "0.91",
"yesPriceChange24h": "0",
"tradable": true,
"photo": null
},
{
"symbol": "G07TX_110326_AH",
"name": "Alexander Hale",
"party": null,
"incumbent": null,
"yesPrice": "0.07",
"yesPriceChange24h": "0",
"tradable": true,
"photo": null
}
]
}
]
}
]
}
}
Races
Each race is one event on the venue. Its office and state come from the event’s categories, and its type and district from the venue’s ticker.raceType | Meaning |
|---|---|
general | November general election |
special | Special election for a vacant seat, such as Ohio’s and Florida’s 2026 Senate seats |
primary_d, primary_r | Democratic or Republican primary |
primary_open | Nonpartisan or top-four primary, such as Alaska’s |
runoff | Runoff election |
- House races carry
district. A state with a single seat hasdistrict: 1andatLarge: true. partyMarketis the venue’s market on which party wins the race, when it lists one. It is attached to general elections only.outcomeshas one entry per candidate, highestyesPricefirst, untraded candidates last. Contracts the venue withdrew are left out. A candidate who lost a primary can still be listed while the venue keeps their contract open.
Prices
yesPriceis the candidate’s last YES trade, as a decimal string. Once the race has settled it is the settlement value instead:1for the winner,0for everyone else.yesPriceChange24hisyesPriceless the YES price 24 hours earlier. A candidate who has not traded in the last day shows0.- Both are
nullfor a candidate who has never traded.yesPriceChange24his alsonullwhen every trade is in the last 24 hours. - Prices come from the venue’s pair-trade files, so they can trail the live market by several minutes. For live prices on one race, use Stream Live Prices.
Status and results
status | Meaning |
|---|---|
open | Trading |
closed | Trading has ended; the result is not yet known |
resolved | The venue has settled the race. winningSymbol and resolvedAt are set |
open or closed, however clear its result. Pass includeResolved=false to leave settled races out.
Party, incumbent and photo
partyisD,R,IorO. It is set only where the venue’s own listing names it: party markets, primaries, and a party’s placeholder contract. Elsewhere it isnullfor now.heldByandincumbentarenullfor now.photois a freely licensed portrait (public domain, CC0, CC BY or CC BY-SA) when one is available, elsenull. Showcreditandlicensewith the image, or on a credits page the image links to: the license requires it.
"photo": {
"url": "https://<photo host>/2026/AXXTX_110326_KP.webp",
"credit": "Gage Skidmore",
"license": "CC BY-SA 4.0",
"licenseUrl": "https://creativecommons.org/licenses/by-sa/4.0",
"sourceUrl": "https://commons.wikimedia.org/wiki/File:K_Paxton.jpg"
}
Polling
The map is the same for every caller and is rebuilt at most every few seconds, so poll it rather than stream it.- Send the previous response’s
ETagasIf-None-Match. While nothing in the map has changed, the answer is304with no body. - Send
Accept-Encoding: gzip. The whole map is about 360 KB as JSON and about 35 KB gzipped. asOfis when the map was built. It is not part of theETag, so after a304keep theasOfyou already have.- Each filter combination has its own
ETag. - A 10 to 15 second interval keeps a map current.
Examples
curl --compressed "https://api.tradearies.dev/v1/predictions/elections/2026/states"
curl --compressed "https://api.tradearies.dev/v1/predictions/elections/2026/states?state=TX"
curl --compressed "https://api.tradearies.dev/v1/predictions/elections/2026/states?office=house&raceType=general"
curl -i --compressed "https://api.tradearies.dev/v1/predictions/elections/2026/states" \
-H 'If-None-Match: "359d3e5222f03038-adfa5621"'
Errors
400—cycleis not a number, orstate,office,raceTypeorincludeResolvedis not one of its allowed values404— no map for that cycle500— unexpected server error
Headers
The ETag of a previous response. Answers 304 while the map is unchanged.
Path Parameters
Election year. 2026 is the only cycle served.
2026
Query Parameters
Two-letter code of one of the 50 states. Returns that state only.
"TX"
Comma-separated: senate, governor, house. Default: all.
"senate,house"
Comma-separated: general, special, primary_d, primary_r, primary_open, runoff. Default: all.
"general,special"
false leaves out races the venue has settled.
Response
The election map. Gzipped when the request sends Accept-Encoding: gzip.
Was this page helpful?