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

# Get an RFQ

> Get an RFQ.

 The authoritative status. A taker sees the current view and outcome; a
 maker sees its own latest quote and, once selected, its own selection.



## OpenAPI

````yaml /proto-openapi/api/openapi.yaml get /api/v1/rfqs/{rfqId}
openapi: 3.0.3
info:
  title: Monaco Protocol API
  description: REST API for the Monaco Protocol hybrid CLOB exchange.
  version: 1.0.0
servers:
  - url: https://apimonaco.xyz
    description: Production (Sei mainnet)
security: []
tags:
  - name: AccountsService
  - name: AnalyticsService
  - name: ApplicationsService
  - name: AuthService
  - name: BuildercodeRewardsService
  - name: ComplianceService
  - name: CopyTradingService
  - name: DelegatedAgentsService
  - name: FaucetService
  - name: FeesService
  - name: HealthService
  - name: ManagedMarketsService
    description: |-
      Wallet-authenticated maker assignments. The signed session must match both
       configured maker user and application. Owner IDs are process fences, never auth.
       Only wallet sessions are supported; delegated-agent sessions receive 403.
  - name: MarginAccountsService
    description: |-
      Current public isolated-margin semantics:
       - a user has one parent margin account per application scope
       - opening orders create or reuse isolated position buckets under that parent
       - parent account creation is handled internally by margin workflows
  - name: MarketService
  - name: OrderbookService
  - name: OrdersService
  - name: PositionsService
    description: |-
      Current public isolated-margin semantics:
       - positions link to a parent margin account and, when applicable, a bucket id
       - opening orders create or reuse isolated position buckets under the parent
       - users can open another isolated position by reusing the parent account with a different market bucket
  - name: PulseService
  - name: RfqService
  - name: SweeperService
  - name: TraderCodeService
  - name: TradesService
  - name: WithdrawalsService
paths:
  /api/v1/rfqs/{rfqId}:
    get:
      tags:
        - RfqService
        - RFQ
      summary: Get an RFQ
      description: |-
        Get an RFQ.

         The authoritative status. A taker sees the current view and outcome; a
         maker sees its own latest quote and, once selected, its own selection.
      operationId: get_rfq
      parameters:
        - name: rfqId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RfqStatus'
        '401':
          description: Authentication required
        '403':
          description: RFQ is not enabled for this account (RFQ_DISABLED)
        '404':
          description: RFQ not found
        '503':
          description: RFQ service unavailable; retry
      security:
        - monacoSignature: []
        - monacoHttpSignature: []
