Skip to main content
Room IDs: polymarket_position_liquidity, polymarket_market_liquidity, polymarket_event_liquidity
Endpoint: wss://api.struct.to/ws
Rate: 0.001 credits per message
Stream real-time USD order-book liquidity at three granularities. Each room pushes an update whenever the relevant liquidity changes.
Room IDGranularityFilter (optional)
polymarket_position_liquidityPer outcome token (position)position_ids
polymarket_market_liquidityPer market (condition), summed across its outcome tokenscondition_ids
polymarket_event_liquidityPer event, summed across its marketsevent_slugs
All three rooms share the same subscribe flow, acknowledgement shape, and event fields. Liquidity is reported in USD as liquidity_usd, and liquidity_updated_at is a Unix-millisecond timestamp.

Subscribe

Filters are optional. Omit the identifier array (or send an empty one) to receive every update for that granularity (a firehose). When provided, each room accepts up to 500 identifiers. Update a subscription at any time by sending another subscribe message, and stop it with action: "unsubscribe_all".

Filters

RoomFilterTypeDescription
polymarket_position_liquidityposition_idsstring[]ERC-1155 outcome token IDs (decimal or hex). Empty or omitted means all positions.
polymarket_market_liquiditycondition_idsstring[]64-char hex market IDs. Empty or omitted means all markets.
polymarket_event_liquidityevent_slugsstring[]Event slugs. Empty or omitted means all events.

Example

{
  "type": "join_room",
  "payload": {
    "room_id": "polymarket_market_liquidity"
  }
}
{
  "type": "room_message",
  "payload": {
    "room_id": "polymarket_market_liquidity",
    "message": {
      "action": "subscribe",
      "condition_ids": ["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"]
    }
  }
}

Response

All three rooms acknowledge with the same liquidity_stream_subscribe_response envelope. data.ids echoes the accepted filter values (empty for a firehose subscription), and data.rejected lists any identifiers that failed validation.
{
  "type": "liquidity_stream_subscribe_response",
  "room_id": "polymarket_market_liquidity",
  "data": {
    "ids": ["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"],
    "rejected": []
  }
}

Events

Each room emits a single update object (not a batch) whenever liquidity changes. Every event carries liquidity_usd (current USD order-book liquidity) and liquidity_updated_at (Unix milliseconds).

position_liquidity_update

Latest USD liquidity for one outcome token, from polymarket_position_liquidity.
{
  "type": "position_liquidity_update",
  "room_id": "polymarket_position_liquidity",
  "data": {
    "position_id": "12345678901234567",
    "liquidity_usd": 42250.75,
    "liquidity_updated_at": 1743500000000
  }
}
FieldTypeDescription
position_idstringERC-1155 outcome token ID (decimal string)
liquidity_usdnumberOrder-book liquidity in USD
liquidity_updated_atintUpdate timestamp (Unix milliseconds)

market_liquidity_update

Total USD liquidity for one market, summed across its outcome tokens, from polymarket_market_liquidity.
{
  "type": "market_liquidity_update",
  "room_id": "polymarket_market_liquidity",
  "data": {
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "liquidity_usd": 128400.0,
    "liquidity_updated_at": 1743500000000
  }
}
FieldTypeDescription
condition_idstring64-char hex condition ID
liquidity_usdnumberTotal order-book liquidity in USD
liquidity_updated_atintUpdate timestamp (Unix milliseconds)

event_liquidity_update

Total USD liquidity for one event, summed across its markets, from polymarket_event_liquidity.
{
  "type": "event_liquidity_update",
  "room_id": "polymarket_event_liquidity",
  "data": {
    "event_slug": "bitcoin-price-markets",
    "liquidity_usd": 512900.0,
    "liquidity_updated_at": 1743500000000
  }
}
FieldTypeDescription
event_slugstringEvent slug
liquidity_usdnumberTotal order-book liquidity in USD
liquidity_updated_atintUpdate timestamp (Unix milliseconds)
Last modified on June 16, 2026