curl --request GET \
--url https://api.0xarchive.io/v1/hyperliquid/hip4/questions/{question_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.0xarchive.io/v1/hyperliquid/hip4/questions/{question_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.0xarchive.io/v1/hyperliquid/hip4/questions/{question_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.0xarchive.io/v1/hyperliquid/hip4/questions/{question_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"success": true,
"data": {
"question_id": 0,
"name": "Recurring",
"description": "class:priceBucket|underlying:BTC|expiry:20260508-0600|priceThresholds:79303,82540|period:1d",
"fallback_outcome_id": 6,
"named_outcome_ids": [
7,
8,
9
],
"settled_named_outcomes": [],
"first_seen_at": "2026-05-08T05:57:28.326Z",
"last_updated_at": "2026-05-08T05:57:28.326Z"
},
"meta": {
"count": 123,
"next_cursor": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"coverage_from": "2023-11-07T05:31:56Z",
"notice": "<string>"
}
}{
"code": 400,
"error": "Failed to deserialize query string: limit: invalid digit found in string",
"error_code": "invalid_query_params",
"request_id": "3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05"
}{
"code": 401,
"error": "Missing or invalid API key. Provide X-API-Key header."
}{
"code": 429,
"error": "Rate limit exceeded"
}Get a single HIP-4 question
0xArchive API reference for Get a single HIP-4 question. Includes authentication, parameters, response shape, examples, and route-safe implementation notes.
curl --request GET \
--url https://api.0xarchive.io/v1/hyperliquid/hip4/questions/{question_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.0xarchive.io/v1/hyperliquid/hip4/questions/{question_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.0xarchive.io/v1/hyperliquid/hip4/questions/{question_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.0xarchive.io/v1/hyperliquid/hip4/questions/{question_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"success": true,
"data": {
"question_id": 0,
"name": "Recurring",
"description": "class:priceBucket|underlying:BTC|expiry:20260508-0600|priceThresholds:79303,82540|period:1d",
"fallback_outcome_id": 6,
"named_outcome_ids": [
7,
8,
9
],
"settled_named_outcomes": [],
"first_seen_at": "2026-05-08T05:57:28.326Z",
"last_updated_at": "2026-05-08T05:57:28.326Z"
},
"meta": {
"count": 123,
"next_cursor": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"coverage_from": "2023-11-07T05:31:56Z",
"notice": "<string>"
}
}{
"code": 400,
"error": "Failed to deserialize query string: limit: invalid digit found in string",
"error_code": "invalid_query_params",
"request_id": "3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05"
}{
"code": 401,
"error": "Missing or invalid API key. Provide X-API-Key header."
}{
"code": 429,
"error": "Rate limit exceeded"
}Authorizations
API key for authentication. Get yours at https://0xarchive.io/dashboard
Path Parameters
Numeric HIP-4 question ID.
0
Response
HIP-4 question
API response containing one HIP-4 question.
true
HIP-4 question: multi-choice resolver that groups N binary outcomes under one ballot. One named outcome per choice plus a fallback outcome that wins when no named choice resolves.
Hide child attributes
Hide child attributes
Question identifier.
0
Question name as published on-chain (recurring markets use a generic name such as Recurring).
"Recurring"
Pipe-delimited question metadata (class, underlying, expiry, price thresholds, period).
"class:priceBucket|underlying:BTC|expiry:20260508-0600|priceThresholds:79303,82540|period:1d"
Outcome ID that resolves Yes when no named outcome does.
6
Outcome IDs of the named choices grouped under this question.
[7, 8, 9]
Subset of named_outcome_ids that have already settled.
[]
When this question was first observed by the ingester (UTC).
"2026-05-08T05:57:28.326Z"
When this question row was last updated (UTC).
"2026-05-08T05:57:28.326Z"
Response metadata
Hide child attributes
Hide child attributes
Number of records returned
Cursor for pagination (timestamp). Use this value as the cursor parameter to fetch the next page of results.
Unique request ID for support
Earliest coverage for the requested symbol and data type. Present only when the requested window ends before coverage begins.
Human-readable advisory about the response. Currently used when the requested window ends before coverage begins for the symbol; may carry other advisories in future.
Was this page helpful?