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

# Execute a maker quote to fill an RFQ

> Taker-side call that accepts a specific maker quote and settles the trade atomically. You reference the rfq_id and quote_id and supply the taker's priced legs, direction, max fee, and EIP-712 signature (signer, signature, nonce, expiry), with an optional taker-protection flag. The signature is verified and the taker fill, maker quote, and RFQ are updated together in one atomic step. Requires trade scope for every instrument in the legs.



## OpenAPI

````yaml /openapi.json post /private/execute_quote
openapi: 3.1.0
info:
  title: Derive v3 API
  version: 0.2.0
  description: JSON-RPC 2.0 methods, served over WebSocket and HTTP POST.
servers:
  - url: https://api.derive.xyz/v3
    description: Production (HTTP POST base)
  - url: https://testnet.api.derive.xyz/v3
    description: Testnet (HTTP POST base)
security: []
tags:
  - name: Subaccounts
    description: >-
      List, inspect, and label subaccounts, portfolios, positions, and
      collateral.
  - name: Session Keys
    description: Register, edit, and list delegated signing keys.
  - name: Account
    description: Wallet-level account information and settings.
  - name: Orderbook
    description: Place, replace, cancel, and query orders, trigger orders, and algos.
  - name: RFQ
    description: 'Request-for-quote: send RFQs, quote, and execute block trades.'
  - name: Vault Shareholders
    description: >-
      Deposit into and withdraw from vaults, and track shares, requests, and
      performance.
  - name: Vault Curators
    description: >-
      Create and operate curated vaults: settle deposit and withdrawal requests,
      and manage vault metadata.
  - name: History
    description: >-
      Per-account historical records: orders, trades, transfers, and
      settlements.
  - name: Market Maker Protection
    description: Configure, read, and reset market-maker protection.
  - name: Transfers & Withdrawals
    description: Move collateral between subaccounts, to other wallets, and on-chain.
  - name: System
    description: Rate limits and transaction lookups.
  - name: Market Data
    description: Instruments, currencies, tickers, and market-wide feeds.
  - name: Referrals
    description: Referral codes and program performance.
  - name: Other
    description: Uncategorized.
paths:
  /private/execute_quote:
    post:
      tags:
        - RFQ
      summary: Execute a maker quote to fill an RFQ
      description: >-
        Taker-side call that accepts a specific maker quote and settles the
        trade atomically. You reference the rfq_id and quote_id and supply the
        taker's priced legs, direction, max fee, and EIP-712 signature (signer,
        signature, nonce, expiry), with an optional taker-protection flag. The
        signature is verified and the taker fill, maker quote, and RFQ are
        updated together in one atomic step. Requires trade scope for every
        instrument in the legs.
      operationId: private_execute_quote
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExecuteQuoteRequest'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteExecuteResponse'
        default:
          description: JSON-RPC error (see Error Codes)
components:
  schemas:
    ExecuteQuoteRequest:
      type: object
      required:
        - direction
        - legs
        - max_fee
        - nonce
        - quote_id
        - rfq_id
        - signature
        - signature_expiry_sec
        - signer
        - subaccount_id
      properties:
        client:
          default: ''
          type: string
        direction: true
        enable_taker_protection:
          default: false
          type: boolean
        label:
          default: ''
          type: string
        legs: true
        max_fee:
          description: >-
            Non-negative decimal string of the human value (e.g. `"1.5"`), up to
            12 fractional digits; a string or JSON number is accepted
          type: string
          format: decimal
        nonce: true
        quote_id:
          description: UUID v4 string
          type: string
          format: uuid
        referral_code:
          default: ''
          type: string
        rfq_id:
          description: UUID v4 string
          type: string
          format: uuid
        signature: true
        signature_expiry_sec: true
        signer: true
        subaccount_id:
          type: integer
          format: uint64
          minimum: 0
    QuoteExecuteResponse:
      type: object
      required:
        - cancel_reason
        - creation_timestamp
        - direction
        - extra_fee
        - fee
        - fill_pct
        - is_transfer
        - label
        - last_update_timestamp
        - legs
        - legs_hash
        - liquidity_role
        - max_fee
        - mmp
        - nonce
        - quote_id
        - rfq_filled_pct
        - rfq_id
        - signature_expiry_sec
        - status
        - subaccount_id
      properties:
        cancel_reason:
          $ref: '#/components/schemas/RFQCancelReason'
        creation_timestamp:
          type: integer
          format: int64
        direction:
          $ref: '#/components/schemas/Direction'
        extra_fee:
          description: >-
            Non-negative decimal string of the human value (e.g. `"1.5"`), up to
            12 fractional digits; a string or JSON number is accepted
          type: string
          format: decimal
        fee:
          description: >-
            Non-negative decimal string of the human value (e.g. `"1.5"`), up to
            12 fractional digits; a string or JSON number is accepted
          type: string
          format: decimal
        fill_pct:
          description: >-
            Non-negative decimal string of the human value (e.g. `"1.5"`), up to
            12 fractional digits; a string or JSON number is accepted
          type: string
          format: decimal
        is_transfer:
          type: boolean
        label:
          type: string
        last_update_timestamp:
          type: integer
          format: int64
        legs:
          type: array
          items:
            $ref: '#/components/schemas/PricedLegParamsAndResponse'
        legs_hash:
          type: string
        liquidity_role:
          $ref: '#/components/schemas/LiquidityRole'
        max_fee:
          description: >-
            Non-negative decimal string of the human value (e.g. `"1.5"`), up to
            12 fractional digits; a string or JSON number is accepted
          type: string
          format: decimal
        mmp:
          type: boolean
        nonce:
          type: string
        quote_id:
          description: UUID v4 string
          type: string
          format: uuid
        rfq_filled_pct:
          description: >-
            Cumulative fraction of the RFQ filled after this execution, as a
            decimal string (e.g. `"0.5"` = 50% filled).
          type: string
          format: decimal
        rfq_id:
          description: UUID v4 string
          type: string
          format: uuid
        signature_expiry_sec:
          type: integer
          format: int64
        status:
          $ref: '#/components/schemas/RFQStatus'
        subaccount_id:
          type: integer
          format: int64
    RFQCancelReason:
      type: string
      enum:
        - ''
        - user_request
        - insufficient_margin
        - signed_max_fee_too_low
        - mmp_trigger
        - cancel_on_disconnect
        - session_key_deregistered
        - subaccount_withdrawn
        - rfq_no_longer_open
        - compliance
    Direction:
      type: string
      enum:
        - buy
        - sell
    PricedLegParamsAndResponse:
      type: object
      required:
        - amount
        - direction
        - instrument_name
        - price
      properties:
        amount:
          description: >-
            Non-negative decimal string of the human value (e.g. `"1.5"`), up to
            12 fractional digits; a string or JSON number is accepted
          type: string
          format: decimal
        direction:
          $ref: '#/components/schemas/Direction'
        instrument_name:
          type: string
        price:
          description: >-
            Non-negative decimal string of the human value (e.g. `"1.5"`), up to
            12 fractional digits; a string or JSON number is accepted
          type: string
          format: decimal
    LiquidityRole:
      type: string
      enum:
        - maker
        - taker
    RFQStatus:
      type: string
      enum:
        - open
        - filled
        - cancelled
        - expired

````

## Related topics

- [Submit a maker quote for an RFQ](/api-reference/rfq/submit-a-maker-quote-for-an-rfq.md)
- [RFQ Trading](/trading/rfq.md)
- [Preview EIP-712 signing data for a quote execution](/api-reference/rfq/preview-eip-712-signing-data-for-a-quote-execution.md)
