GeminiGemini
Demo environmentGet API key
  • Overview
  • Crypto Trading
  • Prediction Markets
  • Perpetuals
  • Stocks
  • API Reference
  • SDKs & Tools
Changelog
Gemini logoGemini logo

© 2026 Gemini Space Station, Inc.

Get started
    IntroductionDemo environment
Platform
    Platform overview
    Authentication
      API keysOAuth 2.0
    AccountsRoles & permissionsInstruments & symbolsClient order IDsRate limitsErrors
Build with Gemini
    Build an agent
Resources
Information
Markets
    List prediction market eventsgetGet event by tickergetGet strike price for eventgetList newly listed eventsgetList recently settled eventsgetList upcoming eventsgetList event categoriesget
Volume
    Get daily prediction market trade volumegetGet hourly prediction market trade volumeget
Terms
    Get prediction market termsgetGet prediction market terms statusgetAccept prediction market termspost
Trading
    Place orderpostPlace a batch of orderspostCancel orderpostCancel a batch of orderspost
Positions
    Get active orderspostGet order historypostGet positionspostGet settled positionspostGet volume metricspost
Combos
    List combo contractsgetCreate or retrieve a canonical combopostGet combo by instrument symbolget
Rewards
    Get maker-rebate rate schedulegetList maker-rebate payoutsgetList maker-rebate payoutspostGet maker-rebate lifetime summarygetGet liquidity-rewards program configgetList liquidity-rewards eventsgetGet liquidity-rewards daily summarygetGet liquidity-rewards lifetime summarygetGet Taker Rewards payout summaryget
Schemas
Gemini Prediction Markets API
Gemini Prediction Markets API

Rewards

Server

Endpoints for the Maker Rebate, Liquidity Rewards, and Taker Rewards programs.

  • Maker Rebate — per-fill rebates earned by resting limit orders that get filled. Rates and rebate multipliers are configured per category. Public rate schedule plus authenticated payout and summary endpoints.
  • Liquidity Rewards — daily USD reward pools distributed across qualifying makers based on quote uptime, spread, and size. Public config + event listing, authenticated daily and lifetime summary endpoints.
  • Taker Rewards — authenticated participant summary with daily progress, monthly-bonus history, cumulative paid rewards, and cap runway.

Taker Rewards requires OrderStatus access. See the endpoint's 503 response for availability.

Note on field naming. Response fields under the Rewards endpoints use snake_case (e.g. event_ticker, daily_pool_usd). This differs from the camelCase convention used by the rest of the Prediction Markets REST endpoints.


Get maker-rebate rate schedule

GET
https://api.gemini.com
/v1/prediction-markets/maker-rebate/rates

Returns the current Maker Rebate rate rules. Public endpoint; no authentication required.

Each rule defines a rebate_multiplier_bps (basis points of the maker fee that is rebated) and an effective_from timestamp. An optional category scopes the rule to a single market category (omitted rules apply to all categories). An optional effective_to marks a rule as superseded.

Returns 503 with error: "Maker rebate program is not currently available" when the program is disabled.

Get maker-rebate rate schedule › query Parameters

category
​string

Filter to rules that apply to this category (e.g. Crypto, Sports). When omitted, returns all rules.

Get maker-rebate rate schedule › Responses

Successful response

MakerRebateRatesResponse
​MakerRebateRateRule[] · required
GET/v1/prediction-markets/maker-rebate/rates
curl --request GET \ --url https://api.gemini.com/v1/prediction-markets/maker-rebate/rates
shell
Example Responses
{ "rate_rules": [ { "id": 12, "rebate_multiplier_bps": 5000, "effective_from": "2026-03-19T00:00:00Z", "category": "Crypto" }, { "id": 13, "rebate_multiplier_bps": 2500, "effective_from": "2026-03-19T00:00:00Z", "category": "Sports", "effective_to": "2026-04-19T00:00:00Z" } ] }
json
application/json

List maker-rebate payouts

