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

# Order Book Stream

> Full order book snapshots and deltas for a contract.

This stream is available on the `optionsPublicOrderBook` subscription. It provides the order book for a single **contract**, including implied volatility on the ask side.

<Note>
  For `publicOrderBookDelta` messages, `quantity` is the absolute size at that price level. A `quantity` of `0` means the level should be removed from your local book.
</Note>

#### Snapshot vs. Delta

The `emitPublicOrderBook` request returns a full order book snapshot via `publicOrderBook`. Use it to bootstrap your local book when you first subscribe, or to resynchronize after a gap.


## AsyncAPI

````yaml latest/options/asyncapi/options-ws.yaml publicOrderBookStream
id: publicOrderBookStream
title: Order Book Stream
description: >
  Available on the `optionsPublicOrderBook` subscription. Full order book
  snapshots and deltas for a single contract, including implied volatility on
  the ask side.
servers:
  - id: sandbox
    protocol: wss
    host: ws.sandbox.rails.xyz
    bindings: []
    variables: []
address: >-
  ?product=options&market={market}&expiration={expiration}&strike={strike}&type={type}&subscriptions=optionsPublicOrderBook
parameters:
  - id: market
    jsonSchema:
      type: string
      description: A specific market (e.g. `BTC-USDT`) or `ALL`.
      default: BTC-USDT
    description: A specific market (e.g. `BTC-USDT`) or `ALL`.
    type: string
    required: true
    deprecated: false
  - id: expiration
    jsonSchema:
      type: string
      description: >-
        Contract expiration, e.g. `24JUN26`. Requires `market`; omit to match
        every expiration.
      default: 24JUN26
    description: >-
      Contract expiration, e.g. `24JUN26`. Requires `market`; omit to match
      every expiration.
    type: string
    required: true
    deprecated: false
  - id: strike
    jsonSchema:
      type: string
      description: >-
        Strike price, e.g. `62000`. Requires `expiration`; omit to match every
        strike.
      default: '62000'
    description: >-
      Strike price, e.g. `62000`. Requires `expiration`; omit to match every
      strike.
    type: string
    required: true
    deprecated: false
  - id: type
    jsonSchema:
      type: string
      description: '`C` (call) or `P` (put). Requires `strike`; omit to match both.'
      default: C
    description: '`C` (call) or `P` (put). Requires `strike`; omit to match both.'
    type: string
    required: true
    deprecated: false
