Skip to main content
POST
/
v1
/
markets
Create a Market
curl --request POST \
  --url https://api.predictamarkets.com/v1/markets \
  --header 'Content-Type: application/json' \
  --header 'X-Api-Key: <api-key>' \
  --data '
{
  "title": "Will Bitcoin hit $100k before July 2025?",
  "description": "Resolves YES if BTC closes above $100k on Binance before 1 July 2025.",
  "market_type": "DEFAULT",
  "currency": "KES",
  "expires_at": "2025-07-01T00:00:00Z",
  "category_id": 3
}
'
{
  "id": 12,
  "qid": "MKT-12",
  "slug": "will-bitcoin-hit-100k-before-july-2025",
  "title": "Will Bitcoin hit $100k before July 2025?",
  "description": "Resolves YES if BTC closes above $100,000 on Binance before 1 July 2025.",
  "logo_path": "https://cdn.predictamarkets.com/logos/btc.png",
  "currency": "KES",
  "expires_at": "2025-07-01T00:00:00Z",
  "status": "OPEN",
  "is_active": true,
  "allows_trading": true,
  "locked_at": null,
  "display_group": "ALL",
  "total_buy_in": "125000.00",
  "market_total_share": "125000.00",
  "created_at": "2024-12-01T10:00:00Z",
  "updated_at": "2025-05-01T08:00:00Z",
  "market_type": "DEFAULT",
  "ticker_symbol": "BTC",
  "tracking_identifier": null,
  "market_domain": "crypto",
  "market_category": {
    "id": 3,
    "name": "Crypto",
    "slug": "crypto",
    "description": "Cryptocurrency markets",
    "icon": "bitcoin"
  },
  "market_assets": [
    {
      "id": 34,
      "qid": "MAS-34",
      "prediction_key": "mkt-12-yes",
      "label": "YES",
      "side": "YES",
      "probability": 0.65
    },
    {
      "id": 35,
      "qid": "MAS-35",
      "prediction_key": "mkt-12-no",
      "label": "NO",
      "side": "NO",
      "probability": 0.35
    }
  ],
  "regeneration_interval_type": null,
  "regeneration_interval_value": null,
  "regeneration_timezone": null,
  "regeneration_schedule": null,
  "regeneration_template_format": null,
  "last_regenerated_at": null,
  "next_regeneration_at": null,
  "regenerated_title": null,
  "regeneration_count": null
}

Documentation Index

Fetch the complete documentation index at: https://docs.predictamarkets.com/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

X-Api-Key
string
header
default:your-api-key-here
required

Body

application/json

Request body for creating a new prediction market. The market starts in PENDING_APPROVAL status and must be approved by an operator before going live. The parameters field defines the market structure (conditions and type).

title
string
required

Market title

parameters
MarketParams · object
required

Market conditions and metadata

currency
string
required

Currency used for transactions in this market

market_type
enum<string>
required
Available options:
DEFAULT,
SERIES
account_id
integer
required

Account ID

market_processing_config
enum<string>
default:MARKET_ASSET_ORDER_PROCESSING

Configure how the market orders are going to be processed

Available options:
DEFAULT_ORDER_PROCESSING,
MARKET_ASSET_ORDER_PROCESSING
logo_path
string | null

URL of the market logo

description
string | null

Detailed description of the market

expires_at
string<date-time> | null

Expiration date of the market

market_category_id
integer | null

Market category ID

regeneration_interval_type
enum<string> | null

Regeneration interval

Available options:
HOUR,
DAY,
WEEK,
MONTH,
YEAR,
CUSTOM
regeneration_interval_value
integer | null

Inverval value

regeneration_timezone
string | null

IANA timezone name for custom schedules

regeneration_schedule
SimpleRegenerationSchedule · object

Custom regeneration schedule

ticker_symbol
string | null

Ticker symbol for the market

tracking_identifier
string | null

Tracking identifier (e.g. ticker symbol) for querying and analytics

regeneration_template_format
enum<string> | null

Regeneration template format

Available options:
DEFAULT,
ABOVE_AT_OR_BELOW_PERCENTAGE
dispute_window_length
string<duration> | null

Duration of the dispute window after resolution. When set, a resolved market transitions to OPEN_TO_DISPUTE for this duration before payout is triggered. Omit or set to null to skip the dispute window entirely.

display_group
enum<string> | null

Display group for the market (e.g. TRENDING, FEATURED, DISCOVER)

Available options:
TRENDING,
POPULAR,
DISCOVER,
NEW,
FEATURED,
RECENT,
TOP,
ALL
locked_at
string<date-time> | null

Date/time when trading will be locked

is_active
boolean | null

Whether the market is active

should_auto_determine_outcome
boolean | null

Whether to auto-determine the market outcome

should_auto_close
boolean | null

Whether to auto-close the market at expiry

should_auto_payout
boolean | null

Whether to auto-payout after settlement

auto_determination_api
enum<string> | null

API to use for automatic outcome determination

Available options:
INTERNAL_TICKER_DATABASE,
API_FOOTBALL,
API_CRYPTO,
API_STOCKS,
API_ETF,
API_CURRENCY,
API_INDEX,
API_COMMODITY,
API_BOND,
ORACLE
market_domain
enum<string> | null

Market domain (SPORTS, FINANCE, CRYPTO, GENERAL)