GET
https://api.gemini.com
/v1/prediction-markets/maker-rebate/payouts

Returns the authenticated account's Maker Rebate payout history. Most recent payout first.

Pagination is read from the limit and offset query parameters only. limit is clamped to [1, 100] (default 50). offset is clamped to [0, +∞) (default 0). A value that is not an integer falls back to the default, so pagination never returns 400.

The account comes from the API key. The endpoint ignores any account_id that you send.

You must sign the request with the X-GEMINI-PAYLOAD header and use a new nonce for each request. A reused nonce returns 409.

Requires authentication with OrderStatus permission. Returns 503 when the program is disabled. The response sends Cache-Control: no-store.

List maker-rebate payouts › query Parameters

limit
​integer · min: 1 · max: 100

Maximum number of payouts to return (default 50, clamped to [1, 100]). A value that is not an integer falls back to 50.

Default: 50
offset
​integer · min: 0

Number of payouts to skip (default 0, clamped to 0 or more). A value that is not an integer falls back to 0.

Default: 0

List maker-rebate payouts › Responses

Successful response

MakerRebatePayoutsResponse
​MakerRebatePayout[] · required
GET/v1/prediction-markets/maker-rebate/payouts
curl --request GET \ --url https://api.gemini.com/v1/prediction-markets/maker-rebate/payouts
shell
Example Responses
{ "payouts": [ { "id": 9182, "total_volume_usd": "12450.00", "total_rebate_usd": "6.23", "total_fill_count": 187, "status": "PAID", "paid_at": "2026-05-20T21:00:00Z", "created_at": "2026-05-20T20:55:12Z" }, { "id": 9173, "total_volume_usd": "8920.50", "total_rebate_usd": "4.46", "total_fill_count": 124, "status": "PAID", "paid_at": "2026-05-19T21:00:00Z", "created_at": "2026-05-19T20:55:08Z" } ] }
json
application/json

List maker-rebate payouts

POST
https://api.gemini.com
/v1/prediction-markets/maker-rebate/payouts

This method remains available for legacy compatibility. Use GET for new integrations.

Behaves the same as GET on this path. Returns the authenticated account's Maker Rebate payout history. Most recent payout first.

Pagination is read from the limit and offset query parameters, not from a request body. limit is clamped to [1, 100] (default 50). offset is clamped to [0, +∞) (default 0).

Requires authentication with OrderStatus permission. Returns 503 when the program is disabled.

List maker-rebate payouts › query Parameters

limit
​integer · min: 1 · max: 100

Maximum number of payouts to return (default 50, clamped to [1, 100]).

Default: 50
offset
​integer · min: 0

Number of payouts to skip (default 0).

Default: 0

List maker-rebate payouts › Responses

Successful response

MakerRebatePayoutsResponse
​MakerRebatePayout[] · required
POST/v1/prediction-markets/maker-rebate/payouts
curl --request POST \ --url https://api.gemini.com/v1/prediction-markets/maker-rebate/payouts
shell
Example Responses
{ "payouts": [ { "id": 9182, "total_volume_usd": "12450.00", "total_rebate_usd": "6.23", "total_fill_count": 187, "status": "PAID", "paid_at": "2026-05-20T21:00:00Z", "created_at": "2026-05-20T20:55:12Z" }, { "id": 9173, "total_volume_usd": "8920.50", "total_rebate_usd": "4.46", "total_fill_count": 124, "status": "PAID", "paid_at": "2026-05-19T21:00:00Z", "created_at": "2026-05-19T20:55:08Z" } ] }
json
application/json

Get maker-rebate lifetime summary

GET
https://api.gemini.com
/v1/prediction-markets/maker-rebate/summary/total

Returns lifetime totals for the authenticated account's Maker Rebate payouts. When both dateFrom and dateTo are provided, the totals are restricted to payouts paid within that inclusive Eastern Time window.

Either provide both date parameters or omit both. Dates must be in YYYY-MM-DD format, dateTo must be on or after dateFrom, and the range must not exceed 5 years.