bindings: []
operations:
  - &ref_3
    id: emitPublicOrderBook
    title: Emit public order book
    description: Request a full order book snapshot for a contract.
    type: receive
    messages:
      - &ref_6
        id: emitPublicOrderBookRequest
        contentType: application/json
        payload:
          - name: Emit Public Order Book
            type: object
            properties:
              - name: message
                type: string
                description: Always `emitPublicOrderBook`.
                required: true
              - name: content
                type: object
                required: true
                properties:
                  - name: clientRequestId
                    type: string
                    description: Client-generated UUID for correlation
                    required: false
                  - name: market
                    type: string
                    description: Contract name
                    required: true
        headers: []
        jsonPayloadSchema:
          type: object
          properties:
            message:
              type: string
              description: Always `emitPublicOrderBook`.
              x-parser-schema-id: <anonymous-schema-296>
            content:
              type: object
              properties:
                clientRequestId:
                  type: string
                  format: uuid
                  description: Client-generated UUID for correlation
                  x-parser-schema-id: <anonymous-schema-298>
                market:
                  type: string
                  description: Contract name
                  x-parser-schema-id: <anonymous-schema-299>
              required:
                - market
              x-parser-schema-id: <anonymous-schema-297>
          required:
            - message
            - content
          x-parser-schema-id: <anonymous-schema-295>
        title: Emit Public Order Book
        example: |-
          {
            "message": "emitPublicOrderBook",
            "content": {
              "clientRequestId": "4cc68b60-ed2d-42aa-a21e-cb5486f8fd1a",
              "market": "BTC-10JUL26-55000-C"
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: emitPublicOrderBookRequest
    bindings: []
    extensions: &ref_1
      - id: x-parser-unique-object-id
        value: publicOrderBookStream
  - &ref_4
    id: publicOrderBookSnapshot
    title: Public order book snapshot
    description: Response to `emitPublicOrderBook`.
    type: send
    messages:
      - &ref_7
        id: publicOrderBookResponse
        contentType: application/json
        payload:
          - name: Order Book Snapshot
            description: Response to `emitPublicOrderBook`.
            type: object
            properties:
              - name: resultType
                type: string
                description: Always `publicOrderBook`.
                required: true
              - name: market
                type: string
                description: Contract name
                required: true
              - name: data
                type: object
                required: true
                properties:
                  - name: orderBook
                    type: object
                    required: true
                    properties:
                      - name: contract
                        type: string
                        description: Contract name
                        required: true
                      - name: orders
                        type: array
                        description: Full order book entries
                        required: true
                        properties:
                          - name: orderType
                            type: string
                            description: Order side
                            enumValues:
                              - buy
                              - sell
                            required: true
                          - name: price
                            type: string
                            description: Price level
                            required: true
                          - name: quantity
                            type: string
                            description: >-
                              Size at the price level; `0` in a delta removes
                              the level
                            required: true
                          - name: iv
                            type: string
                            description: >-
                              Implied volatility at the level; present on the
                              ask side
                            required: false
                      - name: bestBid
                        type: object
                        required: false
                        properties:
                          - name: price
                            type: string
                            description: Price
                            required: true
                          - name: size
                            type: string
                            description: Size
                            required: true
                          - name: iv
                            type: string
                            description: Present on the ask side
                            required: false
                      - name: bestAsk
                        type: object
                        required: false
                        properties:
                          - name: price
                            type: string
                            description: Price
                            required: true
                          - name: size
                            type: string
                            description: Size
                            required: true
                          - name: iv
                            type: string
                            description: Present on the ask side
                            required: false
                      - name: ts
                        type: integer
                        description: Snapshot timestamp in milliseconds since epoch
                        required: true
                  - name: statusCode
                    type: integer
                    description: Always `200`.
                    required: true
                  - name: clientRequestId
                    type: string
                    description: Client-generated UUID for correlation
                    required: false
        headers: []
        jsonPayloadSchema:
          type: object
          properties:
            resultType:
              type: string
              description: Always `publicOrderBook`.
              x-parser-schema-id: <anonymous-schema-301>
            market:
              type: string
              description: Contract name
              x-parser-schema-id: <anonymous-schema-302>
            data:
              type: object
              properties:
                orderBook:
                  type: object
                  properties:
                    contract:
                      type: string
                      description: Contract name
                      x-parser-schema-id: <anonymous-schema-305>
                    orders:
                      type: array
                      description: Full order book entries
                      items: &ref_2
                        type: object
                        properties:
                          orderType:
                            type: string
                            enum:
                              - buy
                              - sell
                            description: Order side
                            x-parser-schema-id: <anonymous-schema-307>
                          price:
                            type: string
                            description: Price level
                            x-parser-schema-id: <anonymous-schema-308>
                          quantity:
                            type: string
                            description: >-
                              Size at the price level; `0` in a delta removes
                              the level
                            x-parser-schema-id: <anonymous-schema-309>
                          iv:
                            type: string
                            description: >-
                              Implied volatility at the level; present on the
                              ask side
                            x-parser-schema-id: <anonymous-schema-310>
                        required:
                          - orderType
                          - price
                          - quantity
                        x-parser-schema-id: OrderBookLevel
                      x-parser-schema-id: <anonymous-schema-306>
                    bestBid: &ref_0
                      type: object
                      properties:
                        price:
                          type: string
                          description: Price
                          x-parser-schema-id: <anonymous-schema-311>
                        size:
                          type: string
                          description: Size
                          x-parser-schema-id: <anonymous-schema-312>
                        iv:
                          type: string
                          description: Present on the ask side
                          x-parser-schema-id: <anonymous-schema-313>
                      required:
                        - price
                        - size
                      x-parser-schema-id: BestQuote
                    bestAsk: *ref_0
                    ts:
                      type: integer
                      description: Snapshot timestamp in milliseconds since epoch
                      x-parser-schema-id: <anonymous-schema-314>
                  required:
                    - contract
                    - orders
                    - ts
                  x-parser-schema-id: <anonymous-schema-304>
                statusCode:
                  type: integer
                  description: Always `200`.
                  x-parser-schema-id: <anonymous-schema-315>
                clientRequestId:
                  type: string
                  description: Client-generated UUID for correlation
                  x-parser-schema-id: <anonymous-schema-316>
              required:
                - orderBook
                - statusCode
              x-parser-schema-id: <anonymous-schema-303>
          required:
            - resultType
            - market
            - data
          x-parser-schema-id: <anonymous-schema-300>
        title: Order Book Snapshot
        description: Response to `emitPublicOrderBook`.
        example: |-
          {
            "resultType": "publicOrderBook",
            "market": "BTC-10JUL26-55000-C",
            "data": {
              "orderBook": {
                "contract": "BTC-10JUL26-55000-C",
                "orders": [
                  {
                    "orderType": "sell",
                    "price": "7247.97",
                    "quantity": "4",
                    "iv": "0.5968"
                  },
                  {
                    "orderType": "buy",
                    "price": "7104.44",
                    "quantity": "4"
                  },
                  {
                    "orderType": "buy",
                    "price": "6960.92",
                    "quantity": "16"
                  },
                  {
                    "orderType": "buy",
                    "price": "6700",
                    "quantity": "1"
                  }
                ],
                "bestBid": {
                  "price": "7104.44",
                  "size": "4"
                },
                "bestAsk": {
                  "price": "7247.97",
                  "size": "4",
                  "iv": "0.5968"
                },
                "ts": 1783085417173
              },
              "statusCode": 200,
              "clientRequestId": "4cc68b60-ed2d-42aa-a21e-cb5486f8fd1a"
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: publicOrderBookResponse
    bindings: []
    extensions: *ref_1
  - &ref_5
    id: publicOrderBookUpdate
    title: Public order book update
    description: Pushed whenever the order book changes for the contract.
    type: send
    messages:
      - &ref_8
        id: publicOrderBookDelta
        contentType: application/json
        payload:
          - name: Order Book Delta
            type: object
            properties:
              - name: resultType
                type: string
                description: Always `publicOrderBookDelta`.
                required: true
              - name: market
                type: string
                description: Contract name
                required: true
              - name: data
                type: object
                required: true
                properties:
                  - name: orderBook
                    type: object
                    required: true
                    properties:
                      - name: contract
                        type: string
                        description: Contract name
                        required: true
                      - name: orders
                        type: array
                        description: Changed price levels
                        required: true
                        properties:
                          - name: orderType
                            type: string
                            description: Order side
                            enumValues:
                              - buy
                              - sell
                            required: true
                          - name: price
                            type: string
                            description: Price level
                            required: true
                          - name: quantity
                            type: string
                            description: >-
                              Size at the price level; `0` in a delta removes
                              the level
                            required: true
                          - name: iv
                            type: string
                            description: >-
                              Implied volatility at the level; present on the
                              ask side
                            required: false
                      - name: bestBid
                        type: object
                        required: false
                        properties:
                          - name: price
                            type: string
                            description: Price
                            required: true
                          - name: size
                            type: string
                            description: Size
                            required: true
                          - name: iv
                            type: string
                            description: Present on the ask side
                            required: false
                      - name: bestAsk
                        type: object
                        required: false
                        properties:
                          - name: price
                            type: string
                            description: Price
                            required: true
                          - name: size
                            type: string
                            description: Size
                            required: true
                          - name: iv
                            type: string
                            description: Present on the ask side
                            required: false
                      - name: ts
                        type: integer
                        description: Update timestamp in milliseconds since epoch
                        required: true
                  - name: statusCode
                    type: integer
                    description: Always `200`.
                    required: true
        headers: []
        jsonPayloadSchema:
          type: object
          properties:
            resultType:
              type: string
              description: Always `publicOrderBookDelta`.
              x-parser-schema-id: <anonymous-schema-318>
            market:
              type: string
              description: Contract name
              x-parser-schema-id: <anonymous-schema-319>
            data:
              type: object
              properties:
                orderBook:
                  type: object
                  properties:
                    contract:
                      type: string
                      description: Contract name
                      x-parser-schema-id: <anonymous-schema-322>
                    orders:
                      type: array
                      description: Changed price levels
                      items: *ref_2
                      x-parser-schema-id: <anonymous-schema-323>
                    bestBid: *ref_0
                    bestAsk: *ref_0
                    ts:
                      type: integer
                      description: Update timestamp in milliseconds since epoch
                      x-parser-schema-id: <anonymous-schema-324>
                  required:
                    - contract
                    - orders
                    - ts
                  x-parser-schema-id: <anonymous-schema-321>
                statusCode:
                  type: integer
                  description: Always `200`.
                  x-parser-schema-id: <anonymous-schema-325>
              required:
                - orderBook
                - statusCode
              x-parser-schema-id: <anonymous-schema-320>
          required:
            - resultType
            - market
            - data
          x-parser-schema-id: <anonymous-schema-317>
        title: Order Book Delta
        example: |-
          {
            "resultType": "publicOrderBookDelta",
            "market": "BTC-10JUL26-55000-C",
            "data": {
              "orderBook": {
                "contract": "BTC-10JUL26-55000-C",
                "orders": [
                  {
                    "orderType": "buy",
                    "price": "6700",
                    "quantity": "0"
                  }
                ],
                "bestBid": {
                  "price": "7204.26",
                  "size": "4"
                },
                "bestAsk": {
                  "price": "7210.97",
                  "size": "3"
                },
                "ts": 1783351516417
              },
              "statusCode": 200
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: publicOrderBookDelta
    bindings: []
    extensions: *ref_1
sendOperations:
  - *ref_3
receiveOperations:
  - *ref_4
  - *ref_5
sendMessages:
  - *ref_6
receiveMessages:
  - *ref_7
  - *ref_8
extensions:
  - id: x-parser-unique-object-id
    value: publicOrderBookStream
securitySchemes:
  - id: wsAuth
    name: Sec-WebSocket-Protocol
    type: httpApiKey
    description: Supply as `authorization#<JWT>` during the WebSocket handshake.
    in: header
    extensions: []

````