registeredOutcomes
Get recent registered prediction market outcomes.
Returns a list of recently registered prediction market outcomes that have not yet been settled, ordered by most recent first.
POST Request
type
string
Must be "registeredOutcomes"
limit
integer
Max results to return, default 50, max 50 (optional)
name
string
Filter by outcome name (optional)
class
string
Filter by outcome class, e.g. "priceBinary" (optional)
underlying
string
Filter by underlying asset, e.g. "HYPE" (optional)
period
string
Filter by period, e.g. "15m" (optional)
curl -X POST https://api.hydromancer.xyz/info \
-H "Authorization: Bearer $HYDROMANCER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "registeredOutcomes",
"limit": 10,
"underlying": "HYPE"
}'import requests
import os
response = requests.post(
'https://api.hydromancer.xyz/info',
json={
'type': 'registeredOutcomes',
'limit': 10,
'underlying': 'HYPE'
},
headers={
'Authorization': f'Bearer {os.environ.get("HYDROMANCER_API_KEY")}',
'Content-Type': 'application/json'
}
)
print(response.json())Response Fields
Returns an object with two arrays: outcomes (the registered outcome objects, sorted descending by outcomeId) and questions (the parent HIP-4 questions of any priceBucket children that appear in outcomes, sorted descending by questionId). Both arrays are always present, even when empty.
The limit and the filter parameters (name, class, underlying, period) apply to outcomes only. questions is derived from the resulting outcomes — a question is included if at least one of its children (named or fallback) is in the outcomes result. Practical implications: filtering by class: "priceBinary" yields priceBinary outcomes plus an empty questions array (standalone outcomes have no parent question); filtering by class: "priceBucket" yields priceBucket children plus their parent question(s).
Outcome object
outcomeId
integer
The outcome ID
name
string
Outcome name from the register event
description
string
Pipe-separated description (`class:...
sideSpecs
array
Side specifications, e.g. [{"name":"Yes"},{"name":"No"}]
class
string
"priceBinary" or "priceBucket"
underlying
string
Underlying asset, e.g. "HYPE"
expiry
string
Expiry timestamp, e.g. "20260508-1300"
targetPrice
string
Numeric strike for priceBinary; bucket-range string for priceBucket (see Target price formats below)
period
string
Period, e.g. "15m"
quoteToken
string
Quote token ID
yesAssetId
string
YES-side asset ID, format "#{outcomeId * 10}"
noAssetId
string
NO-side asset ID, format "#{outcomeId * 10 + 1}"
yesStats
object
Market stats for the YES side. Always present; zero-valued when no fills (see Stats object below)
noStats
object
Market stats for the NO side
Question object
Question entries appear when the response includes priceBucket children — each such child has a parent question grouping 3 named children plus one fallback child. Question fields:
questionId
integer
The question ID (assigned by chain)
name
string
Question name
description
string
Pipe-separated description; named children copy this as-is
class
string
Always "priceBucket"
underlying
string
Underlying asset
expiry
string
Expiry timestamp
period
string
Period
priceThresholds
string
Sorted comma-separated list of 2 cut-points
quoteToken
string
Quote token ID
fallbackOutcome
integer
outcomeId of the fallback child
fallbackName
string
Name of the fallback child
fallbackDescription
string
Description of the fallback child
namedOutcomes
array of integers
outcomeIds of the 3 named children, in named-index order
settledNamedOutcomes
array of integers
outcomeIds of named children already settled (empty for unsettled questions)
stats
object
Aggregate trading stats across the question's children. Always present; zero-valued when no fills. See Stats object below.
Stats object
All stats fields reflect orderbook trading. The object is always emitted — when there are no fills, every numeric field is zero and timestamps are 0.
coin
string
Asset ID for this side
trades
integer
Number of fills
uniqueTraders
integer
Distinct users that traded this side
volumeNotional
string
Sum of px * sz across fills
volumeContracts
string
Sum of sz across fills
lastPrice
string
Price of the most recent fill
vwap
number
Volume-weighted average price
minPrice
string
Minimum fill price
maxPrice
string
Maximum fill price
avgTradeNotional
number
Mean px * sz
medianTradeNotional
number
Median px * sz
largestTrade
string
Maximum px * sz of any fill
firstTrade
integer
Timestamp (ms) of earliest fill
lastTrade
integer
Timestamp (ms) of latest fill
Question stats object
Question stats are intentionally trimmed compared to outcome stats. Price-shaped metrics (lastPrice, vwap, minPrice, maxPrice, largestTrade, avgTradeNotional, medianTradeNotional) don't aggregate cleanly across the children's YES + NO assets, so they aren't reported. There's no coin field — questions don't own a single asset. Settlement and the four HIP-4 conversion ops (Split Outcome, Negate Outcome, Merge Outcome, Merge Question) are excluded from all metrics.
trades
integer
Number of orderbook matches across all child YES + NO assets. Counts each chain match exactly once (filters to dir = 'Buy'; every match emits one Buy + one Sell).
uniqueTraders
integer
Distinct users that traded any child asset (Buy or Sell).
volumeNotional
string
Sum of px * sz across dir = 'Buy' fills on any child.
volumeContracts
string
Sum of sz across dir = 'Buy' fills on any child.
firstTrade
integer
Timestamp (ms) of the earliest orderbook fill on any child.
lastTrade
integer
Timestamp (ms) of the latest orderbook fill on any child.
Target price formats
The targetPrice field on each outcome is a string whose format depends on the outcome's class.
priceBinary — a single numeric strike. The outcome resolves YES if the underlying's settle price meets the strike, NO otherwise.
priceBucket — outcomes belong to a parent question that defines priceThresholds (a sorted comma-separated list of 2 cut-points splitting the price line into 3 buckets). The question has 3 named children plus one fallback child. Each named child resolves YES if the settle price falls in its bucket; the fallback child resolves YES if all named children resolve NO. The format mirrors interval notation:
Child role
targetPrice value
Example (thresholds 80828, 81071)
First named child (index 0)
<t0
<80828
Middle named child (index 1)
[t0,t1)
[80828,81071)
Last named child (index 2)
>=t1
>=81071
Fallback child
raw threshold list
80828,81071
The fallback's literal comma-separated value signals "any price not covered by a named child" rather than a specific range. Use the parent question's priceThresholds field if you need to render the fallback's range yourself.
Response
The example covers a priceBucket child (outcomeId: 7609), the corresponding fallback child (7606), a standalone priceBinary outcome (7605), and a child of a different question (7470) — plus both parent questions. Question 275 shows non-zero stats (16 fills); question 303 shows the zero-state.
Last updated