Requires authentication with OrderStatus permission. Returns 503 when the program is disabled.

Get maker-rebate lifetime summary › query Parameters

dateFrom
​string · date

Inclusive start of the payout date window (YYYY-MM-DD, Eastern Time). Must be provided together with dateTo.

Example: 2026-04-01
dateTo
​string · date

Inclusive end of the payout date window (YYYY-MM-DD, Eastern Time). Must be on or after dateFrom and within 5 years of it.

Example: 2026-05-01

Get maker-rebate lifetime summary › Responses

Successful response

MakerRebateLifetimeSummary
total_earned_usd
​string · required

Sum of total_rebate_usd across payouts in the window.

Example: 152.40
total_fill_count
​integer · int64 · required

Sum of qualifying maker fills across payouts in the window.

Example: 4218
total_volume_usd
​string · required

Sum of qualifying maker volume (USD) across payouts in the window.

Example: 304800.00
payout_count
​integer · int32 · required

Number of payouts in the window. Always present; 0 when no payouts exist in the window.

Example: 27
first_payout_date
​string | null · date · required

Date of the earliest payout in the window, or null if no payouts exist.

Example: 2026-03-19
last_payout_date
​string | null · date · required

Date of the most recent payout in the window, or null if no payouts exist.

Example: 2026-05-20
GET/v1/prediction-markets/maker-rebate/summary/total
curl --request GET \ --url https://api.gemini.com/v1/prediction-markets/maker-rebate/summary/total
shell
Example Responses
{ "total_earned_usd": "152.40", "total_fill_count": 4218, "total_volume_usd": "304800.00", "payout_count": 27, "first_payout_date": "2026-03-19", "last_payout_date": "2026-05-20" }
json
application/json

Get liquidity-rewards program config

GET
https://api.gemini.com
/v1/prediction-markets/liquidity-rewards/config

Returns the Liquidity Rewards program configuration. Public endpoint; no authentication required.

When the program is fully configured the response includes max_spread_cents, min_payout_threshold_usd, and enabled: true. When the program is not yet fully configured, the response collapses to { "enabled": false } only.

Returns 503 when the program is not currently available.

Get liquidity-rewards program config › Responses

Successful response

LiquidityRewardsConfig
enabled
​boolean · required

True when the program is fully configured upstream. When false, the response collapses to { "enabled": false } only.

Example: true
max_spread_cents
​integer · int32

Quotes wider than this spread score zero in the scoring algorithm. Only present when enabled is true.

Example: 10
min_payout_threshold_usd
​string

Daily reward amounts below this threshold are suppressed (sub-threshold accounts get no row at all). Only present when enabled is true.

Example: 1.00
GET/v1/prediction-markets/liquidity-rewards/config
curl --request GET \ --url https://api.gemini.com/v1/prediction-markets/liquidity-rewards/config
shell
Example Responses
{ "max_spread_cents": 10, "min_payout_threshold_usd": "1.00", "enabled": true }
json
application/json

List liquidity-rewards events

GET
https://api.gemini.com
/v1/prediction-markets/liquidity-rewards/events

Returns the paginated list of events currently participating in the Liquidity Rewards program. Public endpoint; no authentication required.

category accepts a comma-separated list of category names (whitespace trimmed, empty entries dropped). sort controls ordering. limit is clamped to [1, 100] (default 50); offset is clamped to [0, +∞) (default 0). last_score_date is the most recent date for which scoring data has been written, or null when no scoring has run yet.

Returns 503 when the program is not currently available.

List liquidity-rewards events › query Parameters

category
​string

Comma-separated list of category names. Whitespace is trimmed and empty entries are dropped.

Example: Crypto,Sports
search
​string

Filter events by title substring (case-insensitive).

sort
​string · enum

Sort order for the returned events. Defaults to daily_pool_desc.

Enum values:
daily_pool_desc
daily_pool_asc
ends_soonest
ends_latest
title_asc
title_desc
category_asc
category_desc
Default: daily_pool_desc
limit
​integer · min: 1 · max: 100

