curl --request GET \
--url https://api.agg.market/venue-events/{id} \
--header 'x-app-id: <api-key>'import requests
url = "https://api.agg.market/venue-events/{id}"
headers = {"x-app-id": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-app-id': '<api-key>'}};
fetch('https://api.agg.market/venue-events/{id}', 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.agg.market/venue-events/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-app-id: <api-key>"
],
]);
$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.agg.market/venue-events/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-app-id", "<api-key>")
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.agg.market/venue-events/{id}")
.header("x-app-id", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agg.market/venue-events/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-app-id"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"externalIdentifier": "<string>",
"title": "<string>",
"image": "<string>",
"categories": [
{
"id": "<string>",
"category": {
"id": "<string>",
"name": "<string>",
"displayName": "<string>",
"parentId": "<string>",
"eventCount": 123,
"volume24hr": 123,
"volume": 123
}
}
],
"description": "<string>",
"volume": 1,
"startDate": "<string>",
"endDate": "<string>",
"creationDate": "<string>",
"gameStartTime": "<string>",
"slug": "<string>",
"subtitle": "<string>",
"venues": [],
"marketCount": 1,
"venueCount": 1,
"groupMarketCount": 1,
"updatedAt": "<string>",
"venueMarkets": [
{
"id": "<string>",
"externalIdentifier": "<string>",
"question": "<string>",
"venueMarketOutcomes": [
{
"id": "<string>",
"venueMarketId": "<string>",
"label": "<string>",
"externalIdentifier": "<string>",
"title": "<string>",
"price": 0.5,
"winner": true,
"matchedVenueMarketOutcomes": [
{
"venueMarketId": "<string>",
"venueMarketOutcomeId": "<string>"
}
],
"matchDecision": {
"reasonPresets": [
"<string>"
],
"reasonText": "<string>",
"decidedBy": "<string>",
"decidedAt": "<string>"
}
}
],
"marketId": "<string>",
"venueEventId": "<string>",
"description": "<string>",
"rulesPrimary": "<string>",
"rulesSecondary": "<string>",
"conditionId": "<string>",
"volume": 1,
"image": "<string>",
"startDate": "<string>",
"endDate": "<string>",
"creationDate": "<string>",
"createdAt": "<string>",
"resolutionDate": "<string>",
"negRisk": true,
"venues": [],
"venueCount": 1,
"arbReturn": 123,
"aggKey": "<string>",
"sportsMarketType": "<string>",
"sectionRank": 123,
"period": "<string>",
"marketCategory": "<string>",
"marketGroup": "<string>",
"marketSubtype": "<string>",
"lineValue": 123,
"matchedVenueMarkets": [
{
"id": "<string>",
"externalIdentifier": "<string>",
"question": "<string>",
"description": "<string>",
"rulesPrimary": "<string>",
"rulesSecondary": "<string>",
"volume": 1,
"conditionId": "<string>",
"arbReturn": 123,
"shortTitle": "<string>",
"image": "<string>",
"venueEvent": {
"id": "<string>",
"externalIdentifier": "<string>",
"slug": "<string>",
"title": "<string>",
"series": {
"id": "<string>",
"venue": "<string>",
"externalIdentifier": "<string>",
"name": "<string>"
}
},
"venueMarketOutcomes": [
{
"id": "<string>",
"venueMarketId": "<string>",
"label": "<string>",
"title": "<string>",
"price": 123,
"winner": true
}
]
}
]
}
],
"arbReturn": 123,
"series": {
"externalIdentifier": "<string>"
},
"recurrence": "<string>",
"aggKey": "<string>",
"sport": "<string>",
"settlementDiff": {
"sharedSummary": "<string>",
"differences": [
{
"type": "<string>",
"title": "<string>",
"perVenue": {},
"summary": "<string>"
}
]
}
}{
"message": "<string>"
}{
"message": "<string>"
}Get Venue Event
Returns a single venue event. By default the response includes an embedded venueMarkets array. DEPRECATION: embedded venueMarkets is deprecated and will be removed — fetch the event’s markets from GET /venue-markets?venueEventId=. To opt into the lean response now (no venueMarkets), send the expand query without markets (e.g. ?expand=); send ?expand=markets to pin markets inline across the future default change.
curl --request GET \
--url https://api.agg.market/venue-events/{id} \
--header 'x-app-id: <api-key>'import requests
url = "https://api.agg.market/venue-events/{id}"
headers = {"x-app-id": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-app-id': '<api-key>'}};
fetch('https://api.agg.market/venue-events/{id}', 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.agg.market/venue-events/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-app-id: <api-key>"
],
]);
$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.agg.market/venue-events/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-app-id", "<api-key>")
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.agg.market/venue-events/{id}")
.header("x-app-id", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agg.market/venue-events/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-app-id"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"externalIdentifier": "<string>",
"title": "<string>",
"image": "<string>",
"categories": [
{
"id": "<string>",
"category": {
"id": "<string>",
"name": "<string>",
"displayName": "<string>",
"parentId": "<string>",
"eventCount": 123,
"volume24hr": 123,
"volume": 123
}
}
],
"description": "<string>",
"volume": 1,
"startDate": "<string>",
"endDate": "<string>",
"creationDate": "<string>",
"gameStartTime": "<string>",
"slug": "<string>",
"subtitle": "<string>",
"venues": [],
"marketCount": 1,
"venueCount": 1,
"groupMarketCount": 1,
"updatedAt": "<string>",
"venueMarkets": [
{
"id": "<string>",
"externalIdentifier": "<string>",
"question": "<string>",
"venueMarketOutcomes": [
{
"id": "<string>",
"venueMarketId": "<string>",
"label": "<string>",
"externalIdentifier": "<string>",
"title": "<string>",
"price": 0.5,
"winner": true,
"matchedVenueMarketOutcomes": [
{
"venueMarketId": "<string>",
"venueMarketOutcomeId": "<string>"
}
],
"matchDecision": {
"reasonPresets": [
"<string>"
],
"reasonText": "<string>",
"decidedBy": "<string>",
"decidedAt": "<string>"
}
}
],
"marketId": "<string>",
"venueEventId": "<string>",
"description": "<string>",
"rulesPrimary": "<string>",
"rulesSecondary": "<string>",
"conditionId": "<string>",
"volume": 1,
"image": "<string>",
"startDate": "<string>",
"endDate": "<string>",
"creationDate": "<string>",
"createdAt": "<string>",
"resolutionDate": "<string>",
"negRisk": true,
"venues": [],
"venueCount": 1,
"arbReturn": 123,
"aggKey": "<string>",
"sportsMarketType": "<string>",
"sectionRank": 123,
"period": "<string>",
"marketCategory": "<string>",
"marketGroup": "<string>",
"marketSubtype": "<string>",
"lineValue": 123,
"matchedVenueMarkets": [
{
"id": "<string>",
"externalIdentifier": "<string>",
"question": "<string>",
"description": "<string>",
"rulesPrimary": "<string>",
"rulesSecondary": "<string>",
"volume": 1,
"conditionId": "<string>",
"arbReturn": 123,
"shortTitle": "<string>",
"image": "<string>",
"venueEvent": {
"id": "<string>",
"externalIdentifier": "<string>",
"slug": "<string>",
"title": "<string>",
"series": {
"id": "<string>",
"venue": "<string>",
"externalIdentifier": "<string>",
"name": "<string>"
}
},
"venueMarketOutcomes": [
{
"id": "<string>",
"venueMarketId": "<string>",
"label": "<string>",
"title": "<string>",
"price": 123,
"winner": true
}
]
}
]
}
],
"arbReturn": 123,
"series": {
"externalIdentifier": "<string>"
},
"recurrence": "<string>",
"aggKey": "<string>",
"sport": "<string>",
"settlementDiff": {
"sharedSummary": "<string>",
"differences": [
{
"type": "<string>",
"title": "<string>",
"perVenue": {},
"summary": "<string>"
}
]
}
}{
"message": "<string>"
}{
"message": "<string>"
}Authorizations
Your application ID. Required for all app-tier and user-tier routes.
Path Parameters
Response
200
Event id. List responses return one row per matched cluster, and for a matched event this id is the cluster anchor — the handle to use for cross-venue lookups. Re-resolve it from discovery rather than storing it as a permanent key: clusters can merge, after which the id remains a valid event but is no longer the cluster head. See the Matched Clusters guide.
kalshi, polymarket, limitless, opinion, predict, probable, myriad, hyperliquid Show child attributes
Show child attributes
x >= 0open, closed, resolved, unopened, paused Venues this row's matched cluster spans — use it for venue badges. On a cluster anchor this is the cluster-wide set; a non-anchor member usually reports the same set, but narrows to its own venue when none of its markets have cross-venue counterparts.
kalshi, polymarket, limitless, opinion, predict, probable, myriad, hyperliquid Number of markets on this event. Use this rather than the length of an embedded venueMarkets array, which is a preview on list responses.
x >= 0Length of venues — the size of the matched cluster.
x >= 0x >= 0Embedded markets. On list responses this is a preview of up to three markets chosen to represent the event on a card — not the complete set, and not necessarily the largest; use marketCount for totals. On the by-id response it is uncapped. Deprecated on both — fetch markets from GET /venue-markets?venueEventId=.
Show child attributes
Show child attributes
pending, unmatched, review, matched, verified, rejected Show child attributes
Show child attributes
Deterministic canonical key computed from this venue's own data; null when not canonicalizable. This is a fetch filter, not a cross-venue join key — it is guaranteed identical across venues only for sports head-to-head and crypto up/down markets, and two members of the same matched cluster can carry different keys. Use the event id and matchedVenueMarkets for identity.
candidate, sport, axis, dates Show child attributes
Show child attributes