> ## 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.

# Get position

> Fetch one of your active market-maker positions by its RFQ id, with full parlay legs.

Resolve one RFQ id to your position and its full parlay legs. Pass an `rfq_id` you already hold, for example from [Get vault](/solana/api-reference/funds/get-vault). This is the by-id counterpart of [List positions](/solana/api-reference/mm/list-positions).

Scoped to you as the market maker. An id that belongs to another maker, does not exist, or has already settled returns `404`, so the endpoint never reveals another maker's book.

**Base URL:** `https://api.totalis.trade`

## Authentication

API key required. Pass your API key in the `X-API-Key` header.

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

## Path parameters

<ParamField path="id" type="string" required>
  The RFQ (parlay ticket) id: the `rfq_id` from [List positions](/solana/api-reference/mm/list-positions) or [Get vault](/solana/api-reference/funds/get-vault). Must be a UUID.
</ParamField>

## Response

<ResponseField name="data" type="object">
  <Expandable title="data">
    <ResponseField name="position" type="object">
      The position. Same shape as each entry in [List positions](/solana/api-reference/mm/list-positions).

      <Expandable title="position">
        <ResponseField name="position_pda" type="string">On-chain position PDA.</ResponseField>
        <ResponseField name="position_id" type="string">On-chain position id, hex encoded (32 lowercase chars, no `0x`). The early cashout join key: match it against the `position_id` on a broadcast [`cashout_request`](/solana/api-reference/quote-service-mm/stream#cashout_request) to see whether you back that position.</ResponseField>
        <ResponseField name="rfq_id" type="string">The RFQ (parlay ticket) id. Matches the `id` path parameter.</ResponseField>
        <ResponseField name="user_id" type="string">The counterparty bettor's Privy DID (`did:privy:...`).</ResponseField>
        <ResponseField name="market_maker_id" type="string">Your market maker Privy DID (`did:privy:...`).</ResponseField>
        <ResponseField name="user_stake" type="number">The bettor's net stake in USDC (`bet_amount - taker_fee`).</ResponseField>
        <ResponseField name="mm_risk" type="number">Your maximum risk (max loss) in USDC.</ResponseField>
        <ResponseField name="mm_collateral_locked" type="number | null">Collateral this position added to your lock when it opened, in USDC: the rise in your book's worst-case loss, from 0 up to `mm_risk`. `null` before it lands. See [Collateral and the ILP](/solana/guides/market-making#collateral-and-the-ilp).</ResponseField>
        <ResponseField name="total_payout" type="number">Total pot paid to the winner if the parlay resolves (`user_stake + mm_risk`).</ResponseField>
        <ResponseField name="status" type="string">`active`, or an in-flight release state listed on [List positions](/solana/api-reference/mm/list-positions).</ResponseField>
        <ResponseField name="created_at" type="string">ISO 8601 creation timestamp.</ResponseField>
        <ResponseField name="legs" type="array">The parlay legs, in leg order. Each leg has the fields documented in [List positions](/solana/api-reference/mm/list-positions).</ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

## Errors

| Status | Code | Description |
| - | - | - |
| 401 | `UNAUTHORIZED` | Missing or invalid API key. |
| 404 | `NOT_FOUND` | The id is malformed, or is not one of your active positions. |

<RequestExample>
  ```bash theme={null}
  curl "https://api.totalis.trade/v1/mm/positions/1a6d1f06-9d4f-47cb-994b-3bdfbbef7e40" \
    -H "X-API-Key: $API_KEY"
  ```

  ```python Python theme={null}
  import requests

  rfq_id = "1a6d1f06-9d4f-47cb-994b-3bdfbbef7e40"
  resp = requests.get(
      f"https://api.totalis.trade/v1/mm/positions/{rfq_id}",
      headers={"X-API-Key": API_KEY},
  )
  if resp.status_code == 404:
      print("Not one of your active positions")
  else:
      position = resp.json()["data"]["position"]
      for leg in position["legs"]:
          print(leg["market_title"], leg["side"])
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": {
      "position": {
        "position_pda": "7sKq9fGh2mNp4rTv6wXy8zAb1cDe3fGh5jKl7mNp9qRs",
        "position_id": "9f2c7a4e1b6d8305c4a9e7f21d8b306e",
        "rfq_id": "1a6d1f06-9d4f-47cb-994b-3bdfbbef7e40",
        "user_id": "did:privy:cmabc123def456ghi789jkl",
        "market_maker_id": "did:privy:cmxyz987uvw654rst321opq",
        "user_stake": 24.75,
        "mm_risk": 74.25,
        "mm_collateral_locked": 74.25,
        "total_payout": 99,
        "status": "active",
        "created_at": "2026-06-01T18:45:45.000Z",
        "legs": [
          {
            "market_title": "Lakers",
            "event_title": "NBA Finals Winner",
            "side": "yes",
            "outcome": "yes",
            "yes_sub_title": "Los Angeles Lakers",
            "no_sub_title": null,
            "selection_label": "Lakers",
            "bet_group": null,
            "venue": "kalshi",
            "event_ticker": "KXNBAFINALS-26",
            "market_ticker": "KXNBAFINALS-26-LAL",
            "exclusivity_group": "KXNBAFINALS-26",
            "exclusivity_group_kind": "partition",
            "venue_url": "https://kalshi.com/markets/kxnbafinals",
            "market_resolved": false,
            "market_result": null,
            "market_resolved_at": null
          }
        ]
      }
    }
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.