Maximum number of events to return (default 50, clamped to [1, 100]).

Default: 50
offset
​integer · min: 0

Number of events to skip (default 0).

Default: 0

List liquidity-rewards events › Responses

Successful response

LiquidityRewardsEventsResponse
​LiquidityRewardEvent[] · required
​Pagination · required
last_score_date
​string | null · date · required

Most recent date for which scoring has been written. null when no scoring has run yet.

Example: 2026-05-19
GET/v1/prediction-markets/liquidity-rewards/events
curl --request GET \ --url https://api.gemini.com/v1/prediction-markets/liquidity-rewards/events
shell
Example Responses
{ "events": [ { "event_ticker": "BTC2605202100", "title": "BTC above $95,000?", "category": "Crypto", "daily_pool_usd": "500.00", "pool_source": "event_override", "ends_at": "2026-05-20T21:00:00Z", "qualifying_maker_count": 14, "icon_url": "https://example.com/btc.png" }, { "event_ticker": "FRENCHOPEN-FINAL", "title": "French Open 2026 — Men's Final winner", "category": "Sports", "daily_pool_usd": "250.00", "pool_source": "category_default", "ends_at": "2026-06-07T15:00:00Z", "qualifying_maker_count": 7 } ], "pagination": { "limit": 50, "offset": 0, "total": 2 }, "last_score_date": "2026-05-19" }
json
application/json

Get liquidity-rewards daily summary

GET
https://api.gemini.com
/v1/prediction-markets/liquidity-rewards/summary/daily

Returns daily Liquidity Rewards payouts for the authenticated account within the requested date window. Both dateFrom and dateTo are required and must be in YYYY-MM-DD format; dateTo must be on or after dateFrom.

Each daily entry includes the total USD reward for that day, the payout status (e.g. PENDING, PAID), the paid-at timestamp (if paid), and per-event score breakdowns showing how the day's reward was distributed across events the account scored on.

Requires authentication with OrderStatus permission. Returns 503 when the program is not currently available.

Get liquidity-rewards daily summary › query Parameters

dateFrom
​string · date · required

Inclusive start of the date window (YYYY-MM-DD, Eastern Time).

Example: 2026-05-01
dateTo
​string · date · required

Inclusive end of the date window (YYYY-MM-DD, Eastern Time). Must be on or after dateFrom.

Example: 2026-05-07

Get liquidity-rewards daily summary › Responses

Successful response

LiquidityRewardsDailySummaryResponse
​LiquidityDailySummary[] · required
GET/v1/prediction-markets/liquidity-rewards/summary/daily
curl --request GET \ --url 'https://api.gemini.com/v1/prediction-markets/liquidity-rewards/summary/daily?dateFrom=%3Cstring%3E&dateTo=%3Cstring%3E'
shell
Example Responses
{ "daily_summaries": [ { "payout_date": "2026-05-07", "total_reward_usd": "12.45", "payout_status": "PAID", "paid_at": "2026-05-08T21:00:00Z", "events": [ { "event_id": 1234567890, "event_name": "BTC above $95,000?", "category_name": "Crypto", "normalized_score": "0.4521", "snapshot_count": 1180, "total_snapshots": 1440, "event_reward_usd": "8.20" }, { "event_id": 9876543210, "event_name": "ETH above $4,000?", "category_name": "Crypto", "normalized_score": "0.2341", "snapshot_count": 920, "total_snapshots": 1440, "event_reward_usd": "4.25" } ] }, { "payout_date": "2026-05-06", "total_reward_usd": "0", "payout_status": "ZERO_AMOUNT", "paid_at": null, "events": [] } ] }
json
application/json

Get liquidity-rewards lifetime summary

GET
https://api.gemini.com
/v1/prediction-markets/liquidity-rewards/summary/total

Returns lifetime totals for the authenticated account's Liquidity Rewards payouts. When both dateFrom and dateTo are provided, the totals are restricted to payouts paid within that inclusive Eastern Time window.

