> ## Documentation Index
> Fetch the complete documentation index at: https://docs.totalis.trade/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Quote Request

> Create a new quote request for a multi-leg parlay.

Create a new live quote request. It's immediately broadcast to all connected market makers, who begin submitting competitive prices in real time.

A quote request requires 2-5 legs and a USDC bet amount. Each leg specifies a market ticker, a side (`yes` or `no`), and optionally a venue.

## Authentication

API key required. Pass your API key in the `X-API-Key` header. The key needs the `trading:write` scope.

```
X-API-Key: <your-api-key>
```

A Privy JWT (`Authorization: Bearer <jwt>`) is also accepted — see [Authentication](/guides/authentication).

## Request body

<ParamField body="legs" type="array" required>
  Array of 2-5 parlay legs.

  <Expandable title="Leg object">
    <ParamField body="market_ticker" type="string" required>
      The market ticker on the venue (e.g., `KXBTC-26JUN01-T72500`).
    </ParamField>

    <ParamField body="side" type="string" required>
      `"yes"` or `"no"`.
    </ParamField>

    <ParamField body="venue" type="string">
      `"kalshi"` (default) or `"polymarket"`.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="bet_amount" type="number" required>
  USDC bet amount. Must be between 1 and 100.
</ParamField>

## Response

<ResponseField name="data" type="object">
  <Expandable title="data">
    <ResponseField name="quote_request" type="object">
      The created quote request.

      <Expandable title="quote_request">
        <ResponseField name="id" type="string">UUID of the quote request.</ResponseField>
        <ResponseField name="user_id" type="string">Your user ID.</ResponseField>
        <ResponseField name="version" type="integer">Request version, starts at `1`.</ResponseField>
        <ResponseField name="request_hash" type="string">Hash of the current request parameters.</ResponseField>
        <ResponseField name="book_seq" type="integer">Quote book sequence number, starts at `0`.</ResponseField>
        <ResponseField name="status" type="string">`"active"`</ResponseField>
        <ResponseField name="bet_amount" type="number">The bet amount in USDC.</ResponseField>
        <ResponseField name="implied_probability" type="number">Combined implied probability of all legs.</ResponseField>
        <ResponseField name="expires_at" type="string">ISO 8601 expiration timestamp.</ResponseField>
        <ResponseField name="legs" type="array">Validated legs with enriched metadata.</ResponseField>
        <ResponseField name="input_legs" type="array">The legs exactly as you submitted them.</ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

## Errors

| Status | Code               | Description                                                                                            |
| ------ | ------------------ | ------------------------------------------------------------------------------------------------------ |
| 400    | `VALIDATION_ERROR` | Invalid legs, side, venue, or bet amount. See `details.issues` for specifics.                          |
| 400    | `VALIDATION_ERROR` | Market validation failed (market not found, expired, or exclusion conflict). See `details.leg_errors`. |
| 401    | `UNAUTHORIZED`     | Missing or invalid API key.                                                                            |

<RequestExample>
  ```bash theme={null}
  curl -X POST https://api.totalis.trade/v1/quote-requests \
    -H "X-API-Key: $TOTALIS_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "legs": [
        {"market_ticker": "KXBTC-26JUN01-T72500", "side": "yes", "venue": "kalshi"},
        {"market_ticker": "KXBTC-26JUN01-T73000", "side": "no", "venue": "kalshi"}
      ],
      "bet_amount": 25
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 201 theme={null}
  {
    "data": {
      "quote_request": {
        "id": "1a6d1f06-9d4f-47cb-994b-3bdfbbef7e40",
        "user_id": "did:privy:cm3abc...",
        "version": 1,
        "request_hash": "sha256:9f86d08...",
        "book_seq": 0,
        "status": "active",
        "bet_amount": 25,
        "implied_probability": 0,
        "expires_at": "2026-06-01T18:45:30.000Z",
        "legs": [
          {
            "id": "8ccf2c5d-3a61-4707-93f2-b6f0a0f0c0c6",
            "event_ticker": "KXBTC-26JUN01",
            "market_ticker": "KXBTC-26JUN01-T72500",
            "side": "yes",
            "venue": "kalshi"
          },
          {
            "id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
            "event_ticker": "KXBTC-26JUN01",
            "market_ticker": "KXBTC-26JUN01-T73000",
            "side": "no",
            "venue": "kalshi"
          }
        ],
        "input_legs": [
          {"market_ticker": "KXBTC-26JUN01-T72500", "side": "yes", "venue": "kalshi"},
          {"market_ticker": "KXBTC-26JUN01-T73000", "side": "no", "venue": "kalshi"}
        ]
      }
    }
  }
  ```
</ResponseExample>
