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

# Quote Updates

> Authenticated channel for streaming real-time quote responses from RFQ requests.

<Note>Authenticated channel. Connect to: `wss://wss.prime.kraken.com/ws/v1`</Note>

Request stream of Quotes. All quote responses are sent as Quote updates. To request a quote, send a QuoteRequest message. The server responds with one or many Quote messages as the streaming prices update.

## Subscribe Request

<Tabs>
  <Tab title="Subscribe Schema">
    <ParamField path="reqid" type="number" required>
      Request ID - will be echoed back in the response structure.
    </ParamField>

    <ParamField path="type" type="string" required>
      Request type. Value: `subscribe`
    </ParamField>

    <ParamField path="streams" type="array" required>
      Array containing the Quote stream configuration.

      <Expandable title="properties">
        <ParamField path="name" type="string" required>
          Subscription name. Value: `Quote`
        </ParamField>

        <ParamField path="StartDate" type="string">
          If provided, the subscription will return quotes for rfqs that were submitted after this time.
        </ParamField>

        <ParamField path="EndDate" type="string">
          If provided, the subscription will return quotes for rfqs that were submitted before this time.
        </ParamField>

        <ParamField path="Symbol" type="string">
          If provided, Symbol of the security to filter quotes for.
        </ParamField>

        <ParamField path="RFQID" type="string">
          If provided, filter by RFQID.
        </ParamField>
      </Expandable>
    </ParamField>
  </Tab>

  <Tab title="Example">
    ```json theme={null}
    {
      "reqid": 6,
      "type": "subscribe",
      "streams": [
        {
          "name": "Quote",
          "StartDate": "2021-09-14T00:00:00.000000Z"
        }
      ]
    }
    ```
  </Tab>
</Tabs>

## Response

<Tabs>
  <Tab title="Response Schema">
    <ParamField path="reqid" type="number" required>
      A number that relates this response to a request.
    </ParamField>

    <ParamField path="type" type="string" required>
      The type of message sent.
    </ParamField>

    <ParamField path="ts" type="string" required>
      An ISO-8601 UTC string of the form `2019-02-13T05:17:32.000000Z`.
    </ParamField>

    <ParamField path="initial" type="boolean">
      If this is initial data for a request, the initial flag will be set.
    </ParamField>

    <ParamField path="seqNum" type="number" required>
      The sequence number for this response per request.
    </ParamField>

    <ParamField path="action" type="string">
      "Update" or "Remove" - tells the client if the given entity should be removed or added/updated.
    </ParamField>

    <ParamField path="data" type="array" required>
      Array of Quote data.

      <Expandable title="properties">
        <ParamField path="Timestamp" type="string" required>
          Timestamp of the message.
        </ParamField>

        <ParamField path="Symbol" type="string" required>
          Symbol of the order security.
        </ParamField>

        <ParamField path="Currency" type="string" required>
          Currency of Quantity.
        </ParamField>

        <ParamField path="RFQID" type="string">
          Server-assigned RFQID. Present from `PendingNew` onward.
        </ParamField>

        <ParamField path="QuoteReqID" type="string" required>
          Client assigned Quote Req ID for the quote request.
        </ParamField>

        <ParamField path="QuoteStatus" type="string" required>
          Status of the quote. Possible values: `PendingNew`, `Open`, `PendingCancel`, `Canceled`, `PendingFill`, `Filled`, `Rejected`
        </ParamField>

        <ParamField path="QuoteID" type="string" required>
          Server assigned ID for this quote update.
        </ParamField>

        <ParamField path="QuoteRequestRejectReason" type="string">
          Quote request reject reason, specified when `QuoteStatus` is `Rejected`.
        </ParamField>

        <ParamField path="SubmitTime" type="string" required>
          Time of original quote request submission.
        </ParamField>

        <ParamField path="OrderQty" type="string" required>
          Order quantity.
        </ParamField>

        <ParamField path="AmountCurrency" type="string" required>
          Currency of Amount.
        </ParamField>

        <ParamField path="EndTime" type="string" required>
          End time of RFQ.
        </ParamField>

        <ParamField path="Side" type="string">
          Quote side. Possible values: `Buy`, `Sell`
        </ParamField>

        <ParamField path="TradedPx" type="string">
          The price of the trade if the quote is filled.
        </ParamField>

        <ParamField path="TradedQty" type="string">
          The quantity of the trade if the quote is filled.
        </ParamField>

        <ParamField path="TradedAmt" type="string">
          The amount of the trade if the quote is filled.
        </ParamField>

        <ParamField path="BidPx" type="string">
          Bid quote price.
        </ParamField>

        <ParamField path="BidAmt" type="string">
          Bid quote amount in units of AmountCurrency.
        </ParamField>

        <ParamField path="OfferPx" type="string">
          Offer quote price.
        </ParamField>

        <ParamField path="OfferAmt" type="string">
          Offer quote amount in units of AmountCurrency.
        </ParamField>

        <ParamField path="ValidUntilTime" type="string">
          Expire time for the current streaming quote. Present on `Open` updates with live bid/offer prices.
        </ParamField>

        <ParamField path="CustomerUser" type="string">
          The customer user associated with this quote.
        </ParamField>

        <ParamField path="MarketAccount" type="string">
          Market account associated with this quote.
        </ParamField>
      </Expandable>
    </ParamField>
  </Tab>

  <Tab title="Example">
    ```json theme={null}
    {
      "reqid": 9,
      "type": "Quote",
      "ts": "2021-09-14T22:31:27.214025Z",
      "initial": false,
      "seqNum": 3,
      "data": [
        {
          "Timestamp": "2021-09-14T22:31:27.204209Z",
          "Symbol": "BTC-USD",
          "Currency": "BTC",
          "RFQID": "8688ceab-ea67-416c-8ce1-9b63d6c0fe4e",
          "QuoteReqID": "7feb22f0-15ab-11ec-b0a2-2554a9e1e7a4",
          "QuoteStatus": "Open",
          "QuoteID": "20e240c5-9a82-4731-809e-91b3a2bf2f49",
          "SubmitTime": "2021-09-14T22:31:27.183751Z",
          "OrderQty": "0.30000000",
          "AmountCurrency": "USD",
          "EndTime": "2021-09-14T22:31:42.183751Z",
          "BidPx": "46836.27",
          "BidAmt": "14050.88",
          "OfferPx": "46879.47",
          "OfferAmt": "14063.85",
          "ValidUntilTime": "2021-09-14T22:31:28.204209Z",
          "CustomerUser": "tom@company.com"
        }
      ]
    }
    ```
  </Tab>
</Tabs>

## RFQ workflow

A typical RFQ flow looks like this:

1. Subscribe to the [Quote](/institutional/api-reference/prime-websocket/quote) stream.
2. Send a [Quote Request](/institutional/api-reference/prime-websocket/quote-request) to open an RFQ and receive streaming prices.
3. When ready to trade, send a [New Order Single](/institutional/api-reference/prime-websocket/new-order-single) with `OrdType` set to `RFQ` and `QuoteID` and `RFQID` from the latest `Open` quote update. See the **RFQ Example** tab on that page.
4. Monitor fills on the [Execution Report](/institutional/api-reference/prime-websocket/execution-report) and [Trade](/institutional/api-reference/prime-websocket/trade) streams.

To cancel an open quote without trading, use [Quote Cancel Request](/institutional/api-reference/prime-websocket/quote-cancel-request).