components:
  schemas:
    RfqStatus:
      type: object
      properties:
        terms:
          $ref: '#/components/schemas/RfqRequestTerms'
        state:
          type: string
          description: >-
            COLLECTING, LAST_LOOK, RISK_CLEARING, CONFIRMED, SETTLED, CANCELLED,
            EXPIRED or REJECTED
          nullable: true
        stateVersion:
          type: integer
          format: int64
          nullable: true
        acceptedSide:
          type: string
          description: BUY or SELL, once accepted
          nullable: true
        lastLookDeadlineAtMs:
          type: integer
          format: int64
          nullable: true
        view:
          $ref: '#/components/schemas/RfqView'
        ownQuote:
          $ref: '#/components/schemas/RfqQuoteVersion'
        ownSelection:
          $ref: '#/components/schemas/RfqMakerSelection'
        ownLatestVersion:
          type: integer
          description: The expected version for the caller's next quote or withdrawal
          format: int64
          nullable: true
        ownQuoteWithdrawn:
          type: boolean
          nullable: true
        outcome:
          $ref: '#/components/schemas/RfqOutcome'
        durableSequence:
          type: integer
          format: int64
          nullable: true
        ownFills:
          type: array
          items:
            $ref: '#/components/schemas/RfqMakerFill'
          description: >-
            Maker only: your own fills once the RFQ settled, never another
            maker's
          nullable: true
        acceptance:
          $ref: '#/components/schemas/RfqAcceptanceRecord'
      description: Authoritative RFQ status.
    RfqRequestTerms:
      type: object
      properties:
        rfqId:
          type: string
          description: RFQ UUID
          format: uuid
          nullable: true
        tradingPairId:
          type: string
          description: Trading pair UUID
          format: uuid
          nullable: true
        product:
          type: string
          description: SPOT or PERPETUAL
          nullable: true
        quantity:
          type: string
          description: Maximum base quantity; not a guaranteed fill
          nullable: true
        createdAtMs:
          type: integer
          description: Creation time, Unix milliseconds
          format: int64
          nullable: true
        deadlineAtMs:
          type: integer
          description: 'Request deadline, Unix milliseconds: no new quotes after it'
          format: int64
          nullable: true
        side:
          type: string
          description: >-
            The taker's side, BUY or SELL, for a one-way RFQ, shown to makers
            too; absent for a two-way RFQ
          nullable: true
        leverage:
          type: string
          description: 'Taker only: the leverage given on CreateRfq (perpetuals)'
          nullable: true
        marginMode:
          type: string
          description: 'Taker only: the margin mode given on CreateRfq (perpetuals)'
          nullable: true
        quoteSide:
          type: string
          description: >-
            The side makers quote on a one-way RFQ, the one that fills the
            taker: ASK (an offer) when the taker buys, BID when it sells; a
            quote on the other side is refused (RFQ_SIDE_NOT_REQUESTED). Absent
            for a two-way RFQ, where makers may quote either or both
          nullable: true
      description: The request as created.
    RfqView:
      type: object
      properties:
        viewVersion:
          type: integer
          description: The version to accept; a newer view refuses an older one
          format: int64
          nullable: true
        bid:
          $ref: '#/components/schemas/RfqSideView'
        ask:
          $ref: '#/components/schemas/RfqSideView'
        asOfMs:
          type: integer
          description: View time, Unix milliseconds
          format: int64
          nullable: true
        monacoFeeCbps:
          type: integer
          description: The taker's Monaco fee rate in this view, in centi-bps
          format: int32
          nullable: true
        builderFeeCbps:
          type: integer
          description: The taker's builder fee rate in this view, in centi-bps
          format: int32
          nullable: true
      description: The taker's current view of the quotes.
    RfqQuoteVersion:
      type: object
      properties:
        rfqId:
          type: string
          nullable: true
          format: uuid
        quoteId:
          type: string
          nullable: true
          format: uuid
        version:
          type: integer
          description: This version; name it to replace or withdraw
          format: int64
          nullable: true
        bid:
          $ref: '#/components/schemas/RfqQuoteTerms'
        ask:
          $ref: '#/components/schemas/RfqQuoteTerms'
        issuedAtMs:
          type: integer
          format: int64
          nullable: true
        validUntilMs:
          type: integer
          format: int64
          nullable: true
        leverage:
          type: string
          description: 'Perpetuals: the leverage the quote''s orders reserve with'
          nullable: true
        marginMode:
          type: string
          description: 'Perpetuals: ISOLATED or CROSS'
          nullable: true
        refusedSides:
          type: array
          items:
            $ref: '#/components/schemas/RfqRefusedSide'
          description: >-
            Quoted sides the venue refused. A quote reserves funds as a resting
            limit order does, each side on its own: the version holds only the
            funded sides, and a refused side on a replacement is withdrawn. When
            no side is funded the quote is refused instead
          nullable: true
      description: A quote version as its maker sees it.
    RfqMakerSelection:
      type: object
      properties:
        acceptanceId:
          type: string
          nullable: true
          format: uuid
        takerSide:
          type: string
          description: BUY or SELL
          nullable: true
        quoteId:
          type: string
          nullable: true
          format: uuid
        quoteVersion:
          type: integer
          format: int64
          nullable: true
        quantity:
          type: string
          nullable: true
        frozenTerms:
          $ref: '#/components/schemas/RfqQuoteTerms'
        lastLookDeadlineAtMs:
          type: integer
          format: int64
          nullable: true
        monacoFeeCbps:
          type: integer
          description: >-
            Your Monaco maker fee rate in centi-bps, frozen at acceptance;
            negative for a rebate
          format: int32
          nullable: true
        maxBuilderFeeCbps:
          type: integer
          description: >-
            The MOST your frontend's builder add-on charges on this fill, in
            centi-bps: the rate stored on your quote order. A fill charges this
            rate or nothing, never more; the receipt shows what was charged. An
            IMPROVE re-places the quote at the rate configured then. Absent when
            it could not be read
          format: int32
          nullable: true
        estimatedNet:
          type: string
          description: >-
            Estimated net at the selected quantity and frozen price, in the
            quote asset, at monacoFeeCbps plus the maximum builder add-on: the
            least you receive when selling, the most you pay when buying. Absent
            with maxBuilderFeeCbps
          nullable: true
      description: A selected maker's own part of an acceptance, for answering last look.
    RfqOutcome:
      type: object
      properties:
        executedQuantity:
          type: string
          nullable: true
        unfilledQuantity:
          type: string
          nullable: true
        vwap:
          type: string
          nullable: true
        fills:
          type: array
          items:
            $ref: '#/components/schemas/RfqFill'
          nullable: true
        allInVwap:
          type: string
          description: >-
            Your all-in VWAP: notional plus your whole fee for a buy, minus it
            for a sell, over the executed quantity. Empty when nothing filled
          nullable: true
        bookAtFill:
          $ref: '#/components/schemas/RfqBookComparison'
        bookAtFillFullSize:
          type: boolean
          description: >-
            Whether a fresh book snapshot filled the executed quantity then;
            absent when none was fresh
          nullable: true
      description: What an accepted RFQ executed.
    RfqMakerFill:
      type: object
      properties:
        executionId:
          type: string
          description: The trade id
          format: uuid
          nullable: true
        price:
          type: string
          nullable: true
        quantity:
          type: string
          nullable: true
        fee:
          type: string
          description: >-
            Your whole fee on this fill as charged: monacoFee plus builderFee;
            negative for a net rebate. Unset until trade history has the fill
          nullable: true
        monacoFee:
          type: string
          description: Your Monaco maker fee as charged; negative is a rebate
          nullable: true
        builderFee:
          type: string
          description: The builder add-on your frontend charged, as charged (0 when none)
          nullable: true
      description: One fill of the calling maker's quote.
    RfqAcceptanceRecord:
      type: object
      properties:
        viewVersion:
          type: integer
          description: The view version you accepted
          format: int64
          nullable: true
        acceptedAtMs:
          type: integer
          description: When you accepted, Unix milliseconds
          format: int64
          nullable: true
        vwap:
          type: string
          description: All-in VWAP shown for the accepted side, fees included
          nullable: true
        grossVwap:
          type: string
          description: VWAP shown before fees
          nullable: true
        availableQuantity:
          type: string
          description: Quantity the shown allocation filled
          nullable: true
        monacoFeeCbps:
          type: integer
          description: Your Monaco fee rate frozen at acceptance, in centi-bps
          format: int32
          nullable: true
        builderFeeCbps:
          type: integer
          description: Your builder fee rate frozen at acceptance, in centi-bps
          format: int32
          nullable: true
        book:
          $ref: '#/components/schemas/RfqBookComparison'
        bookFullSize:
          type: boolean
          description: >-
            Whether that snapshot filled the whole size; absent when no snapshot
            at most 500 ms old was held at acceptance
          nullable: true
      description: What your view showed on the accepted side when you accepted.
    RfqSideView:
      type: object
      properties:
        vwap:
          type: string
          description: All-in volume-weighted price of the allocation, fees included
          nullable: true
        availableQuantity:
          type: string
          description: Quantity the allocation fills
          nullable: true
        grossVwap:
          type: string
          description: VWAP before fees
          nullable: true
        estimatedMonacoFee:
          type: string
          description: Estimated Monaco taker fee on available_quantity, in the quote asset
          nullable: true
        estimatedBuilderFee:
          type: string
          description: Estimated builder fee on available_quantity, in the quote asset
          nullable: true
        estimatedTotalFee:
          type: string
          description: Estimated total taker fee on available_quantity, in the quote asset
          nullable: true
        book:
          $ref: '#/components/schemas/RfqBookComparison'
      description: One side of the taker's view.
    RfqQuoteTerms:
      required:
        - price
        - capacity
      type: object
      properties:
        price:
          example: '65000.5'
          type: string
          description: Price in quote units per base unit, exact decimal string
        capacity:
          example: '10'
          type: string
          description: Capacity in base units, exact decimal string
      additionalProperties: false
      description: A quote's price and capacity.
    RfqRefusedSide:
      type: object
      properties:
        side:
          type: string
          description: BID or ASK
          nullable: true
        code:
          type: string
          description: INSUFFICIENT_BALANCE or QUOTE_REJECTED
          nullable: true
        reason:
          type: string
          nullable: true
      description: A quoted side the venue refused; nothing is reserved for it.
    RfqFill:
      type: object
      properties:
        executionId:
          type: string
          nullable: true
        price:
          type: string
          nullable: true
        quantity:
          type: string
          nullable: true
        fee:
          type: string
          description: 'The taker''s whole fee on this fill: monacoFee plus builderFee'
          nullable: true
        monacoFee:
          type: string
          description: The Monaco part of fee
          nullable: true
        builderFee:
          type: string
          description: The builder part of fee
          nullable: true
      description: One fill of an executed RFQ.
    RfqBookComparison:
      type: object
      properties:
        vwap:
          type: string
          description: >-
            All-in book VWAP with the same fee rates as the view: cost per unit
            when buying, net proceeds per unit when selling
          nullable: true
        grossVwap:
          type: string
          description: Book VWAP before fees
          nullable: true
        asOfMs:
          type: integer
          description: When the book snapshot was read, Unix milliseconds
          format: int64
          nullable: true
        levels:
          type: integer
          description: Price levels the size walked
          format: uint32
          nullable: true
      description: The taker's requested size priced against the public order book.
  securitySchemes:
    monacoSignature:
      type: apiKey
      description: >-
        Ed25519 session-key request signing. Every authenticated request carries
        three headers: `X-Monaco-PublicKey` (64-char lowercase-hex session
        public key), `X-Monaco-Timestamp` (Unix milliseconds, within 30s of
        server time), and `X-Monaco-Signature` (hex ed25519 signature). The
        signature is over `METHOD\npath?query\ntimestamp_ms\nSHA256_hex(body)`,
        where the body hash is the SHA-256 of the empty byte string when there
        is no body. Obtain the session keypair from `POST
        /api/v1/auth/challenge` followed by `POST /api/v1/auth/verify`.
      name: X-Monaco-Signature
      in: header
    monacoHttpSignature:
      type: apiKey
      description: >-
        RFC 9421 Ed25519 session-key request signatures. Send Signature-Input,
        Signature, and Content-Digest together; never combine them with
        X-Monaco-* credentials. The monaco signature covers @method, @path,
        @query, and content-digest in that order, with created (Unix seconds
        within 30s of server time), keyid (registered lowercase-hex session
        public key), and alg=ed25519 parameters. Content-Digest uses RFC 9530
        sha-256 over the exact body bytes, including the empty body. Query
        coverage retains ordering and percent encoding. Timestamp freshness does
        not reject repeated identical requests; use endpoint idempotency where
        supported. Existing legacy signing remains supported during server-first
        migration; SDK RFC 9421 signing is opt-in. See
        https://docs.0xmonaco.com/reference/http-message-signatures for the
        complete profile and trust model.
      name: Signature
      in: header

````

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