Skip to content

Outcome Markets Rewards API Schema

Conventions

ItemValue
TimesISO 8601 UTC
AmountsFixed 6-decimal USDC strings
Base URLhttps://api.monarch.fast
Route prefix/marina/outcome-markets
IDsmarket_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_typemarket for the full market lifecycle or epoch for shorter incentive windows. Outcomes in one Q… market share one type
Epoch keyFor 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 authorityreward_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:

http
GET /marina/outcome-markets/payouts?market_id=Q945

For an epoch reward period:

http
GET /marina/outcome-markets/payouts?market_id=Q950&epoch_end_date=2026-09-16

Response States

StateResponse
Unknown reward period404
Known, not finalized200 with finalized: false, null total_payout_usdc, and payouts: []
Finalized200 with finalized: true and the finalized payload
Temporary server error5xx retry

Response (finalized)

json
{
  "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)

json
{
  "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

FieldDescription
market_idPayout query key: the parent Q… market, or an O… market only when it has no parent question
hyperliquid_question_idNumeric Hyperliquid question id, or null for a standalone outcome
hyperliquid_outcome_idNumeric Hyperliquid outcome id, or null for a grouped question
market_nameHuman-readable market label
epoch_end_dateRequest key and response field for an epoch reward period
finalizedfalse while pending and true when ready for payment. The transition to true is the payment trigger
finalized_atTime when the payout was finalized, or null while pending
total_payout_usdcSum of all reward_usdc rows
payoutsOne non-zero reward row per wallet, combining rewards across all child outcomes of a grouped Q… market
walletHypercore address to pay, as published
reward_usdcFinal reward for the wallet and market reward period

Get Current Incentives

Markets and outcomes being scored at as_of.

http
GET /marina/outcome-markets/current-incentives

Response

json
{
  "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

FieldDescription
market_idQ<number> for a grouped question or O<number> for a tradable outcome
hyperliquid_question_idNumeric Hyperliquid question id, or null for a standalone outcome
hyperliquid_outcome_idNumeric Hyperliquid outcome id, or null for a grouped question
market_nameHuman-readable market label
scoring_paramsQuote-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_typeReward-period type: market for the full market lifecycle or epoch for a shorter incentive window
epochsActive reward period for a top-level epoch market
epoch_end_dateReward-period key inside epochs
total_reward_amount_usdcSum of the listed outcome reward_amount_usdc values for a grouped Q… market
reward_amount_usdcAuthoritative reward for an O… market and reward period
live_event_multiplierLive-event multiplier before and during the event, or null when none is configured
current_multiplierCurrent 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_timeTime when the incentive begins
incentive_end_timeTime when the incentive ends, or null until resolution determines it
incentive_statusincentivized for every top-level market in this response

Get All Incentives

Catalog of market incentives and their reward-period schedules.

http
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

json
{
  "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

FieldDescription
market_idQ<number> for a grouped question or O<number> for a tradable outcome; null until the market lists on Hyperliquid
hyperliquid_question_idNumeric Hyperliquid question id, or null for a standalone outcome or an unlisted market
hyperliquid_outcome_idNumeric Hyperliquid outcome id, or null for a grouped question or an unlisted market
market_nameHuman-readable market label
incentive_statusTop-level status: scheduled before launch, incentivized while active, or ended after completion
categoryOptional topic label for the market, or null when none is available
scoring_paramsMarket-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_usdcTotal planned reward for a grouped full-market period
outcomesReward-configured O… markets under a grouped Q… market, each with its own Yes/No book
reward_amount_usdcPlanned reward for one listed outcome
live_event_multiplierMultiplier configured for the live event, or null when none is configured
current_multiplierCurrent schedule-based multiplier at as_of; excludes volatility; null outside the active incentive
reward_period_typeTop-level reward-period type: market for one full-lifecycle period or epoch for shorter periods
incentive_start_timeStart of a full-market reward period
incentive_end_timeEnd of a full-market reward period, or null until resolution determines it
epochsReward periods for a top-level epoch market, keyed by UTC epoch_end_date
next_cursorOpaque 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:

http
GET /marina/outcome-markets/scores?market_id=O11463

For an epoch reward period:

http
GET /marina/outcome-markets/scores?market_id=O11548&epoch_end_date=2026-09-16

Full-Market Response

json
{
  "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

json
{
  "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

FieldDescription
market_idScore query key for a tradable O… market
hyperliquid_question_idNumeric parent question id, or null for a standalone outcome
hyperliquid_outcome_idNumeric Hyperliquid outcome id
market_nameHuman-readable market label
scoring_paramsQuote-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_dateStart date returned for an epoch reward period
epoch_end_dateRequest key and end date returned for an epoch reward period
snapshot.statusprovisional or final
scoresWallet scores for the market reward period
walletHypercore address being scored
quote_depth_scoreQuote depth score for the wallet and market
maker_fill_volume_usdcMaker fill volume for the wallet
taker_fill_volume_usdcTaker fill volume for the wallet

Monarch docs live in the monorepo and deploy separately from the app.