---
title: "Create block trade offer"
method: POST
path: "/block-trades/{block_trade_id}/offers"
tags: ["BlockTrades"]
---

# Create block trade offer

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

Create a sub-block offer for an existing block trade.

Required signers submit their order details and pricing for
markets defined in the parent block trade.

**Requirements:**
- Account must be listed as required signer with active onboarding
- Valid order signatures for all markets
- Orders must match parent block trade constraints

**Includes:**
- Individual order signatures per market
- Block trade execution signature with expiration
- Proper nonce and signature verification data

Returns the created offer with unique ID, parent reference, and order details.

## Path parameters

- `block_trade_id` string, required

## Request body

- RequestsBlockOfferRequest
  - `nonce` string, required — Unique nonce for this offer request
  - `offering_account` string, required — Starknet address of the account making this offer
  - `signature` ResponsesBlockTradeSignature, required
    - `nonce` string, required — Unique nonce to prevent replay attacks
    - `signature_data` string, required — Order signature in as a string "[r,s]" signed by account's paradex private key
    - `signature_expiration` integer, required — Unix timestamp in milliseconds when signature expires
    - `signature_timestamp` integer, required — Unix timestamp in milliseconds when signature was created
    - `signature_type` 'STARKNET', required — Type of cryptographic signature used
    - `signer_account` string, required — Paradex account address of the signer
    - `signer_public_key` string — Hex pubkey used to sign (main account key or active subkey). Empty defaults to account main key.
  - `trades` object, required — Map of market symbol to offer details

## Response `201`

Created

- 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
  - `failure_reason` string — Reason for failure (if status is FAILED)
  - `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' | 'PENDING_SETTLEMENT' | 'COMPLETED' | 'FAILED' | 'CANCELLED'
  - `trades` object — Map of market to trade details

## Other responses

- `400` — Bad Request
- `404` — Not Found

---

[API](https://skmtc.net/tradeparadex/apis/paradex-rest-api-2.md) · [All operations](https://skmtc.net/tradeparadex/apis/paradex-rest-api-2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tradeparadex/paradex-rest-api-2/versions/6a76453d754c/schema)
