Skip to content

Outcome Rewards API Schema

World Cup Outcome Rewards

Conventions

ItemValue
Campaignworld-cup-2026
TimesISO 8601 UTC
AmountsDecimal USDC strings
WalletsHypercore addresses
Base URLhttps://api.monarch.fast
Current epochOmit epoch_date
Explicit epochPass epoch_date=YYYY-MM-DD for historical or future epochs
epoch_statusupcoming, provisional, or final
snapshot.statuspreview, live, or final

Get Eligible Teams

Eligible teams for the World Cup winner rewards.

http
GET /marina/campaigns/world-cup-2026/eligible-teams
GET /marina/campaigns/world-cup-2026/eligible-teams?epoch_date=2026-06-08

Response

json
{
  "campaign_id": "world-cup-2026",
  "epoch_date": "2026-06-08",
  "epoch_status": "provisional",
  "epoch_start_time": "2026-06-08T09:00:00Z",
  "epoch_end_time": "2026-06-09T09:00:00Z",
  "snapshot": {
    "status": "live",
    "as_of": "2026-06-08T13:50:00Z",
    "finalized_at": null
  },
  "builder_code": "0xab5dbc057628bc18523c4cdfc0e1e2ebdbecb704",
  "eligible_teams": [
    {
      "team_name": "France",
      "hyperliquid_outcome_id": 189
    }
  ],
  "ineligible_teams": [
    {
      "team_name": "New Zealand",
      "hyperliquid_outcome_id": 190
    }
  ]
}

Field Notes

FieldDescription
epoch_dateCurrent scoring epoch, or requested historical or future epoch
epoch_statusupcoming, provisional, or final
epoch_start_timeStart time for the winner market scoring epoch
epoch_end_timeEnd time for the winner market scoring epoch
snapshot.statuspreview, live, or final
snapshot.as_ofTimestamp of the data returned
snapshot.finalized_atTimestamp when the epoch was locked, or null while live
builder_codeOrders and trades only count when they use this builder code
eligible_teamsDisplayed Champion teams whose eligibility mid is inside the 1% to 99% band
ineligible_teamsDisplayed Champion teams whose eligibility mid is outside the 1% to 99% band
hyperliquid_outcome_idOutcome id from Hyperliquid outcomeMeta

Get Daily Matches

Match markets eligible for daily match rewards.

http
GET /marina/campaigns/world-cup-2026/daily-matches
GET /marina/campaigns/world-cup-2026/daily-matches?epoch_date=2026-06-10

Response

json
{
  "campaign_id": "world-cup-2026",
  "epoch_date": "2026-06-10",
  "epoch_status": "provisional",
  "snapshot": {
    "status": "live",
    "as_of": "2026-06-10T13:55:00Z",
    "finalized_at": null
  },
  "builder_code": "0xab5dbc057628bc18523c4cdfc0e1e2ebdbecb704",
  "matches": [
    {
      "match_id": "mexico-vs-south-africa-2026-06-11",
      "hyperliquid_question_id": 837,
      "match_name": "Mexico vs South Africa",
      "scheduled_kickoff_time": "2026-06-11T19:00:00Z",
      "incentive_start_time": "2026-06-10T19:00:00Z",
      "incentive_end_rule": "final_whistle_or_penalties_resolved",
      "match_reward_amount_usdc": "100.00",
      "live_multiplier": "3",
      "publication_status": "unpublished",
      "scored_outcomes": [
        {
          "outcome_name": "Mexico",
          "hyperliquid_outcome_id": 10351
        },
        {
          "outcome_name": "Draw",
          "hyperliquid_outcome_id": 10352
        },
        {
          "outcome_name": "South Africa",
          "hyperliquid_outcome_id": 10353
        }
      ]
    }
  ]
}

Field Notes

This endpoint returns matches inside the epoch's incentive window. Group-stage markets return three scored YES books. Knockout markets return one scored book.

