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

# private/accept_block_proposal

> Accepts a block proposal and executes its block trade at once. The caller signs the taker side of private/execute_block_trade for its own subaccount, over the legs and prices of the proposal, in the opposite direction to the proposal's direction. Send proposal_id with the signed fields subaccount_id, nonce, signer, max_fee, signature_expiry_sec and signature. The params have no legs or direction: the exchange uses those of the proposal, so a side signed over other terms fails the signature check. The first valid accept wins. The block trade executes at the prices of the proposal, with no broker fee. Returns the proposal with status executed and its block_trade_id. A failed accept leaves the proposal open, unless the maker side can no longer execute. The proposal is then cancelled, and the accept fails with block_proposal_not_open (11118). The error of a failed accept has no details, so it shows nothing about the maker. The caller can check its own side with private/verify_block_trade. If the outcome of the block trade is not known, the proposal stays executing until it expires, and private/get_block_trades shows whether the block trade executed. Fails with block_proposal_not_found (11117) if no proposal has that id, or if the proposal has a recipient_wallet that is not the caller's wallet. Fails with block_proposal_not_open (11118) if the proposal is not open: it executed, was cancelled or declined, expired, or another accept is in progress. Fails with block_trade_same_owner (11115) if the caller's wallet made the proposal, and with block_trade_outside_price_band (11123) if the total cost is now outside the price band. Requires the block_trade off-chain scope. A session key that signs the side needs block_trade and an RFQ trade scope for every instrument in the legs.



## OpenAPI

````yaml /openapi.json post /private/accept_block_proposal
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: Liquidations
    description: >-
      Open a Dutch auction against a breaching subaccount, quote the auctions
      running right now, bid on them, and review past ones.
  - 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: Onchain Actions
    description: >-
      L1 onchain actions submitted via OnchainActionManager: register deposit
      addresses, list pending deposits, and inspect onchain action history.
  - name: System
    description: Rate limits, transaction lookups, and live incidents.
  - name: Market Data
    description: Instruments, currencies, tickers, and market-wide feeds.
  - name: Maker Scoring
    description: Maker programs, score breakdowns, and detailed scoring snapshots.
  - name: Referrals
    description: Referral codes and program performance.
  - name: Chat
    description: Anonymous chat rooms and conversations with the concierge.
  - name: Other
    description: Uncategorized.
paths:
  /private/accept_block_proposal:
    post:
      tags:
        - RFQ
      summary: private/accept_block_proposal
      description: >-
        Accepts a block proposal and executes its block trade at once. The
        caller signs the taker side of private/execute_block_trade for its own
        subaccount, over the legs and prices of the proposal, in the opposite
        direction to the proposal's direction. Send proposal_id with the signed
        fields subaccount_id, nonce, signer, max_fee, signature_expiry_sec and
        signature. The params have no legs or direction: the exchange uses those
        of the proposal, so a side signed over other terms fails the signature
        check. The first valid accept wins. The block trade executes at the
        prices of the proposal, with no broker fee. Returns the proposal with
        status executed and its block_trade_id. A failed accept leaves the
        proposal open, unless the maker side can no longer execute. The proposal
        is then cancelled, and the accept fails with block_proposal_not_open
        (11118). The error of a failed accept has no details, so it shows
        nothing about the maker. The caller can check its own side with
        private/verify_block_trade. If the outcome of the block trade is not
        known, the proposal stays executing until it expires, and
        private/get_block_trades shows whether the block trade executed. Fails
        with block_proposal_not_found (11117) if no proposal has that id, or if
        the proposal has a recipient_wallet that is not the caller's wallet.
        Fails with block_proposal_not_open (11118) if the proposal is not open:
        it executed, was cancelled or declined, expired, or another accept is in
        progress. Fails with block_trade_same_owner (11115) if the caller's
        wallet made the proposal, and with block_trade_outside_price_band
        (11123) if the total cost is now outside the price band. Requires the
        block_trade off-chain scope. A session key that signs the side needs
        block_trade and an RFQ trade scope for every instrument in the legs.
      operationId: private_accept_block_proposal
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AcceptBlockProposalRequest'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockProposalResultPublic'
        default:
          description: JSON-RPC error (see Error Codes)
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    $ref: '#/components/schemas/RPCError'
      security:
        - DeriveWallet: []
          DeriveTimestamp: []
          DeriveSignature: []
components:
  schemas:
    AcceptBlockProposalRequest:
      description: >-
        The caller's taker side, signed as for `private/execute_block_trade`
        over the legs of the proposal, in the opposite direction.
      type: object
      required:
        - max_fee
        - nonce
        - proposal_id
        - signature
        - signature_expiry_sec
        - signer
        - subaccount_id
      properties:
        max_fee:
          description: Highest total fee this side pays, in USD.
          type: string
          format: decimal
        nonce:
          type: string
        proposal_id:
          description: UUID v4 string
          type: string
          format: uuid
        signature:
          type: string
        signature_expiry_sec:
          type: integer
          format: int64
        signer:
          $ref: '#/components/schemas/Address'
        subaccount_id:
          type: integer
          format: int64
    BlockProposalResultPublic:
      description: A block proposal as every other wallet sees it.
      type: object
      required:
        - block_trade_id
        - creation_timestamp
        - currency
        - direction
        - expires_at_sec
        - last_update_timestamp
        - legs
        - listed
        - proposal_id
        - risk_universe_id
        - status
      properties:
        block_trade_id:
          description: The block trade, once the proposal executes.
          type:
            - string
            - 'null'
          format: uuid
        creation_timestamp:
          type: integer
          format: int64
        currency:
          type: string
        direction:
          $ref: '#/components/schemas/Direction'
          description: The maker's direction. The taker trades the opposite.
        expires_at_sec:
          description: The last second (UTC) at which the proposal can be accepted.
          type: integer
          format: int64
        last_update_timestamp:
          type: integer
          format: int64
        legs:
          type: array
          items:
            $ref: '#/components/schemas/PricedLegParamsAndResponse'
        listed:
          description: Whether the proposal is on the public list.
          type: boolean
        proposal_id:
          description: UUID v4 string
          type: string
          format: uuid
        risk_universe_id:
          type: integer
          format: uint32
          minimum: 0
        status:
          $ref: '#/components/schemas/BlockProposalStatus'
    RPCError:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: integer
          format: int64
        data:
          type:
            - string
            - 'null'
        message:
          type: string
    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
    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
    BlockProposalStatus:
      oneOf:
        - type: string
          enum:
            - open
            - executing
            - executed
            - expired
        - description: By the maker.
          type: string
          enum:
            - cancelled
        - description: By the recipient.
          type: string
          enum:
            - declined
  securitySchemes:
    DeriveWallet:
      type: apiKey
      in: header
      name: X-DeriveWallet
      description: The wallet the request acts for.
    DeriveTimestamp:
      type: apiKey
      in: header
      name: X-DeriveTimestamp
      description: The current time in milliseconds, as a decimal string.
    DeriveSignature:
      type: apiKey
      in: header
      name: X-DeriveSignature
      description: >-
        EIP-191 signature of the timestamp, by the wallet or one of its session
        keys.

````

## Related topics

- [private/send_block_proposal](https://docs.derive.xyz/api-reference/rfq/privatesend_block_proposal.md)
- [public/get_block_proposals](https://docs.derive.xyz/api-reference/rfq/publicget_block_proposals.md)
- [RFQ Trading](https://docs.derive.xyz/trading/rfq.md)


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