> ## 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.

# Create a request for quote (RFQ)

> Taker-side call that opens a new RFQ for a multi-leg structure on a subaccount, inviting makers to quote it. You supply the legs (instrument, amount, and direction per leg) plus optional limits such as min/max total cost, a partial-fill step, a label, and a list of specific counterparties to restrict who can see it. Returns the created RFQ including its assigned id and validity window. Requires trade scope for every instrument in the legs.



## OpenAPI

````yaml /openapi.json post /private/send_rfq
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/send_rfq:
    post:
      tags:
        - RFQ
      summary: Create a request for quote (RFQ)
      description: >-
        Taker-side call that opens a new RFQ for a multi-leg structure on a
        subaccount, inviting makers to quote it. You supply the legs
        (instrument, amount, and direction per leg) plus optional limits such as
        min/max total cost, a partial-fill step, a label, and a list of specific
        counterparties to restrict who can see it. Returns the created RFQ
        including its assigned id and validity window. Requires trade scope for
        every instrument in the legs.
      operationId: private_send_rfq
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendRfqRequest'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Rfq'
        default:
          description: JSON-RPC error (see Error Codes)
components:
  schemas:
    SendRfqRequest:
      type: object
      required:
        - legs
        - subaccount_id
      properties:
        client:
          default: ''
          type: string
        counterparties:
          default: null
          type:
            - array
            - 'null'
          items:
            type: string
        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
          default: '0'
          type: string
          format: decimal
        label:
          default: ''
          type: string
        legs: true
        max_total_cost:
          description: >-
            Optional decimal string of the human value (e.g. `"1.5"`), up to 12
            fractional digits, or null; a string or JSON number is accepted
          default: null
          type:
            - string
            - 'null'
          format: decimal
        min_total_cost:
          description: >-
            Optional decimal string of the human value (e.g. `"1.5"`), up to 12
            fractional digits, or null; a string or JSON number is accepted
          default: null
          type:
            - string
            - 'null'
          format: decimal
        partial_fill_step:
          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
          default: '1'
          type: string
          format: decimal
        referral_code:
          default: ''
          type: string
        subaccount_id:
          type: integer
          format: uint64
          minimum: 0
    Rfq:
      type: object
      required:
        - ask_total_cost
        - bid_total_cost
        - cancel_reason
        - creation_timestamp
        - filled_pct
        - label
        - last_update_timestamp
        - legs
        - mark_total_cost
        - max_total_cost
        - min_total_cost
        - partial_fill_step
        - rfq_id
        - status
        - subaccount_id
        - total_cost
        - valid_until
        - wallet
      properties:
        ask_total_cost:
          description: >-
            Optional decimal string of the human value (e.g. `"1.5"`), up to 12
            fractional digits, or null; a string or JSON number is accepted
          type:
            - string
            - 'null'
          format: decimal
        bid_total_cost:
          description: >-
            Optional decimal string of the human value (e.g. `"1.5"`), up to 12
            fractional digits, or null; a string or JSON number is accepted
          type:
            - string
            - 'null'
          format: decimal
        cancel_reason:
          $ref: '#/components/schemas/RFQCancelReason'
        counterparties:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Address'
        creation_timestamp:
          type: integer
          format: int64
        filled_direction:
          anyOf:
            - $ref: '#/components/schemas/Direction'
            - type: 'null'
        filled_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
        label:
          type: string
        last_update_timestamp:
          type: integer
          format: int64
        legs:
          type: array
          items:
            $ref: '#/components/schemas/LegUnpricedParams'
        mark_total_cost:
          description: >-
            Optional decimal string of the human value (e.g. `"1.5"`), up to 12
            fractional digits, or null; a string or JSON number is accepted
          type:
            - string
            - 'null'
          format: decimal
        max_total_cost:
          description: >-
            Optional decimal string of the human value (e.g. `"1.5"`), up to 12
            fractional digits, or null; a string or JSON number is accepted
          type:
            - string
            - 'null'
          format: decimal
        min_total_cost:
          description: >-
            Optional decimal string of the human value (e.g. `"1.5"`), up to 12
            fractional digits, or null; a string or JSON number is accepted
          type:
            - string
            - 'null'
          format: decimal
        partial_fill_step:
          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
        rfq_id:
          description: UUID v4 string
          type: string
          format: uuid
        status:
          $ref: '#/components/schemas/RFQStatus'
        subaccount_id:
          type: integer
          format: int64
        total_cost:
          description: >-
            Optional decimal string of the human value (e.g. `"1.5"`), up to 12
            fractional digits, or null; a string or JSON number is accepted
          type:
            - string
            - 'null'
          format: decimal
        valid_until:
          type: integer
          format: int64
        wallet:
          $ref: '#/components/schemas/Address'
    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
    Address:
      description: 20-byte Ethereum address as a 0x-prefixed lowercase hex string.
      type: string
      maxLength: 42
      minLength: 42
      pattern: ^0x[0-9a-fA-F]{40}$
    Direction:
      type: string
      enum:
        - buy
        - sell
    LegUnpricedParams:
      type: object
      required:
        - amount
        - direction
        - instrument_name
      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
    RFQStatus:
      type: string
      enum:
        - open
        - filled
        - cancelled
        - expired

````

## Related topics

- [RFQ Trading](/trading/rfq.md)
- [Cancel and resubmit a maker quote atomically](/api-reference/rfq/cancel-and-resubmit-a-maker-quote-atomically.md)
- [Wallet rfqs](/api-reference/channels/walletrfqs.md)
