---
title: "Create betslip"
method: POST
path: "/v2/betslips/"
tags: ["Betslips"]
---

# Create betslip

`POST /v2/betslips/`

## Request

- Base URL: `https://magicmarkets.com` (the document declares no server; this is the origin it was published from)
- URL: `https://magicmarkets.com/v2/betslips/`
- Auth: API key in header `X-Api-Key`

Create a new betslip. For normal/lay bets supply `sport`, `event_id`, and `bet_type`. For parlays supply a `legs` array instead.

The response carries **no prices**: quotes are gathered asynchronously. Poll `GET /v2/betslips/{betslip_id}/` until `price_list` populates (typically a couple of seconds; watch `expiry_ts`), or read the quote off the stream.

## Request body

- BetslipCreateRequest
  - `sport` string: Sport code (required for normal/lay) - see "Sports & bet types" in the introduction.
  - `event_id` string: Event ID (required for normal/lay)
  - `bet_type` string: Bet type string (required for normal/lay) - see "Sports & bet types" in the introduction.
  - `live_score` LiveScore: In-running score at a point in time, `{home, away}`.
    - `home` integer, required: Home-team score
    - `away` integer, required: Away-team score
  - `legs` object[]: Parlay legs (required for parlay, 2-10 legs)
    - `sport` string, required
    - `event_id` string, required
    - `bet_type` string, required
    - `live_score` LiveScore: In-running score at a point in time, `{home, away}`.
      - `home` integer, required: Home-team score
      - `away` integer, required: Away-team score
  - `betslip_type` 'normal' | 'lay' | 'parlay'
  - `equivalent_bets` boolean
  - `user_data` string, nullable
  - `exclude_danger` boolean: When true, only liquidity sources that do not hold bets in danger status are used. When false or omitted, all available liquidity sources are used.

## Response `201`

Betslip created

- BetslipCreateEnvelope
  - `status` 'ok'
  - `data` BetslipCreateResponse: Create (POST) response; carries no prices. Poll GET or watch the stream for the quote.
    - `betslip_id` string
    - `sport` string: Sport code - see "Sports & bet types" in the introduction.
    - `event_id` string: Event identifier, e.g. 2026-06-15,1001,2002
    - `bet_type` string: Bet type string - see "Sports & bet types" in the introduction.
    - `bet_type_description` string: Human-readable label, e.g. Home, Over 1.5 (Asian)
    - `live_score` LiveScore: In-running score at a point in time, `{home, away}`.
      - `home` integer, required: Home-team score
      - `away` integer, required: Away-team score
    - `expiry_ts` number: Unix timestamp when the betslip expires
    - `is_open` boolean
    - `close_reason` string, nullable
    - `equivalent_bets` boolean: Whether equivalent bets are included
    - `customer_username` string
    - `customer_ccy` string: Customer's base currency code
    - `betslip_type` 'normal' | 'lay' | 'parlay'
    - `legs` ParlayLeg[]
      - `id` integer
      - `sport` string: Sport code - see "Sports & bet types" in the introduction.
      - `event_id` string
      - `bet_type` string: Bet type string - see "Sports & bet types" in the introduction.
      - `live_score` LiveScore: In-running score at a point in time, `{home, away}`.
        - `home` integer, required: Home-team score
        - `away` integer, required: Away-team score
      - `bet_type_description` string
      - `price` number, nullable
      - `outcome` 'w' | 'l' | 'v' | 'v/w' | 'l/v' | 'l/w' | 'unknown' | 'null', nullable: Leg settlement: `w` won, `l` lost, `v` void, `v/w` win-void, `l/v` void-loss, `l/w` loss-win (half outcomes), `unknown`, or null before settlement.
    - `user_data` string, nullable

## Other responses

- `400`: Validation failed
- `401`: Authentication failed - API key missing, malformed, or rejected.
- `403`: Per-customer open-betslip cap exceeded
- `429`: Rate limit hit. Honour the `Retry-After` header.
- `500`: Unexpected internal error. Quote `data[1]` (the token) when contacting support.

---

[API](https://skmtc.dev/magicmarkets/apis/magicmarkets-api.md) · [All operations](https://skmtc.dev/magicmarkets/apis/magicmarkets-api/llms.txt) · [OpenAPI document](https://skmtc.dev/magicmarkets/apis/magicmarkets-api/revisions/00c2a7dcce2a?raw)