Either provide both date parameters or omit both. Dates must be in YYYY-MM-DD format, dateTo must be on or after dateFrom, and the range must not exceed 5 years.

Requires authentication with OrderStatus permission. Returns 503 when the program is not currently available.

Get liquidity-rewards lifetime summary › query Parameters

dateFrom
​string · date

Inclusive start of the payout date window (YYYY-MM-DD, Eastern Time). Must be provided together with dateTo.

Example: 2026-04-01
dateTo
​string · date

Inclusive end of the payout date window (YYYY-MM-DD, Eastern Time). Must be on or after dateFrom and within 5 years of it.

Example: 2026-05-01

Get liquidity-rewards lifetime summary › Responses

Successful response

LiquidityRewardsLifetimeSummary
total_earned_usd
​string · required

Sum of total_reward_usd across daily payouts in the window.

Example: 84.20
payout_count
​integer · int32 · required

Number of daily payouts in the window. Always present; 0 when no payouts exist in the window.

Example: 12
first_payout_date
​string | null · date · required

Date of the earliest payout in the window, or null if no payouts exist.

Example: 2026-05-08
last_payout_date
​string | null · date · required

Date of the most recent payout in the window, or null if no payouts exist.

Example: 2026-05-20
GET/v1/prediction-markets/liquidity-rewards/summary/total
curl --request GET \ --url https://api.gemini.com/v1/prediction-markets/liquidity-rewards/summary/total
shell
Example Responses
{ "total_earned_usd": "84.20", "payout_count": 12, "first_payout_date": "2026-05-08", "last_payout_date": "2026-05-20" }
json
application/json

Get Taker Rewards payout summary

GET
https://api.gemini.com
/v1/prediction-markets/taker-rewards/payouts/summary

Returns the authenticated account's Taker Rewards progress and payout summary for the active program.

daily_rewards contains the participant's daily-reward summary and total eligible taker volume over the trailing 30-calendar-day window. Each monthly_bonus entry contains total eligible taker volume for that bonus period. cumulative_paid_usd reports paid rewards; runway_to_cap_usd is the participant cap less cumulative paid rewards, excluding pending amounts.

daily_rewards.progress is the latest completed scorer snapshot. It includes qualifying active days and the scoring date, or is null before a snapshot is available.

Requires the OrderStatus permission. Returns 503 when the program is unavailable.

Get Taker Rewards payout summary › Responses

Daily rewards, monthly bonus history, and participant payout summary

TakerRewardsPayoutsSummary
​object · required

Daily-reward progress for the authenticated participant.

​TakerRewardsMonthlyBonusPeriod[] · required

Monthly bonus periods, with the current period first when present, followed by historical periods.

cumulative_paid_usd
​string · required

Cumulative rewards paid to the authenticated participant in USD.

Example: 17123.45
runway_to_cap_usd
​string · required

Participant cap less cumulative paid rewards in USD; pending amounts are excluded.

Example: 232876.55
GET/v1/prediction-markets/taker-rewards/payouts/summary
curl --request GET \ --url https://api.gemini.com/v1/prediction-markets/taker-rewards/payouts/summary
shell
Example Responses
{ "daily_rewards": { "latest_rate_bps": 150, "trailing_30d_volume_usd": "12500000.00", "total_earned_usd": "123.45", "paid_reward_count": "12", "latest_reward_date": "2026-09-29", "progress": { "qualifying_active_days": 17, "scoring_date": "2026-10-07" } }, "monthly_bonus": [ { "period_start_date": "2026-08-01", "period_end_date": "2026-08-31", "period_volume_usd": "2400000.00", "bonus_usd": "15000.00", "status": "PAID" }, { "period_start_date": "2026-07-01", "period_end_date": "2026-07-31", "period_volume_usd": "800000.00", "bonus_usd": "2000.00", "status": "PAID" } ], "cumulative_paid_usd": "17123.45", "runway_to_cap_usd": "232876.55" }
json
application/json

Combos