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

# Polymarket Reference Prices

> Streams display-only crypto reference prices for recurring Polymarket crypto price markets.

```json Message: Snapshot theme={null}
{
  "channel": "polymarketReferencePrices",
  "data": {
    "coin": "BTC",
    "isSnapshot": true,
    "available": true,
    "source": "chainlink",
    "points": [
      { "timestamp": 1791956935000, "value": "104231.52" },
      { "timestamp": 1791956936000, "value": "104233.08" }
    ]
  }
}
```

```json Message: Live Update theme={null}
{
  "channel": "polymarketReferencePrices",
  "data": {
    "coin": "BTC",
    "isSnapshot": false,
    "available": true,
    "source": "chainlink",
    "points": [{ "timestamp": 1791956937000, "value": "104229.91" }]
  }
}
```

```json Message: Unavailable theme={null}
{
  "channel": "polymarketReferencePrices",
  "data": {
    "coin": "BTC",
    "isSnapshot": true,
    "available": false,
    "source": null,
    "points": []
  }
}
```

Polymarket

> [!WARNING]
>
> Reference prices are for display only. They are not the resolution or settlement value of any
> market and are never used for collateral valuation. Markets resolve according to their own
> resolution source and rules.

## Subscribe

```json theme={null}
{
  "method": "subscribe",
  "subscription": {
    "type": "polymarketReferencePrices",
    "coin": "BTC"
  }
}
```

`coin` is required and must be one of `BTC`, `ETH`, `SOL`, `XRP`, `DOGE`, `HYPE`, `BNB`, or `ZEC`
(case-insensitive). Do not send `user`. Any other coin, a missing coin, or a `user` field returns an
`error` message with `Invalid Polymarket reference price subscription`. Subscribe once per coin.

After the `subscriptionResponse` acknowledgment, the server immediately sends a snapshot for the
coin.

## Response

```json Message: Snapshot theme={null}
{
  "channel": "polymarketReferencePrices",
  "data": {
    "coin": "BTC",
    "isSnapshot": true,
    "available": true,
    "source": "chainlink",
    "points": [
      { "timestamp": 1791956935000, "value": "104231.52" },
      { "timestamp": 1791956936000, "value": "104233.08" }
    ]
  }
}
```

```json Message: Live Update theme={null}
{
  "channel": "polymarketReferencePrices",
  "data": {
    "coin": "BTC",
    "isSnapshot": false,
    "available": true,
    "source": "chainlink",
    "points": [{ "timestamp": 1791956937000, "value": "104229.91" }]
  }
}
```

```json Message: Unavailable theme={null}
{
  "channel": "polymarketReferencePrices",
  "data": {
    "coin": "BTC",
    "isSnapshot": true,
    "available": false,
    "source": null,
    "points": []
  }
}
```

## Response Fields

**channel** `string`

Always `polymarketReferencePrices`

**data** `object`

Reference prices for one coin.

**child attributes**

**coin** `string`

Uppercase coin symbol from the subscription

**isSnapshot** `boolean`

`true` when `points` holds the full retained history (about the last 15 minutes); `false` on
live updates that carry only new points

**available** `boolean`

`false` when the reference feed is disconnected or its latest point is more than 30 seconds
old

**source** `string | null`

Price provider, currently `"chainlink"`; `null` when `available` is `false`

**points\[]** `object`

Price points in ascending timestamp order. Empty when `available` is `false`.

**child attributes**

**timestamp** `number`

Unix-millisecond observation time

**value** `string`

USD price as a decimal string

## Snapshots and Updates

* The first message after subscribing is a snapshot (`isSnapshot: true`).
* Live updates (`isSnapshot: false`) can include delayed observations or corrections. Merge them
  into retained history by timestamp, replacing any point at the same timestamp. Use the point
  with the greatest timestamp as the current price.
* A later message with `isSnapshot: true` replaces the client's history for that coin. The server
  sends one when the reference feed reconnects or becomes unavailable.
* An unavailable message has `available: false`, `source: null`, and no points. Clear or mark the
  chart as unavailable and wait for the next snapshot with `available: true`.

## Unsubscribe

```json theme={null}
{
  "method": "unsubscribe",
  "subscription": {
    "type": "polymarketReferencePrices",
    "coin": "BTC"
  }
}
```


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