> ## 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_maker channel (pushes)

> Delivered as `subscription` frames with `params.channel` `rfq_maker` on a socket that called `rfq.maker.subscribe`. `open` goes to every subscribed quoter; `state` goes to the maker whose quote it concerns (`quoted`, then `accepted` or `lost`, or `expired`); `fill` and `finality` go only to the maker whose quote was accepted. A maker never hears about another maker's quote.



## AsyncAPI

````yaml _generated/asyncapi.yaml rfq_maker
id: rfq_maker
title: rfq_maker channel (pushes)
description: >-
  Delivered as `subscription` frames with `params.channel` `rfq_maker` on a
  socket that called `rfq.maker.subscribe`. `open` goes to every subscribed
  quoter; `state` goes to the maker whose quote it concerns (`quoted`, then
  `accepted` or `lost`, or `expired`); `fill` and `finality` go only to the
  maker whose quote was accepted. A maker never hears about another maker's
  quote.
servers:
  - id: trading
    protocol: wss
    host: joyride.exchange
    bindings: []
    variables: []
address: rfq_maker
parameters: []
bindings: []
operations:
  - &ref_7
    id: rfq_maker.pushes
    title: Rfq_maker.pushes
    type: send
    messages:
      - &ref_8
        id: open
        contentType: application/json
        payload:
          - name: open
            description: A request opened; every subscribed quoter receives it.
            type: object
            properties:
              - name: const
                type: string
                description: open
                required: false
              - name: rfq
                type: object
                description: >
                  A pending request as seen by every quoter, from
                  `rfq.maker.poll`

                  items and the `open` push. Everything the maker signs is here:

                  `rfq_id`, the ordered `legs`, `taker_subaccount`, and
                  `deployment`.
                required: true
                properties:
                  - name: rfq_id
                    type: string
                    description: 16-byte RFQ id encoded as lowercase hexadecimal.
                    required: true
                  - name: legs
                    type: array
                    description: >-
                      Ordered strategy legs, in the taker's submitted order,
                      with resolved terms.
                    required: true
                    properties:
                      - name: instrument
                        type: string
                        description: Listed instrument symbol.
                        required: true
                      - name: quantity
                        type: string
                        description: >-
                          Non-zero signed 6dp contracts in taker-buy
                          orientation.
                        required: true
                      - name: asset
                        type: integer
                        description: Underlying id; 0 is BTC, 1 is ETH, 2 is SOL.
                        enumValues:
                          - 0
                          - 1
                          - 2
                        required: true
                      - name: strike
                        type: string
                        description: Strike in USDC, 6dp.
                        required: true
                      - name: expiry
                        type: integer
                        description: Instrument expiry as Unix seconds.
                        required: true
                      - name: kind
                        type: string
                        enumValues:
                          - call
                          - put
                        required: true
                  - name: side
                    type: string
                    description: >-
                      Which side(s) the maker may quote. On `buy` send only
                      `ask`; on `sell` only `bid`; on `two_way` either or both.
                    required: true
                  - name: taker_account
                    type: integer
                    description: Taker account id.
                    required: true
                  - name: taker_subaccount
                    type: string
                    description: >-
                      Solana base58 subaccount PDA (`["subaccount", owner]`
                      under `deployment.program_id`).
                    required: true
                  - name: taker_funded
                    type: boolean
                    description: >-
                      True when the taker has a covered anchor and positive free
                      balance; balances, side requirements, and writer status
                      are not disclosed.
                    required: true
                  - name: maker_funding
                    type: object
                    description: >-
                      Your own economics for each taker side you may quote,
                      priced at mark through your portfolio and fee tier; a side
                      the request does not allow is `null`. Delivered only to
                      you. `rfq.maker.respond` recomputes the same figures at
                      your signed `bid` and `ask`.
                    required: true
                    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: request_deadline
                    type: string
                    description: >-
                      RFC3339 UTC; the RFQ drains to `declined/timeout` if no
                      quote arrives by then.
                    required: true
                  - name: deployment
                    type: object
                    description: >-
                      The deployment identity as the open request carries it:
                      `RfqDeployment` plus the `epoch` the request was created
                      under. Only `program_id` and `deployment_id` enter the
                      signed quote.
                    required: true
                  - name: nearest_leg_close
                    type: string
                    description: >-
                      RFC3339 UTC with milliseconds, the same format as
                      `request_deadline`. The earliest expiry among the legs; no
                      quote may expire after it.
                    required: true
                  - name: max_quote_expires_at
                    type: integer
                    description: >-
                      Unix seconds; `nearest_leg_close` less the landing
                      haircut. Sign an `expires_at` at or before it; a later
                      value is rejected, never clamped.
                    required: true
        headers: []
        jsonPayloadSchema:
          type: object
          additionalProperties: false
          required:
            - type
            - rfq
          properties:
            type:
              const: open
              x-parser-schema-id: <anonymous-schema-141>
            rfq:
              type: object
              description: >
                A pending request as seen by every quoter, from `rfq.maker.poll`

                items and the `open` push. Everything the maker signs is here:

                `rfq_id`, the ordered `legs`, `taker_subaccount`, and
                `deployment`.
              properties:
                rfq_id: &ref_3
                  type: string
                  pattern: ^[0-9a-f]{32}$
                  description: 16-byte RFQ id encoded as lowercase hexadecimal.
                  x-parser-schema-id: RfqId
                legs: &ref_5
                  type: array
                  minItems: 1
                  maxItems: 13
                  items:
                    type: object
                    additionalProperties: false
                    description: >
                      One strategy leg as the venue returns it: the submitted
                      `instrument`

                      and `quantity` plus the instrument's resolved terms, which
                      are the

                      values the signed quote encodes for the leg.
                    properties:
                      instrument:
                        type: string
                        description: Listed instrument symbol.
                        example: SOL_USDC-6MAR26-150-C
                        x-parser-schema-id: <anonymous-schema-66>
                      quantity:
                        allOf:
                          - &ref_1
                            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: >-
                          Non-zero signed 6dp contracts in taker-buy
                          orientation.
                        x-parser-schema-id: <anonymous-schema-67>
                      asset:
                        type: integer
                        enum:
                          - 0
                          - 1
                          - 2
                        description: Underlying id; 0 is BTC, 1 is ETH, 2 is SOL.
                        x-parser-schema-id: <anonymous-schema-68>
                      strike:
                        allOf:
                          - &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
                        description: Strike in USDC, 6dp.
                        x-parser-schema-id: <anonymous-schema-69>
                      expiry:
                        type: integer
                        description: Instrument expiry as Unix seconds.
                        x-parser-schema-id: <anonymous-schema-70>
                      kind:
                        type: string
                        enum:
                          - call
                          - put
                        x-parser-schema-id: <anonymous-schema-71>
                    required:
                      - instrument
                      - quantity
                      - asset
                      - strike
                      - expiry
                      - kind
                    x-parser-schema-id: RfqResolvedLeg
                  description: >-
                    Ordered strategy legs, in the taker's submitted order, with
                    resolved terms.
                  x-parser-schema-id: RfqResolvedLegs
                side:
                  allOf:
                    - type: string
                      enum:
                        - buy
                        - sell
                        - two_way
                      description: >-
                        The taker's direction over the package (spec 16 §2.1);
                        `two_way` is the direction-blind request.
                      x-parser-schema-id: RfqRequestSide
                  description: >-
                    Which side(s) the maker may quote. On `buy` send only `ask`;
                    on `sell` only `bid`; on `two_way` either or both.
                  x-parser-schema-id: <anonymous-schema-116>
                taker_account:
                  type: integer
                  minimum: 0
                  description: Taker account id.
                  x-parser-schema-id: <anonymous-schema-117>
                taker_subaccount:
                  type: string
                  description: >-
                    Solana base58 subaccount PDA (`["subaccount", owner]` under
                    `deployment.program_id`).
                  x-parser-schema-id: <anonymous-schema-118>
                taker_funded:
                  type: boolean
                  description: >-
                    True when the taker has a covered anchor and positive free
                    balance; balances, side requirements, and writer status are
                    not disclosed.
                  x-parser-schema-id: <anonymous-schema-119>
                maker_funding:
                  allOf:
                    - 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: 'null'
                              x-parser-schema-id: <anonymous-schema-41>
                          x-parser-schema-id: <anonymous-schema-40>
                        buy:
                          oneOf:
                            - &ref_2
                              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:
                                    - *ref_1
                                  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_2
                            - 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
                  description: >-
                    Your own economics for each taker side you may quote, priced
                    at mark through your portfolio and fee tier; a side the
                    request does not allow is `null`. Delivered only to you.
                    `rfq.maker.respond` recomputes the same figures at your
                    signed `bid` and `ask`.
                  x-parser-schema-id: <anonymous-schema-120>
                request_deadline:
                  type: string
                  format: date-time
                  description: >-
                    RFC3339 UTC; the RFQ drains to `declined/timeout` if no
                    quote arrives by then.
                  x-parser-schema-id: <anonymous-schema-121>
                deployment:
                  type: object
                  description: >-
                    The deployment identity as the open request carries it:
                    `RfqDeployment` plus the `epoch` the request was created
                    under. Only `program_id` and `deployment_id` enter the
                    signed quote.
                  allOf:
                    - type: object
                      description: >-
                        The margin-vault deployment the request is bound to.
                        `program_id` and `deployment_id` are copied into every
                        signed quote and acceptance.
                      properties:
                        program_id:
                          type: string
                          description: Solana base58 program id.
                          x-parser-schema-id: <anonymous-schema-76>
                        deployment_id:
                          type: string
                          pattern: ^[0-9a-f]{64}$
                          x-parser-schema-id: <anonymous-schema-77>
                        config_pda:
                          type: string
                          description: Solana base58 config PDA.
                          x-parser-schema-id: <anonymous-schema-78>
                      required:
                        - program_id
                        - deployment_id
                        - config_pda
                      x-parser-schema-id: RfqDeployment
                    - type: object
                      properties:
                        epoch:
                          type: integer
                          minimum: 0
                          description: Deployment epoch the RFQ was created under.
                          x-parser-schema-id: <anonymous-schema-123>
                      required:
                        - epoch
                      x-parser-schema-id: <anonymous-schema-122>
                  x-parser-schema-id: RfqOpenDeployment
                nearest_leg_close:
                  type: string
                  format: date-time
                  description: >-
                    RFC3339 UTC with milliseconds, the same format as
                    `request_deadline`. The earliest expiry among the legs; no
                    quote may expire after it.
                  x-parser-schema-id: <anonymous-schema-124>
                max_quote_expires_at:
                  type: integer
                  format: int64
                  description: >-
                    Unix seconds; `nearest_leg_close` less the landing haircut.
                    Sign an `expires_at` at or before it; a later value is
                    rejected, never clamped.
                  x-parser-schema-id: <anonymous-schema-125>
              required:
                - rfq_id
                - legs
                - side
                - taker_account
                - taker_subaccount
                - taker_funded
                - maker_funding
                - request_deadline
                - deployment
                - nearest_leg_close
                - max_quote_expires_at
              x-parser-schema-id: OpenRfqObject
          x-parser-schema-id: RfqOpenPush
        title: Open
        description: A request opened; every subscribed quoter receives it.
        example: |-
          {
            "type": "open",
            "rfq": {
              "rfq_id": "0192f1a3b4c5d6e7f8091a2b3c4d5e6f",
              "side": "two_way",
              "legs": [
                {
                  "instrument": "BTC_USDC-2MAY26-77000-C",
                  "quantity": "1.000000",
                  "asset": 0,
                  "strike": "77000.000000",
                  "expiry": 1777708800,
                  "kind": "call"
                },
                {
                  "instrument": "BTC_USDC-2MAY26-80000-C",
                  "quantity": "-2.000000",
                  "asset": 0,
                  "strike": "80000.000000",
                  "expiry": 1777708800,
                  "kind": "call"
                }
              ],
              "taker_account": 2077,
              "taker_subaccount": "<base58 subaccount PDA>",
              "taker_funded": true,
              "maker_funding": {
                "anchored": true,
                "free_balance": "12500.000000",
                "buy": {
                  "required": "262.500000",
                  "estimate": false,
                  "funded": true,
                  "package_cash_delta": "470.000000",
                  "cash_debit": "0.000000",
                  "fee": "0.000000",
                  "max_fee": "0.000000",
                  "writer": true,
                  "lock_increase": "250.000000",
                  "post_fill_locked": "1250.000000",
                  "max_locked_balance": "1262.500000"
                },
                "sell": {
                  "required": "732.500000",
                  "estimate": false,
                  "funded": true,
                  "package_cash_delta": "-470.000000",
                  "cash_debit": "470.000000",
                  "fee": "0.000000",
                  "max_fee": "0.000000",
                  "writer": true,
                  "lock_increase": "250.000000",
                  "post_fill_locked": "1250.000000",
                  "max_locked_balance": "1262.500000"
                }
              },
              "request_deadline": "2026-05-01T15:40:06.000Z",
              "deployment": {
                "program_id": "4BecHK2cEh6DgfpCdxbQAm812audv4ZXxTQB12RkMWB8",
                "deployment_id": "<64 hex characters>",
                "config_pda": "ECJGDQXPnzjoaaPveifT4FSKmYgSbNf1GeiHbtdi626u",
                "epoch": 3
              },
              "nearest_leg_close": "2026-05-02T08:00:00.000Z",
              "max_quote_expires_at": 1777708798
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: open
      - &ref_9
        id: state
        contentType: application/json
        payload:
          - name: state
            description: >-
              A transition on your own quote: `quoted` when it lands, then
              `accepted` or `lost` when the taker accepts a quote, or `expired`;
              `submitting` and `failed` follow for the accepted maker.
              `declined` with `quote_id` null to you alone when you decline, and
              to every quoter when the window closes with no quote.
            type: object
            properties:
              - name: const
                type: string
                description: state
                required: false
              - name: rfq_id
                type: string
                description: 16-byte RFQ id encoded as lowercase hexadecimal.
                required: true
              - name: quote_id
                type: string
                description: >-
                  Null on the broadcast `declined` push when nobody quoted, and
                  on the `declined` push to a maker that declined.
                required: true
              - name: state
                type: string
                description: >-
                  `RfqState` plus `lost`: the taker accepted another maker's
                  quote. A lost quote stays firm until its `expires_at` but will
                  never fill; reserved risk can be released on the push.
                enumValues:
                  - pending
                  - quoted
                  - accepted
                  - lost
                  - submitting
                  - filled
                  - declined
                  - expired
                  - failed
                required: true
              - name: accepted_side
                type: string
                description: >-
                  The taker's accepted side from `accepted` onward; null before.
                  On a taker buy the maker writes every positive leg; on a taker
                  sell, every negative one.
                required: true
        headers: []
        jsonPayloadSchema:
          type: object
          additionalProperties: false
          required:
            - type
            - rfq_id
            - quote_id
            - state
            - accepted_side
          properties:
            type:
              const: state
              x-parser-schema-id: <anonymous-schema-142>
            rfq_id: *ref_3
            quote_id:
              oneOf:
                - &ref_4
                  type: string
                  pattern: ^[0-9a-f]{64}$
                  description: SHA-256 of the canonical 1,066-byte StrategyQuotePayload.
                  x-parser-schema-id: QuoteId
                - type: 'null'
                  x-parser-schema-id: <anonymous-schema-144>
              description: >-
                Null on the broadcast `declined` push when nobody quoted, and on
                the `declined` push to a maker that declined.
              x-parser-schema-id: <anonymous-schema-143>
            state:
              type: string
              enum:
                - pending
                - quoted
                - accepted
                - lost
                - submitting
                - filled
                - declined
                - expired
                - failed
              description: >-
                `RfqState` plus `lost`: the taker accepted another maker's
                quote. A lost quote stays firm until its `expires_at` but will
                never fill; reserved risk can be released on the push.
              x-parser-schema-id: RfqMakerQuoteState
            accepted_side:
              oneOf:
                - type: string
                  enum:
                    - buy
                    - sell
                  x-parser-schema-id: <anonymous-schema-146>
                - type: 'null'
                  x-parser-schema-id: <anonymous-schema-147>
              description: >-
                The taker's accepted side from `accepted` onward; null before.
                On a taker buy the maker writes every positive leg; on a taker
                sell, every negative one.
              x-parser-schema-id: <anonymous-schema-145>
          x-parser-schema-id: RfqMakerStatePush
        title: State
        description: >-
          A transition on your own quote: `quoted` when it lands, then
          `accepted` or `lost` when the taker accepts a quote, or `expired`;
          `submitting` and `failed` follow for the accepted maker. `declined`
          with `quote_id` null to you alone when you decline, and to every
          quoter when the window closes with no quote.
        example: |-
          {
            "type": "state",
            "rfq_id": "0192f1a3b4c5d6e7f8091a2b3c4d5e6f",
            "quote_id": "<64 hex characters>",
            "state": "accepted",
            "accepted_side": "buy"
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: state
      - &ref_10
        id: fill
        contentType: application/json
        payload:
          - name: fill
            description: Your fill landed on chain at `confirmed`.
            type: object
            properties:
              - name: const
                type: string
                description: fill
                required: false
              - name: fill
                type: object
                description: >
                  The quoting maker's fill, carried by the `fill` push and
                  re-emitted

                  unchanged except for `finality` by the `finality` push.
                  Durable

                  history is `GET /api/query/rfq-fills?role=maker`.
                required: true
                properties:
                  - name: rfq_id
                    type: string
                    description: 16-byte RFQ id encoded as lowercase hexadecimal.
                    required: true
                  - name: quote_id
                    type: string
                    description: SHA-256 of the canonical 1,066-byte StrategyQuotePayload.
                    required: true
                  - name: legs
                    type: array
                    description: >-
                      Ordered strategy legs, in the taker's submitted order,
                      with resolved terms.
                    required: true
                    properties:
                      - name: instrument
                        type: string
                        description: Listed instrument symbol.
                        required: true
                      - name: quantity
                        type: string
                        description: >-
                          Non-zero signed 6dp contracts in taker-buy
                          orientation.
                        required: true
                      - name: asset
                        type: integer
                        description: Underlying id; 0 is BTC, 1 is ETH, 2 is SOL.
                        enumValues:
                          - 0
                          - 1
                          - 2
                        required: true
                      - name: strike
                        type: string
                        description: Strike in USDC, 6dp.
                        required: true
                      - name: expiry
                        type: integer
                        description: Instrument expiry as Unix seconds.
                        required: true
                      - name: kind
                        type: string
                        enumValues:
                          - call
                          - put
                        required: true
                  - name: maker_side
                    type: string
                    description: >-
                      The maker's side of the package; the opposite of the
                      taker's accepted side.
                    enumValues:
                      - buy
                      - sell
                    required: true
                  - name: execution_price
                    type: string
                    description: >-
                      The signed package total the fill executed at — the
                      quote's `ask` when the taker bought, its `bid` when the
                      taker sold. Never a per-leg or per-contract price.
                    required: true
                  - name: price_basis
                    type: string
                    description: >-
                      Always `package_total`; labels `execution_price` for the
                      whole submitted leg vector.
                    enumValues:
                      - package_total
                    required: true
                  - name: premium
                    type: string
                    description: >-
                      The accepted package total, identical to
                      `execution_price`; the quote's `ask` when the taker
                      bought, its `bid` when the taker sold, never negated. The
                      maker receives it when `maker_side` is `sell` and pays it
                      when `maker_side` is `buy`; a negative value reverses the
                      direction.
                    required: true
                  - name: maker_fee
                    type: string
                    description: >-
                      The maker's per-leg package trading fee settled on chain
                      with the fill.
                    required: true
                  - name: writers
                    type: object
                    required: true
                    properties:
                      - name: maker
                        type: boolean
                        required: true
                      - name: taker
                        type: boolean
                        required: true
                      - name: maker_short_legs
                        type: integer
                        required: true
                      - name: taker_short_legs
                        type: integer
                        required: true
                  - name: tx_signature
                    type: string
                    description: Solana base58 transaction signature.
                    required: true
                  - name: finality
                    type: string
                    enumValues:
                      - confirmed
                      - finalized
                      - reverted
                    required: true
                  - name: filled_at
                    type: string
                    description: >-
                      RFC3339 UTC chain block time of the fill; stable across
                      finality re-emissions.
                    required: true
        headers: []
        jsonPayloadSchema:
          type: object
          additionalProperties: false
          required:
            - type
            - fill
          properties:
            type:
              const: fill
              x-parser-schema-id: <anonymous-schema-148>
            fill: &ref_6
              type: object
              description: >
                The quoting maker's fill, carried by the `fill` push and
                re-emitted

                unchanged except for `finality` by the `finality` push. Durable

                history is `GET /api/query/rfq-fills?role=maker`.
              properties:
                rfq_id: *ref_3
                quote_id: *ref_4
                legs: *ref_5
                maker_side:
                  type: string
                  enum:
                    - buy
                    - sell
                  description: >-
                    The maker's side of the package; the opposite of the taker's
                    accepted side.
                  x-parser-schema-id: <anonymous-schema-149>
                execution_price:
                  allOf:
                    - *ref_1
                  description: >-
                    The signed package total the fill executed at — the quote's
                    `ask` when the taker bought, its `bid` when the taker sold.
                    Never a per-leg or per-contract price.
                  x-parser-schema-id: <anonymous-schema-150>
                price_basis:
                  type: string
                  enum:
                    - package_total
                  description: >-
                    Always `package_total`; labels `execution_price` for the
                    whole submitted leg vector.
                  x-parser-schema-id: <anonymous-schema-151>
                premium:
                  allOf:
                    - *ref_1
                  description: >-
                    The accepted package total, identical to `execution_price`;
                    the quote's `ask` when the taker bought, its `bid` when the
                    taker sold, never negated. The maker receives it when
                    `maker_side` is `sell` and pays it when `maker_side` is
                    `buy`; a negative value reverses the direction.
                  x-parser-schema-id: <anonymous-schema-152>
                maker_fee:
                  allOf:
                    - *ref_0
                  description: >-
                    The maker's per-leg package trading fee settled on chain
                    with the fill.
                  x-parser-schema-id: <anonymous-schema-153>
                writers:
                  type: object
                  additionalProperties: false
                  properties:
                    maker:
                      type: boolean
                      x-parser-schema-id: <anonymous-schema-155>
                    taker:
                      type: boolean
                      x-parser-schema-id: <anonymous-schema-156>
                    maker_short_legs:
                      type: integer
                      minimum: 0
                      x-parser-schema-id: <anonymous-schema-157>
                    taker_short_legs:
                      type: integer
                      minimum: 0
                      x-parser-schema-id: <anonymous-schema-158>
                  required:
                    - maker
                    - taker
                    - maker_short_legs
                    - taker_short_legs
                  x-parser-schema-id: <anonymous-schema-154>
                tx_signature:
                  type: string
                  description: Solana base58 transaction signature.
                  x-parser-schema-id: <anonymous-schema-159>
                finality:
                  type: string
                  enum:
                    - confirmed
                    - finalized
                    - reverted
                  x-parser-schema-id: <anonymous-schema-160>
                filled_at:
                  type: string
                  format: date-time
                  description: >-
                    RFC3339 UTC chain block time of the fill; stable across
                    finality re-emissions.
                  x-parser-schema-id: <anonymous-schema-161>
              required:
                - rfq_id
                - quote_id
                - legs
                - maker_side
                - execution_price
                - price_basis
                - premium
                - maker_fee
                - writers
                - tx_signature
                - finality
                - filled_at
              x-parser-schema-id: MakerFillObject
          x-parser-schema-id: RfqMakerFillPush
        title: Fill
        description: Your fill landed on chain at `confirmed`.
        example: |-
          {
            "type": "fill",
            "fill": {
              "rfq_id": "0192f1a3b4c5d6e7f8091a2b3c4d5e6f",
              "quote_id": "<64 hex characters>",
              "legs": [
                {
                  "instrument": "BTC_USDC-2MAY26-77000-C",
                  "quantity": "1.000000",
                  "asset": 0,
                  "strike": "77000.000000",
                  "expiry": 1777708800,
                  "kind": "call"
                },
                {
                  "instrument": "BTC_USDC-2MAY26-80000-C",
                  "quantity": "-2.000000",
                  "asset": 0,
                  "strike": "80000.000000",
                  "expiry": 1777708800,
                  "kind": "call"
                }
              ],
              "maker_side": "sell",
              "execution_price": "500.000000",
              "price_basis": "package_total",
              "premium": "500.000000",
              "maker_fee": "0.000000",
              "writers": {
                "maker": true,
                "taker": true,
                "maker_short_legs": 1,
                "taker_short_legs": 1
              },
              "tx_signature": "<base58 transaction signature>",
              "finality": "confirmed",
              "filled_at": "2026-05-01T15:40:12.000Z"
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: fill
      - &ref_11
        id: finality
        contentType: application/json
        payload:
          - name: finality
            description: >-
              The same fill object with `finality` moved to `finalized`, or to
              `reverted` if the chain dropped the transaction; a reverted fill
              may re-land.
            type: object
            properties:
              - name: const
                type: string
                description: finality
                required: false
              - name: fill
                type: object
                description: >
                  The quoting maker's fill, carried by the `fill` push and
                  re-emitted

                  unchanged except for `finality` by the `finality` push.
                  Durable

                  history is `GET /api/query/rfq-fills?role=maker`.
                required: true
                properties:
                  - name: rfq_id
                    type: string
                    description: 16-byte RFQ id encoded as lowercase hexadecimal.
                    required: true
                  - name: quote_id
                    type: string
                    description: SHA-256 of the canonical 1,066-byte StrategyQuotePayload.
                    required: true
                  - name: legs
                    type: array
                    description: >-
                      Ordered strategy legs, in the taker's submitted order,
                      with resolved terms.
                    required: true
                    properties:
                      - name: instrument
                        type: string
                        description: Listed instrument symbol.
                        required: true
                      - name: quantity
                        type: string
                        description: >-
                          Non-zero signed 6dp contracts in taker-buy
                          orientation.
                        required: true
                      - name: asset
                        type: integer
                        description: Underlying id; 0 is BTC, 1 is ETH, 2 is SOL.
                        enumValues:
                          - 0
                          - 1
                          - 2
                        required: true
                      - name: strike
                        type: string
                        description: Strike in USDC, 6dp.
                        required: true
                      - name: expiry
                        type: integer
                        description: Instrument expiry as Unix seconds.
                        required: true
                      - name: kind
                        type: string
                        enumValues:
                          - call
                          - put
                        required: true
                  - name: maker_side
                    type: string
                    description: >-
                      The maker's side of the package; the opposite of the
                      taker's accepted side.
                    enumValues:
                      - buy
                      - sell
                    required: true
                  - name: execution_price
                    type: string
                    description: >-
                      The signed package total the fill executed at — the
                      quote's `ask` when the taker bought, its `bid` when the
                      taker sold. Never a per-leg or per-contract price.
                    required: true
                  - name: price_basis
                    type: string
                    description: >-
                      Always `package_total`; labels `execution_price` for the
                      whole submitted leg vector.
                    enumValues:
                      - package_total
                    required: true
                  - name: premium
                    type: string
                    description: >-
                      The accepted package total, identical to
                      `execution_price`; the quote's `ask` when the taker
                      bought, its `bid` when the taker sold, never negated. The
                      maker receives it when `maker_side` is `sell` and pays it
                      when `maker_side` is `buy`; a negative value reverses the
                      direction.
                    required: true
                  - name: maker_fee
                    type: string
                    description: >-
                      The maker's per-leg package trading fee settled on chain
                      with the fill.
                    required: true
                  - name: writers
                    type: object
                    required: true
                    properties:
                      - name: maker
                        type: boolean
                        required: true
                      - name: taker
                        type: boolean
                        required: true
                      - name: maker_short_legs
                        type: integer
                        required: true
                      - name: taker_short_legs
                        type: integer
                        required: true
                  - name: tx_signature
                    type: string
                    description: Solana base58 transaction signature.
                    required: true
                  - name: finality
                    type: string
                    enumValues:
                      - confirmed
                      - finalized
                      - reverted
                    required: true
                  - name: filled_at
                    type: string
                    description: >-
                      RFC3339 UTC chain block time of the fill; stable across
                      finality re-emissions.
                    required: true
        headers: []
        jsonPayloadSchema:
          type: object
          additionalProperties: false
          required:
            - type
            - fill
          properties:
            type:
              const: finality
              x-parser-schema-id: <anonymous-schema-162>
            fill: *ref_6
          x-parser-schema-id: RfqMakerFinalityPush
        title: Finality
        description: >-
          The same fill object with `finality` moved to `finalized`, or to
          `reverted` if the chain dropped the transaction; a reverted fill may
          re-land.
        example: |-
          {
            "type": "finality",
            "fill": {
              "rfq_id": "0192f1a3b4c5d6e7f8091a2b3c4d5e6f",
              "quote_id": "<64 hex characters>",
              "legs": [
                {
                  "instrument": "BTC_USDC-2MAY26-77000-C",
                  "quantity": "1.000000",
                  "asset": 0,
                  "strike": "77000.000000",
                  "expiry": 1777708800,
                  "kind": "call"
                },
                {
                  "instrument": "BTC_USDC-2MAY26-80000-C",
                  "quantity": "-2.000000",
                  "asset": 0,
                  "strike": "80000.000000",
                  "expiry": 1777708800,
                  "kind": "call"
                }
              ],
              "maker_side": "sell",
              "execution_price": "500.000000",
              "price_basis": "package_total",
              "premium": "500.000000",
              "maker_fee": "0.000000",
              "writers": {
                "maker": true,
                "taker": true,
                "maker_short_legs": 1,
                "taker_short_legs": 1
              },
              "tx_signature": "<base58 transaction signature>",
              "finality": "finalized",
              "filled_at": "2026-05-01T15:40:12.000Z"
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: finality
    bindings: []
    extensions:
      - id: x-parser-unique-object-id
        value: rfq_maker
sendOperations: []
receiveOperations:
  - *ref_7
sendMessages: []
receiveMessages:
  - *ref_8
  - *ref_9
  - *ref_10
  - *ref_11
extensions:
  - id: x-parser-unique-object-id
    value: rfq_maker
securitySchemes: []

````

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