Outcome Markets Rewards API Schema
Conventions
| Item | Value |
|---|---|
| Times | ISO 8601 UTC |
| Amounts | Fixed 6-decimal USDC strings |
| Base URL | https://api.monarch.fast |
| Route prefix | /marina/outcome-markets |
| IDs | market_id is Q<hyperliquid_question_id> for a grouped question or O<hyperliquid_outcome_id> for a tradable outcome; null before the market lists on Hyperliquid |
reward_period_type | market for the full market lifecycle or epoch for shorter incentive windows. Outcomes in one Q… market share one type |
| Epoch key | For epoch reward periods, epoch_end_date is required and uses UTC YYYY-MM-DD. A market has at most one epoch per end date |
| Reward authority | reward_amount_usdc is authoritative for each outcome. total_reward_amount_usdc is their sum for a grouped Q… market |
Identity Model
A market_id belongs to Outcome's public namespace and is shared with Outcome's markets API. Q<number> identifies a grouped question and equals Q + hyperliquid_question_id. O<number> identifies one tradable outcome and its Yes/No order book and equals O + hyperliquid_outcome_id.
A market has no market_id until it lists on Hyperliquid. Upcoming markets in all-incentives return market_id: null together with market_name, the schedule window, and reward amounts; expect the id to appear when the market goes live.
The raw numeric Hyperliquid IDs remain in hyperliquid_question_id and hyperliquid_outcome_id. A Q… market has a question id and a null outcome id. A child O… market has both ids. A standalone O… market has a null question id and an outcome id.
A grouped Q… market appears once with its child O… markets in outcomes. A standalone O… market appears directly without an outcomes wrapper.
For manifest-bound markets, market_name uses the manifest's human-readable display name when one is configured. Internal template:* matching keys are never public labels; when a market has one such child, that child uses the same display name, while multi-outcome markets keep their individual outcome labels.
Payouts use the parent Q… market whenever one exists. They use an O… market only when it is standalone. Scores use an O… market. Epoch reads also require epoch_end_date.
Get Payouts
Finalized payouts for one market reward period. The transition to finalized: true is the trigger to pay every listed wallet.
For a full-market reward period:
GET /marina/outcome-markets/payouts?market_id=Q945For an epoch reward period:
GET /marina/outcome-markets/payouts?market_id=Q950&epoch_end_date=2026-09-16Response States
| State | Response |
|---|---|
| Unknown reward period | 404 |
| Known, not finalized | 200 with finalized: false, null total_payout_usdc, and payouts: [] |
| Finalized | 200 with finalized: true and the finalized payload |
| Temporary server error | 5xx retry |
Response (finalized)
{
"market_id": "Q945",
"hyperliquid_question_id": 945,
"hyperliquid_outcome_id": null,
"market_name": "Brentford v Tottenham Hotspur",
"finalized": true,
"finalized_at": "2026-08-22T20:00:00Z",
"total_payout_usdc": "299.999998",
"payouts": [
{
"wallet": "0xabc...",
"reward_usdc": "191.267910"
},
{
"wallet": "0xdef...",
"reward_usdc": "108.732088"
}
]
}Response (finalized: false)
{
"market_id": "Q950",
"hyperliquid_question_id": 950,
"hyperliquid_outcome_id": null,
"market_name": "September 2026 Federal Reserve rate decision",
"epoch_end_date": "2026-09-16",
"finalized": false,
"finalized_at": null,
"total_payout_usdc": null,
"payouts": []
}Field Notes
| Field | Description |
|---|---|
market_id | Payout query key: the parent Q… market, or an O… market only when it has no parent question |
hyperliquid_question_id | Numeric Hyperliquid question id, or null for a standalone outcome |
hyperliquid_outcome_id | Numeric Hyperliquid outcome id, or null for a grouped question |
market_name | Human-readable market label |
epoch_end_date | Request key and response field for an epoch reward period |
finalized | false while pending and true when ready for payment. The transition to true is the payment trigger |
finalized_at | Time when the payout was finalized, or null while pending |
total_payout_usdc | Sum of all reward_usdc rows |
payouts | One non-zero reward row per wallet, combining rewards across all child outcomes of a grouped Q… market |
wallet | Hypercore address to pay, as published |
reward_usdc | Final reward for the wallet and market reward period |
Get Current Incentives
Markets and outcomes being scored at as_of.
GET /marina/outcome-markets/current-incentivesResponse
{
"as_of": "2026-08-22T14:00:00Z",
"markets": [
{
"market_id": "Q945",
"hyperliquid_question_id": 945,
"hyperliquid_outcome_id": null,
"market_name": "Brentford v Tottenham Hotspur",
"incentive_status": "incentivized",
"scoring_params": {
"distance_cutoff_cents": "1",
"midpoint_min": "0.02",
"midpoint_max": "0.98"
},
"total_reward_amount_usdc": "300.000000",
"reward_period_type": "market",
"incentive_start_time": "2026-08-22T13:30:00Z",
"incentive_end_time": "2026-08-22T19:30:00Z",
"outcomes": [
{
"market_id": "O11463",
"hyperliquid_question_id": 945,
"hyperliquid_outcome_id": 11463,
"market_name": "Brentford",
"reward_amount_usdc": "100.000000",
"live_event_multiplier": "5",
"current_multiplier": "5"
},
{
"market_id": "O11464",
"hyperliquid_question_id": 945,
"hyperliquid_outcome_id": 11464,
"market_name": "Draw",
"reward_amount_usdc": "100.000000",
"live_event_multiplier": "5",
"current_multiplier": "5"
},
{
"market_id": "O11465",
"hyperliquid_question_id": 945,
"hyperliquid_outcome_id": 11465,
"market_name": "Tottenham Hotspur",
"reward_amount_usdc": "100.000000",
"live_event_multiplier": "5",
"current_multiplier": "5"
}
]
}
]
}Each grouped Q… item contains only the outcomes being scored and holds their shared reward period, window, and status. A standalone O… item appears directly in markets with those fields on itself. For market periods, incentive_start_time <= as_of, the market is not settled (incentive_status is incentivized), and incentive_end_time is either null or later than as_of. For epoch periods, epochs contains only the active epoch.
Field Notes
| Field | Description |
|---|---|
market_id | Q<number> for a grouped question or O<number> for a tradable outcome |
hyperliquid_question_id | Numeric Hyperliquid question id, or null for a standalone outcome |
hyperliquid_outcome_id | Numeric Hyperliquid outcome id, or null for a grouped question |
market_name | Human-readable market label |
scoring_params | Quote-scoring parameters pinned to the selected market run: distance_cutoff_cents is the maximum quote distance from midpoint, in cents; midpoint_min and midpoint_max bound the midpoint range that scores |
reward_period_type | Reward-period type: market for the full market lifecycle or epoch for a shorter incentive window |
epochs | Active reward period for a top-level epoch market |
epoch_end_date | Reward-period key inside epochs |
total_reward_amount_usdc | Sum of the listed outcome reward_amount_usdc values for a grouped Q… market |
reward_amount_usdc | Authoritative reward for an O… market and reward period |
live_event_multiplier | Live-event multiplier before and during the event, or null when none is configured |
current_multiplier | Current schedule-based multiplier at as_of, including the pre-event curve or live-event multiplier but excludes volatility; null outside the active incentive |
incentive_start_time | Time when the incentive begins |
incentive_end_time | Time when the incentive ends, or null until resolution determines it |
incentive_status | incentivized for every top-level market in this response |
Get All Incentives
Catalog of market incentives and their reward-period schedules.
GET /marina/outcome-markets/all-incentives?include_ended=true&limit=100&cursor=<opaque>Ended incentives are included when include_ended is omitted. Send include_ended=false to return only scheduled and active incentives. limit is optional, defaults to 100, and accepts 1 through 500. When more rows exist, pass the returned next_cursor unchanged to retrieve the next page.
Response
{
"as_of": "2026-08-22T14:00:00Z",
"next_cursor": null,
"markets": [
{
"market_id": "Q945",
"hyperliquid_question_id": 945,
"hyperliquid_outcome_id": null,
"market_name": "Brentford v Tottenham Hotspur",
"incentive_status": "incentivized",
"category": null,
"scoring_params": {
"distance_cutoff_cents": "1",
"midpoint_min": "0.02",
"midpoint_max": "0.98"
},
"total_reward_amount_usdc": "300.000000",
"reward_period_type": "market",
"incentive_start_time": "2026-08-22T13:30:00Z",
"incentive_end_time": "2026-08-22T19:30:00Z",
"outcomes": [
{
"market_id": "O11463",
"hyperliquid_question_id": 945,
"hyperliquid_outcome_id": 11463,
"market_name": "Brentford",
"reward_amount_usdc": "100.000000",
"live_event_multiplier": "5",
"current_multiplier": "5"
},
{
"market_id": "O11464",
"hyperliquid_question_id": 945,
"hyperliquid_outcome_id": 11464,
"market_name": "Draw",
"reward_amount_usdc": "100.000000",
"live_event_multiplier": "5",
"current_multiplier": "5"
},
{
"market_id": "O11465",
"hyperliquid_question_id": 945,
"hyperliquid_outcome_id": 11465,
"market_name": "Tottenham Hotspur",
"reward_amount_usdc": "100.000000",
"live_event_multiplier": "5",
"current_multiplier": "5"
}
]
},
{
"market_id": null,
"hyperliquid_question_id": null,
"hyperliquid_outcome_id": null,
"market_name": "Arsenal v Chelsea",
"incentive_status": "scheduled",
"category": null,
"scoring_params": null,
"total_reward_amount_usdc": "300.000000",
"reward_period_type": "market",
"incentive_start_time": "2026-08-25T13:30:00Z",
"incentive_end_time": "2026-08-25T20:00:00Z",
"outcomes": [
{
"market_id": null,
"hyperliquid_question_id": null,
"hyperliquid_outcome_id": null,
"market_name": "Arsenal",
"reward_amount_usdc": "100.000000",
"live_event_multiplier": "3",
"current_multiplier": null
},
{
"market_id": null,
"hyperliquid_question_id": null,
"hyperliquid_outcome_id": null,
"market_name": "Draw",
"reward_amount_usdc": "100.000000",
"live_event_multiplier": "3",
"current_multiplier": null
},
{
"market_id": null,
"hyperliquid_question_id": null,
"hyperliquid_outcome_id": null,
"market_name": "Chelsea",
"reward_amount_usdc": "100.000000",
"live_event_multiplier": "3",
"current_multiplier": null
}
]
}
]
}Only operator-approved Scheduled markets appear as upcoming. Internal Draft markets are absent whether unbound or already bound to a future campaign; an actually active incentive remains visible. An upcoming market that has not listed on Hyperliquid yet appears with market_id: null on the market and each outcome; the ids appear when the market lists.
Field Notes
| Field | Description |
|---|---|
market_id | Q<number> for a grouped question or O<number> for a tradable outcome; null until the market lists on Hyperliquid |
hyperliquid_question_id | Numeric Hyperliquid question id, or null for a standalone outcome or an unlisted market |
hyperliquid_outcome_id | Numeric Hyperliquid outcome id, or null for a grouped question or an unlisted market |
market_name | Human-readable market label |
incentive_status | Top-level status: scheduled before launch, incentivized while active, or ended after completion |
category | Optional topic label for the market, or null when none is available |
scoring_params | Market-pinned parameters: distance_cutoff_cents is the maximum quote distance from midpoint, in cents; midpoint_min and midpoint_max bound the midpoint range that scores; null only for a pre-listing row without a pinned market config |
total_reward_amount_usdc | Total planned reward for a grouped full-market period |
outcomes | Reward-configured O… markets under a grouped Q… market, each with its own Yes/No book |
reward_amount_usdc | Planned reward for one listed outcome |
live_event_multiplier | Multiplier configured for the live event, or null when none is configured |
current_multiplier | Current schedule-based multiplier at as_of; excludes volatility; null outside the active incentive |
reward_period_type | Top-level reward-period type: market for one full-lifecycle period or epoch for shorter periods |
incentive_start_time | Start of a full-market reward period |
incentive_end_time | End of a full-market reward period, or null until resolution determines it |
epochs | Reward periods for a top-level epoch market, keyed by UTC epoch_end_date |
next_cursor | Opaque continuation cursor, or null when the current page is complete |
Get Scores
Wallet scores for one market reward period. Full-market periods use market_id; epoch periods also use epoch_end_date. The endpoint returns score snapshots after scoring begins. Final reward amounts are on the payouts API.
For a full-market reward period:
GET /marina/outcome-markets/scores?market_id=O11463For an epoch reward period:
GET /marina/outcome-markets/scores?market_id=O11548&epoch_end_date=2026-09-16Full-Market Response
{
"market_id": "O11463",
"hyperliquid_question_id": 945,
"hyperliquid_outcome_id": 11463,
"market_name": "Brentford",
"scoring_params": {
"distance_cutoff_cents": "1",
"midpoint_min": "0.02",
"midpoint_max": "0.98"
},
"snapshot": {
"status": "provisional",
"as_of": "2026-08-22T14:00:00Z",
"finalized_at": null
},
"scores": [
{
"wallet": "0xabc...",
"quote_depth_score": "20081.38",
"maker_fill_volume_usdc": "4800.500000",
"taker_fill_volume_usdc": "1220.000000"
}
]
}Epoch Response
{
"market_id": "O11548",
"hyperliquid_question_id": 950,
"hyperliquid_outcome_id": 11548,
"market_name": "No change",
"scoring_params": {
"distance_cutoff_cents": "1",
"midpoint_min": "0.02",
"midpoint_max": "0.98"
},
"epoch_start_date": "2026-09-15",
"epoch_end_date": "2026-09-16",
"snapshot": {
"status": "provisional",
"as_of": "2026-09-15T12:45:00Z",
"finalized_at": null
},
"scores": [
{
"wallet": "0xabc...",
"quote_depth_score": "20081.38",
"maker_fill_volume_usdc": "4800.500000",
"taker_fill_volume_usdc": "1220.000000"
}
]
}Field Notes
| Field | Description |
|---|---|
market_id | Score query key for a tradable O… market |
hyperliquid_question_id | Numeric parent question id, or null for a standalone outcome |
hyperliquid_outcome_id | Numeric Hyperliquid outcome id |
market_name | Human-readable market label |
scoring_params | Quote-scoring parameters pinned to the score snapshot: distance_cutoff_cents is the maximum quote distance from midpoint, in cents; midpoint_min and midpoint_max bound the midpoint range that scores |
epoch_start_date | Start date returned for an epoch reward period |
epoch_end_date | Request key and end date returned for an epoch reward period |
snapshot.status | provisional or final |
scores | Wallet scores for the market reward period |
wallet | Hypercore address being scored |
quote_depth_score | Quote depth score for the wallet and market |
maker_fill_volume_usdc | Maker fill volume for the wallet |
taker_fill_volume_usdc | Taker fill volume for the wallet |
