curl --request GET \
--url https://hip4-api.totalis.trade/v1/discoveryimport requests
url = "https://hip4-api.totalis.trade/v1/discovery"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://hip4-api.totalis.trade/v1/discovery', 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://hip4-api.totalis.trade/v1/discovery",
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://hip4-api.totalis.trade/v1/discovery"
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://hip4-api.totalis.trade/v1/discovery")
.asString();require 'uri'
require 'net/http'
url = URI("https://hip4-api.totalis.trade/v1/discovery")
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{
"items": [
{
"id": "question:198",
"kind": "QUESTION",
"native_question_id": "198",
"title": "2026/2027 English Premier League winner",
"state": "ACTIVE",
"category": "Sports",
"subcategory": "epl",
"markets": [
{
"outcome_id": "1473",
"native_question_id": "198",
"title": "Arsenal",
"state": "ACTIVE",
"result": {
"availability": "AVAILABLE",
"result_state": "UNRESOLVED"
},
"metadata_revision": "14269",
"eligibility": {
"state": "ENABLED"
},
"combo": {
"state": "CLOSED",
"reason": "OUTSIDE_WINDOW",
"opens_at": "1811592000"
},
"deployer": {
"name": "Outcome",
"address": "0x0c46eb73fae2816f219fcf11f50d6d3c59b5819e"
},
"category": "Sports",
"subcategory": "epl",
"sides": [
{
"side": "YES",
"coin": "#14730",
"reference": {
"availability": "AVAILABLE",
"quality": "BOOK_MID",
"value": "603145000000000000",
"best_bid": "603140000000000000",
"best_ask": "603150000000000000",
"last_trade": "603140000000000000",
"last_trade_at": "2026-10-18T05:15:28.404Z",
"chance": "603145000000000000",
"chance_basis": "MID",
"mark": "603145000000000000",
"scale": "1000000000000000000",
"freshness": "FRESH",
"received_at": "2026-10-18T05:22:53.874256929Z"
}
},
{
"side": "NO",
"coin": "#14731",
"reference": {
"availability": "AVAILABLE",
"quality": "BOOK_MID",
"value": "396855000000000000",
"best_bid": "396850000000000000",
"best_ask": "396860000000000000",
"last_trade": "396860000000000000",
"last_trade_at": "2026-10-18T05:15:28.404Z",
"chance": "396855000000000000",
"chance_basis": "MID",
"mark": "396855000000000000",
"scale": "1000000000000000000",
"freshness": "FRESH",
"received_at": "2026-10-18T05:22:53.874256929Z"
}
}
],
"dates": {
"event": null,
"result_by": "1812196800",
"resolves_after": null,
"scheduled_event_at": null,
"observation_ends_at": null,
"market_class": "SPORTS_TOURNAMENT"
}
},
{
"outcome_id": "1474",
"native_question_id": "198",
"title": "Manchester City",
"state": "ACTIVE",
"result": {
"availability": "AVAILABLE",
"result_state": "UNRESOLVED"
},
"metadata_revision": "14269",
"eligibility": {
"state": "ENABLED"
},
"combo": {
"state": "CLOSED",
"reason": "OUTSIDE_WINDOW",
"opens_at": "1811592000"
},
"deployer": {
"name": "Outcome",
"address": "0x0c46eb73fae2816f219fcf11f50d6d3c59b5819e"
},
"category": "Sports",
"subcategory": "epl",
"sides": [
{
"side": "YES",
"coin": "#14740",
"reference": {
"availability": "AVAILABLE",
"quality": "BOOK_MID",
"value": "208925000000000000",
"best_bid": "208920000000000000",
"best_ask": "208930000000000000",
"last_trade": "208920000000000000",
"last_trade_at": "2026-10-18T05:21:59.572Z",
"chance": "208925000000000000",
"chance_basis": "MID",
"mark": "208925000000000000",
"scale": "1000000000000000000",
"freshness": "FRESH",
"received_at": "2026-10-18T05:22:54.269357435Z"
}
},
{
"side": "NO",
"coin": "#14741",
"reference": {
"availability": "AVAILABLE",
"quality": "BOOK_MID",
"value": "791075000000000000",
"best_bid": "791070000000000000",
"best_ask": "791080000000000000",
"last_trade": "791080000000000000",
"last_trade_at": "2026-10-18T05:21:59.572Z",
"chance": "791075000000000000",
"chance_basis": "MID",
"mark": "791075000000000000",
"scale": "1000000000000000000",
"freshness": "FRESH",
"received_at": "2026-10-18T05:22:54.269357435Z"
}
}
],
"dates": {
"event": null,
"result_by": "1812196800",
"resolves_after": null,
"scheduled_event_at": null,
"observation_ends_at": null,
"market_class": "SPORTS_TOURNAMENT"
}
}
]
},
{
"id": "market:2597",
"kind": "STANDALONE",
"native_question_id": null,
"title": "Anthropic IPO confirmed by Oct 31, 2026 23:59 UTC",
"state": "ACTIVE",
"category": "Finance",
"subcategory": "stocks",
"markets": [
{
"outcome_id": "2597",
"native_question_id": null,
"title": "Anthropic IPO confirmed by Oct 31, 2026 23:59 UTC",
"state": "ACTIVE",
"result": {
"availability": "AVAILABLE",
"result_state": "UNRESOLVED"
},
"metadata_revision": "14269",
"eligibility": {
"state": "ENABLED"
},
"combo": {
"state": "CLOSED",
"reason": "OUTSIDE_WINDOW",
"opens_at": "1792886340"
},
"deployer": {
"name": "trade[XYZ]",
"address": "0x7aca09667816a4817b8bc697fb239ad42ff9f553"
},
"category": "Finance",
"subcategory": "stocks",
"sides": [
{
"side": "YES",
"coin": "#25970",
"reference": {
"availability": "AVAILABLE",
"quality": "BOOK_MID",
"value": "75000000000000000",
"best_bid": "20000000000000000",
"best_ask": "130000000000000000",
"last_trade": "20000000000000000",
"last_trade_at": "2026-10-17T09:16:32.476Z",
"chance": "20000000000000000",
"chance_basis": "LAST_TRADE",
"mark": "20000000000000000",
"scale": "1000000000000000000",
"freshness": "FRESH",
"received_at": "2026-10-18T05:23:07.27382175Z"
}
},
{
"side": "NO",
"coin": "#25971",
"reference": {
"availability": "AVAILABLE",
"quality": "BOOK_MID",
"value": "925000000000000000",
"best_bid": "870000000000000000",
"best_ask": "980000000000000000",
"last_trade": "980000000000000000",
"last_trade_at": "2026-10-17T09:16:32.476Z",
"chance": "980000000000000000",
"chance_basis": "LAST_TRADE",
"mark": "980000000000000000",
"scale": "1000000000000000000",
"freshness": "FRESH",
"received_at": "2026-10-18T05:23:07.27382175Z"
}
}
],
"dates": {
"event": null,
"result_by": null,
"resolves_after": "1794095940",
"scheduled_event_at": null,
"observation_ends_at": "1793491140",
"market_class": "COMPANY_IPO"
}
}
]
}
],
"catalog_generation": "14269",
"next_cursor": null,
"has_more": false
}{
"error": {
"code": "INVALID_QUERY",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "STALE_CURSOR",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "REFRESH"
}
}{
"error": {
"code": "MARKET_DATA_UNAVAILABLE",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "BACKOFF"
}
}List questions
List active questions with their titles and markets, and the standalone markets that belong to no question.
No API key required.
curl --request GET \
--url https://hip4-api.totalis.trade/v1/discoveryimport requests
url = "https://hip4-api.totalis.trade/v1/discovery"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://hip4-api.totalis.trade/v1/discovery', 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://hip4-api.totalis.trade/v1/discovery",
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://hip4-api.totalis.trade/v1/discovery"
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://hip4-api.totalis.trade/v1/discovery")
.asString();require 'uri'
require 'net/http'
url = URI("https://hip4-api.totalis.trade/v1/discovery")
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{
"items": [
{
"id": "question:198",
"kind": "QUESTION",
"native_question_id": "198",
"title": "2026/2027 English Premier League winner",
"state": "ACTIVE",
"category": "Sports",
"subcategory": "epl",
"markets": [
{
"outcome_id": "1473",
"native_question_id": "198",
"title": "Arsenal",
"state": "ACTIVE",
"result": {
"availability": "AVAILABLE",
"result_state": "UNRESOLVED"
},
"metadata_revision": "14269",
"eligibility": {
"state": "ENABLED"
},
"combo": {
"state": "CLOSED",
"reason": "OUTSIDE_WINDOW",
"opens_at": "1811592000"
},
"deployer": {
"name": "Outcome",
"address": "0x0c46eb73fae2816f219fcf11f50d6d3c59b5819e"
},
"category": "Sports",
"subcategory": "epl",
"sides": [
{
"side": "YES",
"coin": "#14730",
"reference": {
"availability": "AVAILABLE",
"quality": "BOOK_MID",
"value": "603145000000000000",
"best_bid": "603140000000000000",
"best_ask": "603150000000000000",
"last_trade": "603140000000000000",
"last_trade_at": "2026-10-18T05:15:28.404Z",
"chance": "603145000000000000",
"chance_basis": "MID",
"mark": "603145000000000000",
"scale": "1000000000000000000",
"freshness": "FRESH",
"received_at": "2026-10-18T05:22:53.874256929Z"
}
},
{
"side": "NO",
"coin": "#14731",
"reference": {
"availability": "AVAILABLE",
"quality": "BOOK_MID",
"value": "396855000000000000",
"best_bid": "396850000000000000",
"best_ask": "396860000000000000",
"last_trade": "396860000000000000",
"last_trade_at": "2026-10-18T05:15:28.404Z",
"chance": "396855000000000000",
"chance_basis": "MID",
"mark": "396855000000000000",
"scale": "1000000000000000000",
"freshness": "FRESH",
"received_at": "2026-10-18T05:22:53.874256929Z"
}
}
],
"dates": {
"event": null,
"result_by": "1812196800",
"resolves_after": null,
"scheduled_event_at": null,
"observation_ends_at": null,
"market_class": "SPORTS_TOURNAMENT"
}
},
{
"outcome_id": "1474",
"native_question_id": "198",
"title": "Manchester City",
"state": "ACTIVE",
"result": {
"availability": "AVAILABLE",
"result_state": "UNRESOLVED"
},
"metadata_revision": "14269",
"eligibility": {
"state": "ENABLED"
},
"combo": {
"state": "CLOSED",
"reason": "OUTSIDE_WINDOW",
"opens_at": "1811592000"
},
"deployer": {
"name": "Outcome",
"address": "0x0c46eb73fae2816f219fcf11f50d6d3c59b5819e"
},
"category": "Sports",
"subcategory": "epl",
"sides": [
{
"side": "YES",
"coin": "#14740",
"reference": {
"availability": "AVAILABLE",
"quality": "BOOK_MID",
"value": "208925000000000000",
"best_bid": "208920000000000000",
"best_ask": "208930000000000000",
"last_trade": "208920000000000000",
"last_trade_at": "2026-10-18T05:21:59.572Z",
"chance": "208925000000000000",
"chance_basis": "MID",
"mark": "208925000000000000",
"scale": "1000000000000000000",
"freshness": "FRESH",
"received_at": "2026-10-18T05:22:54.269357435Z"
}
},
{
"side": "NO",
"coin": "#14741",
"reference": {
"availability": "AVAILABLE",
"quality": "BOOK_MID",
"value": "791075000000000000",
"best_bid": "791070000000000000",
"best_ask": "791080000000000000",
"last_trade": "791080000000000000",
"last_trade_at": "2026-10-18T05:21:59.572Z",
"chance": "791075000000000000",
"chance_basis": "MID",
"mark": "791075000000000000",
"scale": "1000000000000000000",
"freshness": "FRESH",
"received_at": "2026-10-18T05:22:54.269357435Z"
}
}
],
"dates": {
"event": null,
"result_by": "1812196800",
"resolves_after": null,
"scheduled_event_at": null,
"observation_ends_at": null,
"market_class": "SPORTS_TOURNAMENT"
}
}
]
},
{
"id": "market:2597",
"kind": "STANDALONE",
"native_question_id": null,
"title": "Anthropic IPO confirmed by Oct 31, 2026 23:59 UTC",
"state": "ACTIVE",
"category": "Finance",
"subcategory": "stocks",
"markets": [
{
"outcome_id": "2597",
"native_question_id": null,
"title": "Anthropic IPO confirmed by Oct 31, 2026 23:59 UTC",
"state": "ACTIVE",
"result": {
"availability": "AVAILABLE",
"result_state": "UNRESOLVED"
},
"metadata_revision": "14269",
"eligibility": {
"state": "ENABLED"
},
"combo": {
"state": "CLOSED",
"reason": "OUTSIDE_WINDOW",
"opens_at": "1792886340"
},
"deployer": {
"name": "trade[XYZ]",
"address": "0x7aca09667816a4817b8bc697fb239ad42ff9f553"
},
"category": "Finance",
"subcategory": "stocks",
"sides": [
{
"side": "YES",
"coin": "#25970",
"reference": {
"availability": "AVAILABLE",
"quality": "BOOK_MID",
"value": "75000000000000000",
"best_bid": "20000000000000000",
"best_ask": "130000000000000000",
"last_trade": "20000000000000000",
"last_trade_at": "2026-10-17T09:16:32.476Z",
"chance": "20000000000000000",
"chance_basis": "LAST_TRADE",
"mark": "20000000000000000",
"scale": "1000000000000000000",
"freshness": "FRESH",
"received_at": "2026-10-18T05:23:07.27382175Z"
}
},
{
"side": "NO",
"coin": "#25971",
"reference": {
"availability": "AVAILABLE",
"quality": "BOOK_MID",
"value": "925000000000000000",
"best_bid": "870000000000000000",
"best_ask": "980000000000000000",
"last_trade": "980000000000000000",
"last_trade_at": "2026-10-17T09:16:32.476Z",
"chance": "980000000000000000",
"chance_basis": "LAST_TRADE",
"mark": "980000000000000000",
"scale": "1000000000000000000",
"freshness": "FRESH",
"received_at": "2026-10-18T05:23:07.27382175Z"
}
}
],
"dates": {
"event": null,
"result_by": null,
"resolves_after": "1794095940",
"scheduled_event_at": null,
"observation_ends_at": "1793491140",
"market_class": "COMPANY_IPO"
}
}
]
}
],
"catalog_generation": "14269",
"next_cursor": null,
"has_more": false
}{
"error": {
"code": "INVALID_QUERY",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "STALE_CURSOR",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "REFRESH"
}
}{
"error": {
"code": "MARKET_DATA_UNAVAILABLE",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "BACKOFF"
}
}Query Parameters
Omit for the first page; then send the previous response's next_cursor unchanged. Opaque list cursor. Send a previous response's next_cursor back unchanged; never build or parse one.
1 - 2048Platform taxonomy category slug. The cursor is bound to this filter.
crypto, economics, entertainment, esports, finance, politics, sports, tech, weather Platform taxonomy subcategory slug. The cursor is bound to this filter.
nba, ncaa, nfl, nhl, mlb, ufc, lol, epl, ucl, uel, efl, la_liga, world_cup, bundesliga, liga_portugal, ligue_1, f1, ipl, cricket, transfers, btc, eth, sol, hype, up_down, stocks, indices, etfs, earnings, rates, inflation, commodities, fx, usa, global, other Maximum items per page, 1 to 200, default 50. A page may hold fewer, even none, while has_more is true. Maximum items in one page. A page may hold fewer, even none, while has_more is true.
1 <= x <= 200Response
One page of display groups. A QUESTION item carries the question's title and its outcomes in markets; a STANDALONE item carries one market that belongs to no question, never a made-up question. Native market state controls visibility: during a reference outage items stay readable with unavailable prices and trading disabled, and informational dates do not close markets. Filtering may return a short or empty page while has_more is true; only a null next_cursor ends the list. GET /v1/markets and GET /v1/markets/{outcome_id} keep the complete supported catalog.
Matching questions and standalone markets, best match first.
200- Option 1
- Option 2
Show child attributes
Show child attributes
Catalog generation every item was read from; pages from different generations must not be mixed.
19^[1-9][0-9]*$Pass as cursor with the same query to read the next page; null when there are no more pages.
1 - 2048True when another page follows.
Was this page helpful?