FieldDescription
matchesMatch markets eligible for daily match rewards in the epoch
match_idStable match id for this API
hyperliquid_question_idQuestion id from Hyperliquid outcomeMeta
match_nameHuman-readable match label
scheduled_kickoff_timeScheduled match kickoff time
incentive_start_timeTime when orders and trades can start scoring for the match
incentive_end_ruleRule for ending the match incentive window
match_reward_amount_usdcTotal reward amount assigned to the match
live_multiplierScore multiplier applied during the live match window, which starts at kickoff whistle
publication_statusunpublished when HL has the match but no uploaded schedule; published when an uploaded schedule is stored
scored_outcomesScored books that can score for this match. Group-stage markets include Team 1, Draw, and Team 2 YES books. Knockout markets include one book

Get Scores

Live or finalized scores by wallet and Hyperliquid outcome.

http
GET /marina/campaigns/world-cup-2026/scores
GET /marina/campaigns/world-cup-2026/scores?epoch_date=2026-06-08

Response

json
{
  "campaign_id": "world-cup-2026",
  "epoch_date": "2026-06-08",
  "epoch_status": "provisional",
  "epoch_start_time": "2026-06-08T09:00:00Z",
  "epoch_end_time": "2026-06-09T09:00:00Z",
  "snapshot": {
    "status": "live",
    "as_of": "2026-06-08T13:55:00Z",
    "finalized_at": null
  },
  "scores": [
    {
      "score_scope": "champion",
      "wallet": "0xabc...",
      "team_name": "France",
      "hyperliquid_outcome_id": 189,
      "team_scoring_weight": "0.16010",
      "quote_depth_score": "20081.38",
      "maker_fill_volume_usdc": "4800.50",
      "taker_fill_volume_usdc": "1220.00",
      "total_score": "21045.26",
      "daily_reward_usdc": null,
      "cumulative_reward_usdc": null
    },
    {
      "score_scope": "match",
      "wallet": "0xabc...",
      "match_id": "mexico-vs-south-africa-2026-06-11",
      "hyperliquid_question_id": 837,
      "match_name": "Mexico vs South Africa",
      "outcome_name": "Mexico",
      "hyperliquid_outcome_id": 10351,
      "quote_depth_score": "1200.00",
      "maker_fill_volume_usdc": "500.00",
      "taker_fill_volume_usdc": "80.00",
      "total_score": "1780.00",
      "daily_reward_usdc": null,
      "cumulative_reward_usdc": null
    }
  ]
}

Future / No-Run Response

json
{
  "campaign_id": "world-cup-2026",
  "epoch_date": "2026-06-20",
  "epoch_status": "upcoming",
  "epoch_start_time": "2026-06-20T09:00:00Z",
  "epoch_end_time": "2026-06-21T09:00:00Z",
  "snapshot": {
    "status": "preview",
    "as_of": null,
    "finalized_at": null
  },
  "scores": []
}

Field Notes

FieldDescription
epoch_statusupcoming, provisional, or final
snapshot.statuspreview, live, or final
scoresEmpty future scores are normal and mean the UI should show upcoming/no scores yet, not an error
epoch_start_timeStart time for the winner market scoring epoch
epoch_end_timeEnd time for the winner market scoring epoch
score_scopechampion for World Cup winner books, or match for daily match books
walletHypercore address being scored
team_nameTeam for this World Cup winner book; only present for champion scores
match_idStable match id; only present for match scores
hyperliquid_question_idQuestion id from Hyperliquid outcomeMeta; only present for match scores
match_nameHuman-readable match label; only present for match scores
outcome_nameScored YES outcome label; only present for match scores
hyperliquid_outcome_idOutcome id from Hyperliquid outcomeMeta
team_scoring_weightNormalized team scoring weight; only present for champion scores
quote_depth_scoreQuote depth score for the wallet and book
maker_fill_volume_usdcMaker fill volume observed for the wallet
taker_fill_volume_usdcTaker fill volume observed for the wallet
total_scoreTotal score for the wallet and asset
daily_reward_usdcFinal reward for the epoch, or null until finalized
cumulative_reward_usdcTotal earned through the epoch, or null until finalized

Aggregation Notes

For finalized epochs, daily_reward_usdc and cumulative_reward_usdc are row-level reward amounts and may be summed by wallet.

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