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

# Rfq.subscribe

> JSON-RPC method `rfq.subscribe` on the trading socket. Subscriptions are per socket and not restored by `public/session_resume`.



## AsyncAPI

````yaml _generated/asyncapi.yaml rfq.subscribe
id: rfq.subscribe
title: rfq.subscribe
description: >-
  JSON-RPC method `rfq.subscribe` on the trading socket. Subscriptions are per
  socket and not restored by `public/session_resume`.
servers:
  - id: trading
    protocol: wss
    host: joyride.exchange
    bindings: []
    variables: []
address: /
parameters: []
bindings: []
operations:
  - &ref_3
    id: rfq.subscribe.request
    title: Request
    type: receive
    messages:
      - &ref_5
        id: request
        contentType: application/json
        payload:
          - name: Request params
            type: object
            properties:
              - name: type
                type: string
                description: object
                required: false
              - name: additionalProperties
                type: boolean
                required: false
              - name: description
                type: string
                description: No parameters; send `{}` or omit `params`.
                required: false
        headers: []
        jsonPayloadSchema:
          type: object
          additionalProperties: false
          description: No parameters; send `{}` or omit `params`.
          x-parser-schema-id: <anonymous-schema-110>
        title: Request params
        example: |-
          {
            "type": "<string>",
            "additionalProperties": true,
            "description": "<string>"
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: request
    bindings: []
    extensions: &ref_2
      - id: x-parser-unique-object-id
        value: rfq.subscribe
  - &ref_4
    id: rfq.subscribe.reply
    title: Reply
    type: send
    messages:
      - &ref_6
        id: result
        contentType: application/json
        payload:
          - name: Result
            type: object
            properties:
              - name: channel
                type: string
                enumValues:
                  - rfq
                  - rfq_maker
                required: true
              - name: const
                type: boolean
                required: false
        headers: []
        jsonPayloadSchema:
          type: object
          required:
            - channel
            - subscribed
          properties:
            channel:
              type: string
              enum:
                - rfq
                - rfq_maker
              x-parser-schema-id: <anonymous-schema-111>
            subscribed:
              const: true
              x-parser-schema-id: <anonymous-schema-112>
          x-parser-schema-id: SubscribeResult
        title: Result
        example: |-
          {
            "channel": "rfq",
            "subscribed": true
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: result
      - &ref_7
        id: error
        contentType: application/json
        payload:
          - name: Error
            description: >-
              Every `rfq.*` failure is JSON-RPC error `1200`; this is its
              `error.data` object.
            type: object
            properties:
              - name: error
                type: string
                description: >-
                  The RFQ error code. `retryable` says whether the same call can
                  succeed later; for `RFQ_NOT_READY` the `message` names the
                  cause. `RFQ_TAKER_UNFUNDED`, `RFQ_MAKER_UNFUNDED` and
                  `RFQ_SIGNED_LIMIT_BELOW_REQUIREMENT` carry the funding view in
                  `details`; `RFQ_INVALID_INSTRUMENT` and `RFQ_QUOTE_EXPIRED`
                  from a leg check carry `{leg_index}`. `RFQ_SIDE_NOT_REQUESTED`
                  is a side the request did not ask for, on respond or accept;
                  `RFQ_SIDE_NOT_QUOTED` is an accept of a side the quote left
                  absent.
                enumValues:
                  - RFQ_NOT_ENABLED
                  - RFQ_WRONG_ROLE
                  - RFQ_NOT_READY
                  - RFQ_INVALID_INSTRUMENT
                  - RFQ_SIZE_INVALID
                  - RFQ_INVALID_PARAMS
                  - RFQ_VALUE_OUT_OF_RANGE
                  - RFQ_PRECISION_UNSUPPORTED
                  - RFQ_INVALID_SIGNATURE
                  - RFQ_CANONICAL_MISMATCH
                  - RFQ_NOT_FOUND
                  - RFQ_STATE_CONFLICT
                  - RFQ_OPEN_LIMIT
                  - RFQ_QUOTE_EXPIRED
                  - RFQ_SIGNED_LIMIT_BELOW_REQUIREMENT
                  - RFQ_TAKER_UNFUNDED
                  - RFQ_MAKER_UNFUNDED
                  - RFQ_RATE_LIMITED
                  - RFQ_SIDE_NOT_QUOTED
                  - RFQ_SIDE_NOT_REQUESTED
                required: true
              - name: message
                type: string
                required: true
              - name: operation_id
                type: string
                description: Server-side correlation id; quote it when asking for support.
                required: true
              - name: retryable
                type: boolean
                required: true
              - name: rfq_id
                type: string
                description: 16-byte RFQ id encoded as lowercase hexadecimal.
                required: false
              - name: quote_id
                type: string
                description: SHA-256 of the canonical 1,066-byte StrategyQuotePayload.
                required: false
              - name: details
                type: object
                description: >-
                  Code-specific context; the funding view for the three funding
                  codes, `{leg_index}` for a leg that stopped trading. Absent
                  otherwise.
                required: false
                properties:
                  - name: anchored
                    type: boolean
                    description: >-
                      Whether a durable subaccount anchor is covered by the live
                      watcher heartbeat.
                    required: true
                  - name: free_balance
                    type: string
                    required: true
                  - name: buy
                    type: object
                    required: true
                    properties:
                      - name: estimate
                        type: boolean
                        description: >-
                          True only for a writer-side requirement computed over
                          a never-anchored empty portfolio.
                        required: true
                      - name: funded
                        type: boolean
                        description: >-
                          True only for a non-estimated requirement with a
                          covered anchor and `free_balance >= required`.
                        required: true
                      - name: package_cash_delta
                        type: string
                        description: >-
                          Signed cash movement before fees from the viewed
                          party's seat; positive means that party receives
                          premium.
                        required: false
                      - name: cash_debit
                        type: string
                        description: '`max(-package_cash_delta, 0)`.'
                        required: false
                      - name: fee
                        type: string
                        description: >-
                          The viewed party's trading fee over the current
                          prices, using its taker or maker tier as appropriate:
                          per leg `min(index_notional × fee_bps / 10000,
                          leg_value × trade_fee_cap_bps / 10000)`, floored and
                          summed.
                        required: false
                      - name: max_fee
                        type: string
                        description: >-
                          `fee` with the venue's signed-fee tolerance applied
                          and rounded up once; the figure to sign as the fee
                          maximum. `required` funds it, and the signer refuses a
                          fill whose exact fee exceeds the signed maximum.
                        required: false
                      - name: writer
                        type: boolean
                        description: >-
                          True when this side leaves the viewed party short at
                          least one leg.
                        required: false
                      - name: lock_increase
                        type: string
                        description: >-
                          `max(post_fill_locked - current_locked, 0)`; zero when
                          the viewed party is not a writer.
                        required: false
                      - name: post_fill_locked
                        type: string
                        description: >-
                          Unbuffered absolute lock for the viewed party after
                          the fill.
                        required: false
                      - name: max_locked_balance
                        type: string
                        description: >-
                          Current lock plus `lock_increase` with the venue's
                          signed-lock tolerance applied and rounded up once; the
                          figure to sign as the lock maximum. Equals
                          `post_fill_locked` when the party is not a writer.
                        required: false
                  - name: sell
                    type: object
                    required: true
                    properties:
                      - name: estimate
                        type: boolean
                        description: >-
                          True only for a writer-side requirement computed over
                          a never-anchored empty portfolio.
                        required: true
                      - name: funded
                        type: boolean
                        description: >-
                          True only for a non-estimated requirement with a
                          covered anchor and `free_balance >= required`.
                        required: true
                      - name: package_cash_delta
                        type: string
                        description: >-
                          Signed cash movement before fees from the viewed
                          party's seat; positive means that party receives
                          premium.
                        required: false
                      - name: cash_debit
                        type: string
                        description: '`max(-package_cash_delta, 0)`.'
                        required: false
                      - name: fee
                        type: string
                        description: >-
                          The viewed party's trading fee over the current
                          prices, using its taker or maker tier as appropriate:
                          per leg `min(index_notional × fee_bps / 10000,
                          leg_value × trade_fee_cap_bps / 10000)`, floored and
                          summed.
                        required: false
                      - name: max_fee
                        type: string
                        description: >-
                          `fee` with the venue's signed-fee tolerance applied
                          and rounded up once; the figure to sign as the fee
                          maximum. `required` funds it, and the signer refuses a
                          fill whose exact fee exceeds the signed maximum.
                        required: false
                      - name: writer
                        type: boolean
                        description: >-
                          True when this side leaves the viewed party short at
                          least one leg.
                        required: false
                      - name: lock_increase
                        type: string
                        description: >-
                          `max(post_fill_locked - current_locked, 0)`; zero when
                          the viewed party is not a writer.
                        required: false
                      - name: post_fill_locked
                        type: string
                        description: >-
                          Unbuffered absolute lock for the viewed party after
                          the fill.
                        required: false
                      - name: max_locked_balance
                        type: string
                        description: >-
                          Current lock plus `lock_increase` with the venue's
                          signed-lock tolerance applied and rounded up once; the
                          figure to sign as the lock maximum. Equals
                          `post_fill_locked` when the party is not a writer.
                        required: false
                  - name: leg_index
                    type: integer
                    required: true
        headers: []
        jsonPayloadSchema:
          type: object
          description: >-
            The `error.data` object of every `rfq.*` failure (JSON-RPC code
            `1200`).
          properties:
            error:
              type: string
              description: >-
                The RFQ error code. `retryable` says whether the same call can
                succeed later; for `RFQ_NOT_READY` the `message` names the
                cause. `RFQ_TAKER_UNFUNDED`, `RFQ_MAKER_UNFUNDED` and
                `RFQ_SIGNED_LIMIT_BELOW_REQUIREMENT` carry the funding view in
                `details`; `RFQ_INVALID_INSTRUMENT` and `RFQ_QUOTE_EXPIRED` from
                a leg check carry `{leg_index}`. `RFQ_SIDE_NOT_REQUESTED` is a
                side the request did not ask for, on respond or accept;
                `RFQ_SIDE_NOT_QUOTED` is an accept of a side the quote left
                absent.
              enum:
                - RFQ_NOT_ENABLED
                - RFQ_WRONG_ROLE
                - RFQ_NOT_READY
                - RFQ_INVALID_INSTRUMENT
                - RFQ_SIZE_INVALID
                - RFQ_INVALID_PARAMS
                - RFQ_VALUE_OUT_OF_RANGE
                - RFQ_PRECISION_UNSUPPORTED
                - RFQ_INVALID_SIGNATURE
                - RFQ_CANONICAL_MISMATCH
                - RFQ_NOT_FOUND
                - RFQ_STATE_CONFLICT
                - RFQ_OPEN_LIMIT
                - RFQ_QUOTE_EXPIRED
                - RFQ_SIGNED_LIMIT_BELOW_REQUIREMENT
                - RFQ_TAKER_UNFUNDED
                - RFQ_MAKER_UNFUNDED
                - RFQ_RATE_LIMITED
                - RFQ_SIDE_NOT_QUOTED
                - RFQ_SIDE_NOT_REQUESTED
              x-parser-schema-id: <anonymous-schema-34>
            message:
              type: string
              x-parser-schema-id: <anonymous-schema-35>
            operation_id:
              type: string
              description: Server-side correlation id; quote it when asking for support.
              x-parser-schema-id: <anonymous-schema-36>
            retryable:
              type: boolean
              x-parser-schema-id: <anonymous-schema-37>
            rfq_id:
              type: string
              pattern: ^[0-9a-f]{32}$
              description: 16-byte RFQ id encoded as lowercase hexadecimal.
              x-parser-schema-id: RfqId
            quote_id:
              type: string
              pattern: ^[0-9a-f]{64}$
              description: SHA-256 of the canonical 1,066-byte StrategyQuotePayload.
              x-parser-schema-id: QuoteId
            details:
              description: >-
                Code-specific context; the funding view for the three funding
                codes, `{leg_index}` for a leg that stopped trading. Absent
                otherwise.
              oneOf:
                - type: object
                  additionalProperties: false
                  description: >-
                    Live advisory funding view; the attestation signer remains
                    authoritative.
                  properties:
                    anchored:
                      type: boolean
                      description: >-
                        Whether a durable subaccount anchor is covered by the
                        live watcher heartbeat.
                      x-parser-schema-id: <anonymous-schema-39>
                    free_balance:
                      oneOf:
                        - &ref_0
                          type: string
                          pattern: ^(0|[1-9][0-9]*)(\.[0-9]{1,6})?$
                          description: >-
                            Canonical unsigned decimal with at most six
                            fractional digits; JSON numbers and exponents are
                            rejected.
                          x-parser-schema-id: RfqDecimal
                        - type: 'null'
                          x-parser-schema-id: <anonymous-schema-41>
                      x-parser-schema-id: <anonymous-schema-40>
                    buy:
                      oneOf:
                        - &ref_1
                          type: object
                          additionalProperties: false
                          description: >
                            Taker-perspective requirement for one accept side,
                            computed from one

                            frozen strategy risk view:

                            `required = cash_debit + max_fee + lock_increase`.
                          properties:
                            required:
                              allOf:
                                - *ref_0
                              description: >-
                                Free balance required to accept this side of the
                                quote.
                              x-parser-schema-id: <anonymous-schema-43>
                            estimate:
                              type: boolean
                              description: >-
                                True only for a writer-side requirement computed
                                over a never-anchored empty portfolio.
                              x-parser-schema-id: <anonymous-schema-44>
                            funded:
                              type: boolean
                              description: >-
                                True only for a non-estimated requirement with a
                                covered anchor and `free_balance >= required`.
                              x-parser-schema-id: <anonymous-schema-45>
                            package_cash_delta:
                              allOf:
                                - type: string
                                  pattern: ^-?(0|[1-9][0-9]*)(\.[0-9]{1,6})?$
                                  description: >
                                    Canonical signed decimal with at most six
                                    fractional digits. Negative

                                    zero, JSON numbers, exponents, and values
                                    outside the signed 64-bit

                                    6dp range (`i64::MIN` excluded) are
                                    rejected.
                                  x-parser-schema-id: RfqSignedDecimal
                              description: >-
                                Signed cash movement before fees from the viewed
                                party's seat; positive means that party receives
                                premium.
                              x-parser-schema-id: <anonymous-schema-46>
                            cash_debit:
                              allOf:
                                - *ref_0
                              description: '`max(-package_cash_delta, 0)`.'
                              x-parser-schema-id: <anonymous-schema-47>
                            fee:
                              allOf:
                                - *ref_0
                              description: >-
                                The viewed party's trading fee over the current
                                prices, using its taker or maker tier as
                                appropriate: per leg `min(index_notional ×
                                fee_bps / 10000, leg_value × trade_fee_cap_bps /
                                10000)`, floored and summed.
                              x-parser-schema-id: <anonymous-schema-48>
                            max_fee:
                              allOf:
                                - *ref_0
                              description: >-
                                `fee` with the venue's signed-fee tolerance
                                applied and rounded up once; the figure to sign
                                as the fee maximum. `required` funds it, and the
                                signer refuses a fill whose exact fee exceeds
                                the signed maximum.
                              x-parser-schema-id: <anonymous-schema-49>
                            writer:
                              type: boolean
                              description: >-
                                True when this side leaves the viewed party
                                short at least one leg.
                              x-parser-schema-id: <anonymous-schema-50>
                            lock_increase:
                              allOf:
                                - *ref_0
                              description: >-
                                `max(post_fill_locked - current_locked, 0)`;
                                zero when the viewed party is not a writer.
                              x-parser-schema-id: <anonymous-schema-51>
                            post_fill_locked:
                              allOf:
                                - *ref_0
                              description: >-
                                Unbuffered absolute lock for the viewed party
                                after the fill.
                              x-parser-schema-id: <anonymous-schema-52>
                            max_locked_balance:
                              allOf:
                                - *ref_0
                              description: >-
                                Current lock plus `lock_increase` with the
                                venue's signed-lock tolerance applied and
                                rounded up once; the figure to sign as the lock
                                maximum. Equals `post_fill_locked` when the
                                party is not a writer.
                              x-parser-schema-id: <anonymous-schema-53>
                          required:
                            - required
                            - estimate
                            - funded
                          x-parser-schema-id: RfqFundingRequirement
                        - type: 'null'
                          x-parser-schema-id: <anonymous-schema-54>
                      x-parser-schema-id: <anonymous-schema-42>
                    sell:
                      oneOf:
                        - *ref_1
                        - type: 'null'
                          x-parser-schema-id: <anonymous-schema-56>
                      x-parser-schema-id: <anonymous-schema-55>
                  required:
                    - anchored
                    - free_balance
                    - buy
                    - sell
                  x-parser-schema-id: RfqTakerFunding
                - type: object
                  properties:
                    leg_index:
                      type: integer
                      minimum: 0
                      x-parser-schema-id: <anonymous-schema-58>
                  required:
                    - leg_index
                  x-parser-schema-id: <anonymous-schema-57>
              x-parser-schema-id: <anonymous-schema-38>
          required:
            - error
            - message
            - operation_id
            - retryable
          x-parser-schema-id: RfqTypedError
        title: Error
        description: >-
          Every `rfq.*` failure is JSON-RPC error `1200`; this is its
          `error.data` object.
        example: |-
          {
            "error": "RFQ_NOT_READY",
            "message": "RFQ chain-service state is not warm",
            "operation_id": "rfq-18",
            "retryable": true,
            "rfq_id": "0192f1a3b4c5d6e7f8091a2b3c4d5e6f"
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: error
    bindings: []
    extensions: *ref_2
sendOperations:
  - *ref_3
receiveOperations:
  - *ref_4
sendMessages:
  - *ref_5
receiveMessages:
  - *ref_6
  - *ref_7
extensions:
  - id: x-parser-unique-object-id
    value: rfq.subscribe
securitySchemes: []

````

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