Python (SDK)
from finance_dev import FinanceDev
with FinanceDev() as fd_client:
res = fd_client.predictions.markets.get_event_contracts(event_id="HORC_1126")
assert res.object is not None
# Handle response
print(res.object)import { FinanceDev } from "@ariesdotcom/finance-dev";
const financeDev = new FinanceDev();
async function run() {
const result = await financeDev.predictions.markets.getEventContracts({
eventId: "HORC_1126",
});
console.log(result);
}
run();curl --request GET \
--url https://api.aries.com/v1/predictions/events/{eventId}/contractsconst options = {method: 'GET'};
fetch('https://api.aries.com/v1/predictions/events/{eventId}/contracts', 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/events/{eventId}/contracts",
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/events/{eventId}/contracts"
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/events/{eventId}/contracts")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aries.com/v1/predictions/events/{eventId}/contracts")
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": {
"contracts": [
{
"baseEventId": "<string>",
"candidateStatus": "C",
"eventId": "<string>",
"frontRunner": true,
"incumbent": true,
"lastSyncedAt": "2023-11-07T05:31:56Z",
"nonTradable": true,
"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>"
},
"state": "<string>",
"symbol": "<string>",
"symbolSubTypes": [
"<string>"
],
"tickSize": "0.01",
"tradable": true,
"baseCurrency": "<string>",
"description": "<string>",
"evaluationType": "<string>",
"expirationDate": "2023-11-07T05:31:56Z",
"lastTradeDate": "2023-11-07T05:31:56Z",
"minTradeQty": "<string>",
"multiplier": 123,
"priceLimit": "<unknown>",
"priceScale": "<string>",
"question": "<string>",
"startDate": "2023-11-07T05:31:56Z",
"strikeUnit": "<string>",
"strikeValue": "<string>",
"terminationDate": "2023-11-07T05:31:56Z",
"tradingSchedule": "<unknown>"
}
],
"event": {
"baseEventId": "<string>",
"eventId": "<string>",
"lastSyncedAt": "2023-11-07T05:31:56Z",
"calculationMethod": "<string>",
"eventDisplayName": "<string>",
"eventQuestion": "<string>",
"expectedLastTradeTime": "2023-11-07T05:31:56Z",
"expectedPayoutTime": "2023-11-07T05:31:56Z",
"expectedResolutionTime": "2023-11-07T05:31:56Z",
"sourceAgency": "<string>",
"sourceAgencyUrl": "<string>",
"timeSpecifier": "2026.06",
"underlyingSpec": "<string>"
}
}
}{
"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
}Reference Data
Get Event Contracts
Returns a single event together with every contract defined under it, read live from the catalogue.
Use Case: Enumerate the tradable strikes of one event, and read current tradability before acting on a search hit.
GET
/
v1
/
predictions
/
events
/
{eventId}
/
contracts
Python (SDK)
from finance_dev import FinanceDev
with FinanceDev() as fd_client:
res = fd_client.predictions.markets.get_event_contracts(event_id="HORC_1126")
assert res.object is not None
# Handle response
print(res.object)import { FinanceDev } from "@ariesdotcom/finance-dev";
const financeDev = new FinanceDev();
async function run() {
const result = await financeDev.predictions.markets.getEventContracts({
eventId: "HORC_1126",
});
console.log(result);
}
run();curl --request GET \
--url https://api.aries.com/v1/predictions/events/{eventId}/contractsconst options = {method: 'GET'};
fetch('https://api.aries.com/v1/predictions/events/{eventId}/contracts', 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/events/{eventId}/contracts",
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/events/{eventId}/contracts"
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/events/{eventId}/contracts")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aries.com/v1/predictions/events/{eventId}/contracts")
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": {
"contracts": [
{
"baseEventId": "<string>",
"candidateStatus": "C",
"eventId": "<string>",
"frontRunner": true,
"incumbent": true,
"lastSyncedAt": "2023-11-07T05:31:56Z",
"nonTradable": true,
"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>"
},
"state": "<string>",
"symbol": "<string>",
"symbolSubTypes": [
"<string>"
],
"tickSize": "0.01",
"tradable": true,
"baseCurrency": "<string>",
"description": "<string>",
"evaluationType": "<string>",
"expirationDate": "2023-11-07T05:31:56Z",
"lastTradeDate": "2023-11-07T05:31:56Z",
"minTradeQty": "<string>",
"multiplier": 123,
"priceLimit": "<unknown>",
"priceScale": "<string>",
"question": "<string>",
"startDate": "2023-11-07T05:31:56Z",
"strikeUnit": "<string>",
"strikeValue": "<string>",
"terminationDate": "2023-11-07T05:31:56Z",
"tradingSchedule": "<unknown>"
}
],
"event": {
"baseEventId": "<string>",
"eventId": "<string>",
"lastSyncedAt": "2023-11-07T05:31:56Z",
"calculationMethod": "<string>",
"eventDisplayName": "<string>",
"eventQuestion": "<string>",
"expectedLastTradeTime": "2023-11-07T05:31:56Z",
"expectedPayoutTime": "2023-11-07T05:31:56Z",
"expectedResolutionTime": "2023-11-07T05:31:56Z",
"sourceAgency": "<string>",
"sourceAgencyUrl": "<string>",
"timeSpecifier": "2026.06",
"underlyingSpec": "<string>"
}
}
}{
"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
}Overview
An event is one real-world question (for exampleHORC_1126). The contracts under it are the individual tradable outcomes or strikes. This endpoint returns the event’s metadata plus the full contract list in one response.
GET /v1/predictions/events/HORC_1126/contracts
This is the current view
Search reads a full-text index that trails the catalogue by seconds. This endpoint reads the catalogue itself. Anything that must be current — in particularstate and tradable — should be read here, using the symbol from a search hit as the key, rather than taken from the hit.
Response
data.event carries the event, data.contracts the array of contracts:
{
"success": true,
"data": {
"event": {
"eventId": "HORC_1126",
"baseEventId": "HORC",
"eventQuestion": "Which party will control the House after the 2026 election?",
"timeSpecifier": "2026.11",
"lastSyncedAt": "2026-04-18T13:45:01.234Z"
},
"contracts": [
{
"symbol": "HORC_1126_Republican",
"eventId": "HORC_1126",
"baseEventId": "HORC",
"state": "ACTIVE",
"tradable": true,
"nonTradable": false,
"tickSize": "0.01",
"symbolSubTypes": [],
"lastSyncedAt": "2026-04-18T13:45:01.234Z",
"photo": null,
"party": null,
"frontRunner": null,
"incumbent": null,
"candidateStatus": null
}
]
}
}
Fields worth knowing
| Field | Notes |
|---|---|
tickSize | Exact decimal as a string. Parse with a decimal type. |
timeSpecifier | Published precision of the event, one of YYYY, YYYY.MM, or YYYY.MM.DD. |
expectedPayoutTime, expectedLastTradeTime, expectedResolutionTime | Venue wall-clock times. The feed carries no time zone, so the trailing Z is a label, not a conversion — do not shift these into local time. |
priceLimit, tradingSchedule | Venue JSON passed through unchanged; shape is not guaranteed stable. |
photo | The candidate’s portrait on an election contract, or null. See Candidate photos. |
party, frontRunner, incumbent, candidateStatus | The venue’s metadata for an election candidate, or null. See Candidate metadata. |
Candidate photos
Every contract carriesphoto. On an election contract whose candidate has a portrait, it is an object; on every other contract, including non-election contracts and party or chamber-control outcomes, it is null.
"photo": {
"url": "https://d3db84syzhd30r.cloudfront.net/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"
}
urlis a 256×256 webp.- Every photo is freely licensed: public domain, CC0, CC BY or CC BY-SA. Show
creditandlicensewith the image, or on a credits page the image links to: the license requires it. - These are the same portraits Get Election Map returns.
- Photos are on staging (
https://api.tradearies.dev). On productionphotoisnulluntil the rollout is announced in the changelog.
Candidate metadata
Every contract carriesparty, frontRunner, incumbent and candidateStatus. On an election contract they come from the venue’s candidate metadata, refreshed hourly; on every other contract, including party or chamber-control outcomes, all four are null.
{
"symbol": "AXXTX_110326_JCO",
"strikeValue": "John Cornyn",
"party": "R",
"frontRunner": false,
"incumbent": true,
"candidateStatus": "I"
}
| Field | Values |
|---|---|
party | D Democratic, R Republican, I independent, O any other |
frontRunner | true for a nominee, a candidate who advanced, or a significant independent; false for one no longer in the race, such as a primary loser. To match the election map, show only true. |
incumbent | Whether the candidate holds the seat |
candidateStatus | FEC-style: I incumbent, C challenger, O open seat, N not running |
null on an election contract the venue has no value for. These are the same values Get Election Map uses. They are on staging (https://api.tradearies.dev); on production they are null until the rollout is announced in the changelog.
Example
curl -X GET "https://api.aries.com/v1/predictions/events/HORC_1126/contracts"
Errors
400—eventIdmissing or malformed404— no event with that ID, or a conditional one500— unexpected server error
Was this page helpful?