Available options:
SPORTS,
FINANCE,
CRYPTO,
GENERAL
manual_market_order
integer | null

Manual display order for this market

resolution_delay
string<duration> | null

How long to wait after market close before auto-resolution is attempted. NULL means resolve as soon as the market closes.

payout_tariff_id
integer | null

ID of the payout tariff to apply to this market

Response

Response Create New Market V1 Markets Post · object | null

Market created

Full market detail object. Includes all fields from MarketCreateSchema plus computed fields (id, qid, slug, status, prices, participants, winning keys, mini markets, market assets, and regeneration history for SERIES markets).

title
string
required

Market title

parameters
MarketParams · object
required

Market conditions and metadata

currency
string
required

Currency used for transactions in this market

market_type
enum<string>
required
Available options:
DEFAULT,
SERIES
id
integer
required

Unique identifier for the market

qid
string
required

Query identifier for the market

created_at
string<date-time>
required

Timestamp when the market was created

updated_at
string<date-time>
required

Timestamp when the market was last updated

market_processing_config
enum<string>
default:MARKET_ASSET_ORDER_PROCESSING

Configure how the market orders are going to be processed

Available options:
DEFAULT_ORDER_PROCESSING,
MARKET_ASSET_ORDER_PROCESSING
logo_path
string | null

URL of the market logo

description
string | null

Detailed description of the market

expires_at
string<date-time> | null

Expiration date of the market

market_category_id
integer | null

Market category ID

regeneration_interval_type
enum<string> | null

Regeneration interval

Available options:
HOUR,
DAY,
WEEK,
MONTH,
YEAR,
CUSTOM
regeneration_interval_value
integer | null

Inverval value

regeneration_timezone
string | null

IANA timezone name for custom schedules

regeneration_schedule
SimpleRegenerationSchedule · object

Custom regeneration schedule

ticker_symbol
string | null

Ticker symbol for the market

tracking_identifier
string | null

Tracking identifier (e.g. ticker symbol) for querying and analytics

regeneration_template_format
enum<string> | null

Regeneration template format

Available options:
DEFAULT,
ABOVE_AT_OR_BELOW_PERCENTAGE
dispute_window_length
string<duration> | null

Duration of the dispute window after resolution. When set, a resolved market transitions to OPEN_TO_DISPUTE for this duration before payout is triggered. Omit or set to null to skip the dispute window entirely.

display_group
enum<string>
default:ALL

Display group of the market

Available options:
TRENDING,
POPULAR,
DISCOVER,
NEW,
FEATURED,
RECENT,
TOP,
ALL
locked_at
string<date-time> | null

Time when the market gets locked

is_active
boolean
default:true

Whether the market is currently active

should_auto_determine_outcome
boolean | null

Whether to auto-determine the market outcome

should_auto_close
boolean | null

Whether to auto-close the market at expiry

should_auto_payout
boolean | null

Whether to auto-payout after settlement

auto_determination_api
enum<string> | null

API to use for automatic outcome determination

Available options:
INTERNAL_TICKER_DATABASE,
API_FOOTBALL,
API_CRYPTO,
API_STOCKS,
API_ETF,
API_CURRENCY,
API_INDEX,
API_COMMODITY,
API_BOND,
ORACLE
market_domain
enum<string> | null

Market domain (SPORTS, FINANCE, CRYPTO, GENERAL)

Available options:
SPORTS,
FINANCE,
CRYPTO,
GENERAL
manual_market_order
integer | null

Manual display order for this market

resolution_delay
string<duration> | null

How long to wait after market close before auto-resolution is attempted. NULL means resolve as soon as the market closes.

payout_tariff_id
integer | null

ID of the payout tariff to apply to this market

slug
string | null

Slug of the market

status
string | null

Current status of the market

allows_trading
boolean
default:true

Whether the market allows trading (based on status, active state, and expiration)

total_buy_in
string
default:0

Total amount of buy-in in the market

Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
total_participants
integer
default:0

Total number of participants in the market

market_total_share
string | null

Total share of the market

Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
participant_total_share
string | null

Total share of participants in the market

Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
winning_prediction_key
string | null

The prediction key of the winning option for this market. Matches market_asset.options[n].key for the winning option. Populated after the market is resolved.

winning_prediction_keys
string[] | null

The prediction keys of all winning options (multi-outcome markets). Each value matches a market_asset.options[n].key. Populated after the market is resolved.

mini_markets
MiniMarketResponseSchema · object[] | null

List of mini markets under this market

market_assets
MarketAssetSchema · object[] | null

List of market assets under this market

all_market_assets
MarketAssetSchema · object[] | null

All market assets including closed ones (used for settled markets)

last_regenerated_at
string<date-time> | null

Timestamp when the market was last regenerated

next_regeneration_at
string<date-time> | null

Timestamp when the market will be regenerated next

market_category
MarketCategorySchema · object

Category of the market

regeneration_history
SeriesMarketRegenerationHistory · object[] | null

List of market regeneration cycles

regenerated_title
string | null

Regenerated title only available for series markets

active_regeneration_history
SeriesMarketRegenerationHistory · object

Active market regeneration cycle

regeneration_count
integer | null

Total number of regeneration cycles

open_to_dispute_at
string<date-time> | null

Timestamp when the dispute window opened (OPEN_TO_DISPUTE state entry time)