cURL
curl --request POST \
--url https://narrative.agent.heisenberg.so/api/v2/semantic/retrieve/parameterized \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"agent_id": 568,
"params": {
"token_id": "85953619064670985626771564660881103494957821937504170459975285010511861618293",
"interval": "1h",
"start_time": "1769910300",
"end_time": "1770034843377"
},
"pagination": { "limit": 10, "offset": 0 },
"formatter_config": { "format_type": "raw" }
}'import requests
response = requests.post(
"https://narrative.agent.heisenberg.so/api/v2/semantic/retrieve/parameterized",
headers={"Authorization": "Bearer YOUR_TOKEN"},
json={
"agent_id": 568,
"params": {
"token_id": "85953619064670985626771564660881103494957821937504170459975285010511861618293",
"interval": "1h",
"start_time": "1769910300",
"end_time": "1770034843377",
},
"pagination": {"limit": 10, "offset": 0},
"formatter_config": {"format_type": "raw"},
},
)
print(response.json())const response = await fetch(
"https://narrative.agent.heisenberg.so/api/v2/semantic/retrieve/parameterized",
{
method: "POST",
headers: {
Authorization: "Bearer YOUR_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({
agent_id: 568,
params: {
token_id:
"85953619064670985626771564660881103494957821937504170459975285010511861618293",
interval: "1h",
start_time: "1769910300",
end_time: "1770034843377",
},
pagination: { limit: 10, offset: 0 },
formatter_config: { format_type: "raw" },
}),
}
);
const data = await response.json();{
"timestamp": "<string>",
"params": {
"token_id": "<string>",
"interval": "<string>",
"start_time": "<string>",
"end_time": "<string>"
},
"pagination": {
"limit": 123,
"offset": 123,
"has_more": true
},
"data": {
"results": [
{
"token_id": "<string>",
"timestamp": "<string>",
"open": "<string>",
"high": "<string>",
"low": "<string>",
"close": "<string>",
"volume": "<string>"
}
]
},
"request_id": "<string>"
}Polymarket
Candlesticks
Retrieve historical OHLCV candlestick data for a Polymarket token over a defined time interval.
POST
/
api
/
v2
/
semantic
/
retrieve
/
parameterized
cURL
curl --request POST \
--url https://narrative.agent.heisenberg.so/api/v2/semantic/retrieve/parameterized \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"agent_id": 568,
"params": {
"token_id": "85953619064670985626771564660881103494957821937504170459975285010511861618293",
"interval": "1h",
"start_time": "1769910300",
"end_time": "1770034843377"
},
"pagination": { "limit": 10, "offset": 0 },
"formatter_config": { "format_type": "raw" }
}'import requests
response = requests.post(
"https://narrative.agent.heisenberg.so/api/v2/semantic/retrieve/parameterized",
headers={"Authorization": "Bearer YOUR_TOKEN"},
json={
"agent_id": 568,
"params": {
"token_id": "85953619064670985626771564660881103494957821937504170459975285010511861618293",
"interval": "1h",
"start_time": "1769910300",
"end_time": "1770034843377",
},
"pagination": {"limit": 10, "offset": 0},
"formatter_config": {"format_type": "raw"},
},
)
print(response.json())const response = await fetch(
"https://narrative.agent.heisenberg.so/api/v2/semantic/retrieve/parameterized",
{
method: "POST",
headers: {
Authorization: "Bearer YOUR_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({
agent_id: 568,
params: {
token_id:
"85953619064670985626771564660881103494957821937504170459975285010511861618293",
interval: "1h",
start_time: "1769910300",
end_time: "1770034843377",
},
pagination: { limit: 10, offset: 0 },
formatter_config: { format_type: "raw" },
}),
}
);
const data = await response.json();{
"timestamp": "<string>",
"params": {
"token_id": "<string>",
"interval": "<string>",
"start_time": "<string>",
"end_time": "<string>"
},
"pagination": {
"limit": 123,
"offset": 123,
"has_more": true
},
"data": {
"results": [
{
"token_id": "<string>",
"timestamp": "<string>",
"open": "<string>",
"high": "<string>",
"low": "<string>",
"close": "<string>",
"volume": "<string>"
}
]
},
"request_id": "<string>"
}Platform: Polymarket
Endpoint:
Authentication: Bearer token
Endpoint:
POST /v2/semantic/retrieve/parameterizedAuthentication: Bearer token
Query parameters
All requests useagent_id 568 (Candlesticks). Set filters inside params in the playground — all values must be strings.
| Parameter | Type | Description |
|---|---|---|
token_id | String | Token ID of the market outcome. Get this from Polymarket Markets (side_a_token_id / side_b_token_id). |
interval | String | Candle interval: 1m, 5m, 15m, 1h, 4h, or 1d. |
start_time | String | Unix timestamp in seconds for the range start (for example, "1769910300"). |
end_time | String | Unix timestamp in seconds for the range end (for example, "1770034843377"). |
Example Request
curl --request POST \
--url https://narrative.agent.heisenberg.so/api/v2/semantic/retrieve/parameterized \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"agent_id": 568,
"params": {
"token_id": "85953619064670985626771564660881103494957821937504170459975285010511861618293",
"interval": "1h",
"start_time": "1769910300",
"end_time": "1770034843377"
},
"pagination": {
"limit": 10,
"offset": 0
},
"formatter_config": {
"format_type": "raw"
}
}'
import requests
response = requests.post(
"https://narrative.agent.heisenberg.so/api/v2/semantic/retrieve/parameterized",
headers={"Authorization": "Bearer YOUR_TOKEN"},
json={
"agent_id": 568,
"params": {
"token_id": "85953619064670985626771564660881103494957821937504170459975285010511861618293",
"interval": "1h",
"start_time": "1769910300",
"end_time": "1770034843377"
},
"pagination": {
"limit": 10,
"offset": 0
},
"formatter_config": {
"format_type": "raw"
}
}
)
print(response.json())
const response = await fetch("https://narrative.agent.heisenberg.so/api/v2/semantic/retrieve/parameterized", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
body: JSON.stringify({
"agent_id": 568,
"params": {
"token_id": "85953619064670985626771564660881103494957821937504170459975285010511861618293",
"interval": "1h",
"start_time": "1769910300",
"end_time": "1770034843377"
},
"pagination": {
"limit": 10,
"offset": 0
},
"formatter_config": {
"format_type": "raw"
}
})
});
const data = await response.json();
Example Response
{
"timestamp": "",
"params": {
"token_id": "85953619064670985626771564660881103494957821937504170459975285010511861618293",
"interval": "1h",
"start_time": "1769910300",
"end_time": "1770034843377"
},
"data": {
"results": [
{
"token_id": "85953619064670985626771564660881103494957821937504170459975285010511861618293",
"timestamp": "2026-04-10T18:00:00Z",
"open": "0.5600",
"high": "0.5850",
"low": "0.5520",
"close": "0.5800",
"volume": "42310.55"
},
{
"token_id": "85953619064670985626771564660881103494957821937504170459975285010511861618293",
"timestamp": "2026-04-10T17:00:00Z",
"open": "0.5450",
"high": "0.5620",
"low": "0.5400",
"close": "0.5600",
"volume": "31880.20"
}
]
}
}
Response fields
| Field | Type | Description |
|---|---|---|
token_id | String | Token ID |
timestamp | String (ISO 8601) | Candle start time |
open | String (Decimal) | Opening price |
high | String (Decimal) | Highest price |
low | String (Decimal) | Lowest price |
close | String (Decimal) | Closing price |
volume | String (Decimal) | Volume during candle (USD) |
Notes
Use shorter intervals (e.g.,
1m, 5m) intervals for intraday / pre-game analysisAlways match the interval with an appropriate
start_time and end_time range. Requesting more data than the max range for a given interval will produce empty or incomplete results.Use
offset in the pagination object when retrieving large datasets to iterate through results efficiently.Authorizations
Your Falcon API key from the dashboard
Body
application/json
Filter parameters. All values must be strings.
Hide child attributes
Hide child attributes
Token ID of the market outcome. Find this on the Polymarket Markets endpoint (side_a_token_id / side_b_token_id).
Candle interval (for example, "1h" for hourly candles).
Available options:
1m, 5m, 15m, 1h, 4h, 1d Unix timestamp in seconds for the range start, as a string (for example, "1769910300").
Unix timestamp in seconds for the range end, as a string (for example, "1770034843377").
Candlesticks agent ID.
Available options:
568 Response
Success
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Token ID
Candle start time (ISO 8601)
Opening price
Highest price
Lowest price
Closing price
Volume during candle (USD)