---
title: "Execute individual offer"
method: POST
path: "/block-trades/{block_trade_id}/offers/{offer_id}/execute"
tags: ["BlockTrades"]
---

# Execute individual offer

`POST /block-trades/{block_trade_id}/offers/{offer_id}/execute`

## Request

- Base URL: `https://api.testnet.paradex.trade/v1`
- URL: `https://api.testnet.paradex.trade/v1/block-trades/{block_trade_id}/offers/{offer_id}/execute`
- Auth: API key in header `Authorization`

Execute a specific offer independently of the parent block trade.

Executes an individual offer without waiting for full block trade execution.

**Requirements:**
- Called by authorized account (initiator, offering account, or required signer)
- Valid signatures from all required parties
- Unexpired signatures and executable offer state

**Independent Execution:**
- Processes only the specific offer's trades
- Does not require other offers to be ready
- Executes all trades in the offer together

**Returns:** Executed offer with status, fill details, timestamps, and updated balances.

## Path parameters

- `block_trade_id` string, required
- `offer_id` string, required

## Request body

- RequestsBlockExecuteRequest
  - `execution_nonce` string, required: Unique nonce for this execution request
  - `selected_offers` string[]: Array of offer IDs selected for execution (offers are atomic, not partial)
  - `signatures` object, required: Map of offer IDs to initiator signatures accepting each offer. Block id if it is a direct block trade.

## Response `200`

OK

- ResponsesBlockTradeDetailFullResponse
  - `block_expiration` integer: Unix timestamp in milliseconds when block expires
  - `block_id` string: Backend-generated unique identifier
  - `block_type` 'DIRECT' | 'OFFER_BASED'
  - `created_at` integer: When block was created
  - `initiator` string: Account that initiated this block trade
  - `last_updated_at` integer: When block was last updated
  - `nonce` string: Original block nonce
  - `parent_block_id` string: Parent block ID (if offer-based)
  - `required_signers` string[]: List of accounts that can participate in the block trade
  - `signatures` object: Current signatures on this block (for signature verification)
  - `status` 'CREATED' | 'OFFER_COLLECTION' | 'READY_TO_EXECUTE' | 'EXECUTING' | 'COMPLETED' | 'FAILED' | 'CANCELLED'
  - `trades` object: Map of market to trade details

## Other responses

- `400`: Bad Request

## Changes

- **2025-12-24** `e0dd7ef9404f`: 1 breaking, 2 info
  - added required request body
  - added the media type `application/json` for the response with the status `200`
  - added the media type `application/json` for the response with the status `400`

[Operation history](https://skmtc.dev/tradeparadex/apis/paradex-rest-api/changes/block-trades/:block_trade_id/offers/:offer_id/execute/post.md)

---

[API](https://skmtc.dev/tradeparadex/apis/paradex-rest-api.md) - [All operations](https://skmtc.dev/tradeparadex/apis/paradex-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/tradeparadex/apis/paradex-rest-api/revisions/26dce0f96ab2?raw)
