REST API
Events
Browse and query sports events
List Events
GET /api/ext/v1/eventsScope: markets:read
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
league | string | No | Filter by league ID (e.g., nba, epl, nfl) |
sport | string | No | Filter by sport ID |
category | string | No | Filter by category (e.g., sports, esports) |
subcategory | string | No | Filter by subcategory |
live | boolean | No | true — only live events; false — exclude live |
ended | boolean | No | true — include ended events; false — active only |
is_featured | boolean | No | Filter featured events |
is_future | boolean | No | Filter futures / championship markets |
sort_by | string | No | Sort field (e.g., volume, created_at) |
limit | integer | No | Items per page (default: 20) |
offset | integer | No | Pagination offset |
cURL Example
API_KEY="po_live_your_api_key"
API_SECRET="your_api_secret"
TIMESTAMP=$(date +%s%3N)
NONCE=$(openssl rand -hex 16)
PATH="/api/ext/v1/events?league=nba&live=false&limit=10"
BODY_HASH=$(echo -n "" | openssl dgst -sha256 | awk '{print $NF}')
SIGNING_STRING="GET\n${PATH}\n${TIMESTAMP}\n${NONCE}\n${BODY_HASH}"
SIGNATURE=$(echo -ne "$SIGNING_STRING" | openssl dgst -sha256 -hmac "$API_SECRET" | awk '{print $NF}')
curl -s "https://api.winnova.pro${PATH}" \
-H "X-API-KEY: $API_KEY" \
-H "X-API-TIMESTAMP: $TIMESTAMP" \
-H "X-API-SIGNATURE: $SIGNATURE" \
-H "X-API-NONCE: $NONCE"Response
{
"success": true,
"data": {
"events": [
{
"id": "63b2d028-f436-49cd-8184-f59bc41dd100",
"external_id": "341369",
"slug": "nba-lakers-vs-celtics-2026-04-05",
"title": "Lakers vs Celtics",
"description": "Match description...",
"category": "sports",
"subcategory": "basketball",
"league_id": "nba",
"series_id": "10430",
"start_date": "2026-04-05T00:00:00Z",
"end_date": "2026-04-06T00:00:00Z",
"volume": 125000.50,
"trader_count": 342,
"live": false,
"ended": false,
"is_featured": true,
"is_future": false,
"team_match_status": "auto_matched",
"home_team_id": 1001,
"away_team_id": 1002,
"home_team": {
"id": 1001,
"name": "Los Angeles Lakers",
"short_name": "Lakers",
"name_zh": "洛杉矶湖人",
"short_name_zh": "湖人",
"abbreviation": "lal",
"logo": "https://...",
"recent_form": null
},
"away_team": {
"id": 1002,
"name": "Boston Celtics",
"short_name": "Celtics",
"name_zh": "波士顿凯尔特人",
"short_name_zh": "凯尔特人",
"abbreviation": "bos",
"logo": "https://...",
"recent_form": null
},
"enriched_markets": {
"home_win": {
"id": "f3f26422-20df-44e6-914e-dc70cfddba0b",
"token_id": "108745061...",
"token_id_a": "108745061...",
"token_id_b": "823796526...",
"outcome": "a",
"price": 0.55,
"odds": 1.82
},
"away_win": {
"id": "f3f26422-20df-44e6-914e-dc70cfddba0b",
"token_id": "823796526...",
"token_id_a": "823796526...",
"token_id_b": "108745061...",
"outcome": "b",
"price": 0.45,
"odds": 2.22
},
"game_start_time": "2026-04-05T19:30:00Z"
},
"created_at": "2026-04-01T00:00:00Z",
"updated_at": "2026-04-04T10:00:00Z"
}
],
"total_count": 42,
"page": 1,
"page_size": 10
}
}Get Event Detail
GET /api/ext/v1/events/:idScope: markets:read
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | string | Event UUID or slug |
cURL Example
EVENT_ID="63b2d028-f436-49cd-8184-f59bc41dd100"
API_KEY="po_live_your_api_key"
API_SECRET="your_api_secret"
TIMESTAMP=$(date +%s%3N)
NONCE=$(openssl rand -hex 16)
PATH="/api/ext/v1/events/${EVENT_ID}"
BODY_HASH=$(echo -n "" | openssl dgst -sha256 | awk '{print $NF}')
SIGNING_STRING="GET\n${PATH}\n${TIMESTAMP}\n${NONCE}\n${BODY_HASH}"
SIGNATURE=$(echo -ne "$SIGNING_STRING" | openssl dgst -sha256 -hmac "$API_SECRET" | awk '{print $NF}')
curl -s "https://api.winnova.pro${PATH}" \
-H "X-API-KEY: $API_KEY" \
-H "X-API-TIMESTAMP: $TIMESTAMP" \
-H "X-API-SIGNATURE: $SIGNATURE" \
-H "X-API-NONCE: $NONCE"Response
{
"success": true,
"data": {
"event": {
"id": "63b2d028-f436-49cd-8184-f59bc41dd100",
"external_id": "341369",
"slug": "nba-lakers-vs-celtics-2026-04-05",
"title": "Lakers vs Celtics",
"description": "...",
"category": "sports",
"subcategory": "basketball",
"league_id": "nba",
"series_id": "10430",
"start_date": "2026-04-05T00:00:00Z",
"start_time": "2026-04-05T19:30:00Z",
"end_date": "2026-04-06T00:00:00Z",
"volume": 125000.50,
"trader_count": 342,
"live": false,
"ended": false,
"is_featured": true,
"is_future": false,
"team_match_status": "auto_matched",
"home_team_id": 1001,
"away_team_id": 1002,
"game_id": 1407013,
"home_team": {
"id": 1001,
"name": "Los Angeles Lakers",
"short_name": "Lakers",
"name_zh": "洛杉矶湖人",
"short_name_zh": "湖人",
"abbreviation": "lal",
"logo": "https://...",
"recent_form": null
},
"away_team": {
"id": 1002,
"name": "Boston Celtics",
"short_name": "Celtics",
"name_zh": "波士顿凯尔特人",
"short_name_zh": "凯尔特人",
"abbreviation": "bos",
"logo": "https://...",
"recent_form": null
},
"markets": [
{
"id": "f3f26422-20df-44e6-914e-dc70cfddba0b",
"external_id": "1852586",
"condition_id": "0xac73797b...",
"token_id_a": "108745061...",
"token_id_b": "823796526...",
"question": "Who will win?",
"outcome_a": "Lakers",
"outcome_b": "Celtics",
"price_a": 0.55,
"price_b": 0.45,
"odds_a": 1.82,
"odds_b": 2.22,
"volume": 125000.50,
"liquidity": 45000.00,
"status": "active",
"market_type": "moneyline",
"group_item_title": "Match Winner",
"game_start_time": "2026-04-05T19:30:00Z"
}
],
"created_at": "2026-04-01T00:00:00Z",
"updated_at": "2026-04-04T10:00:00Z"
}
}
}
start_dateis the market open date;start_timeis the actual game kickoff time. Usestart_timefor displaying match schedules.
Error Response
{ "success": false, "error": "Event not found" }Status 404 — event does not exist.
Get Event Markets
GET /api/ext/v1/events/:id/marketsScope: markets:read
Returns all markets for a specific event.
cURL Example
EVENT_ID="63b2d028-f436-49cd-8184-f59bc41dd100"
API_KEY="po_live_your_api_key"
API_SECRET="your_api_secret"
TIMESTAMP=$(date +%s%3N)
NONCE=$(openssl rand -hex 16)
PATH="/api/ext/v1/events/${EVENT_ID}/markets"
BODY_HASH=$(echo -n "" | openssl dgst -sha256 | awk '{print $NF}')
SIGNING_STRING="GET\n${PATH}\n${TIMESTAMP}\n${NONCE}\n${BODY_HASH}"
SIGNATURE=$(echo -ne "$SIGNING_STRING" | openssl dgst -sha256 -hmac "$API_SECRET" | awk '{print $NF}')
curl -s "https://api.winnova.pro${PATH}" \
-H "X-API-KEY: $API_KEY" \
-H "X-API-TIMESTAMP: $TIMESTAMP" \
-H "X-API-SIGNATURE: $SIGNATURE" \
-H "X-API-NONCE: $NONCE"Response
{
"success": true,
"data": {
"markets": [
{
"id": "f3f26422-20df-44e6-914e-dc70cfddba0b",
"external_id": "1852586",
"condition_id": "0xac73797b...",
"token_id_a": "42881612871834249183...",
"token_id_b": "80238421908721348754...",
"question": "Who will win?",
"outcome_a": "Lakers",
"outcome_b": "Celtics",
"price_a": 0.55,
"price_b": 0.45,
"odds_a": 1.82,
"odds_b": 2.22,
"volume": 125000.50,
"liquidity": 45000.00,
"status": "active",
"market_type": "moneyline",
"group_item_title": "Match Winner",
"game_start_time": "2026-04-05T19:30:00Z"
}
],
"count": 3
}
}Use
token_id_a/token_id_bas theasset_idwhen querying orderbooks.
Error Response
{ "success": false, "error": "Event not found" }Status 404 — event does not exist.