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; scores now resolve to the final published 2026-07-19 epoch, while the other reads keep their documented current-epoch rules
Explicit epochEligible teams use epoch_date as the reward date; scores and daily matches use it as the 09:00 UTC epoch start date
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-07T09:00:00Z",
  "epoch_end_time": "2026-06-08T09: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 09:00 UTC reward date, or requested historical or future reward date
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-20
GET /marina/campaigns/world-cup-2026/all-matches

daily-matches uses epoch_date as the 09:00 UTC epoch start date and returns epoch_end as the following end/reward date. Omitted and future start dates resolve to the latest started 09:00 UTC epoch. Latest-epoch reads return matches whose scheduled kickoff is not before that epoch start and whose incentive has already started; stored configured matches in that kickoff window also remain visible after their recorded campaign window has ended. Historical reads keep selecting by incentive start inside the epoch or scheduled kickoff inside the epoch. all-matches accepts no query parameters and returns the full known match schedule with the latest started start/end envelope.

Response

json
{
  "campaign_id": "world-cup-2026",
  "epoch_date": "2026-06-20",
  "epoch_end": "2026-06-21",
  "epoch_status": "provisional",
  "snapshot": {
    "status": "live",
    "as_of": "2026-06-20T13:55:00Z",
    "finalized_at": null
  },
  "builder_code": "0xab5dbc057628bc18523c4cdfc0e1e2ebdbecb704",
  "matches": [
    {
      "match_id": "mexico-vs-south-africa-2026-06-20",
      "hyperliquid_question_id": 837,
      "match_name": "Mexico vs South Africa",
      "scheduled_kickoff_time": "2026-06-20T19:00:00Z",
      "recorded_kickoff_time": null,
      "recorded_end_time": null,
      "incentive_start_time": "2026-06-20T07:00:00Z",
      "incentive_end_rule": "final_whistle_or_penalties_resolved",
      "match_reward_amount_usdc": "100.00",
      "live_multiplier": "5",
      "publication_status": "published",
      "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

daily-matches returns latest-epoch matches only after the incentive has started, while historical reads keep the incentive-start-or-kickoff selection rule. Group-stage markets return three scored YES books. Knockout markets return one scored book.

FieldDescription
epoch_date09:00 UTC epoch start date for daily-matches and the latest started start date for all-matches
epoch_endFollowing date when that 09:00 UTC epoch ends; this is the internal reward/end date
matchesOverlapping started incentives for the latest epoch, or the full resolved historical 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
recorded_kickoff_timeActual kickoff timestamp when recorded, otherwise null
recorded_end_timeActual final whistle or penalties-resolved timestamp when recorded, otherwise null
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 to five-minute scoring buckets that overlap the live match window
publication_statusscheduled for uploaded schedule-only fixtures, published for stored configured matches; unpublished is reserved by the schema
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.

For the completed World Cup 2026 campaign, omitting epoch_date returns the final published 2026-07-19 score epoch. An explicit epoch_date still selects that exact historical or future score epoch.

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.