Endpoint
Request Body
| Parameter | Type | Description |
|---|---|---|
action* | object | See below |
action.type* | string | Must be "withdraw" |
action.notionalChain* | string | Notional chain: "Mainnet" or "Testnet" |
action.signatureChainId* | string | EIP-712 chain ID (hex string), e.g., "0xa4b1" |
action.destination* | string | Destination wallet address (normalized to lowercase), e.g., "0x1234567890abcdef..." |
action.token* | string | Asset ID as 8-char hex string (no 0x prefix), e.g., "00012710" for USDC |
action.amount* | string | Amount to withdraw, e.g., "1000.0" |
action.source* | string | Source account: "balance" or "segregated" |
action.time* | number | Unix timestamp in milliseconds, e.g., 1701234567890 |
nonce* | number | Timestamp in milliseconds for replay protection, e.g., 1701234567890 |
signature* | object | See below |
signature.r* | string | First 32 bytes of signature (hex string), e.g., "0x1234..." |
signature.s* | string | Second 32 bytes of signature (hex string), e.g., "0x5678..." |
signature.v* | number | Recovery ID (27 or 28) |
Response
Response Fields
| Field | Type | Description |
|---|---|---|
success | boolean | true if withdrawal was committed to event store |
transactionId | string | Deterministic transaction ID (derived from signature hash) |
status | string | Always "pending" - actual execution happens asynchronously |
Example Request
Error Responses
Notes
- Withdrawals execute asynchronously, API returns
status: "pending"immediately - Transaction ID is deterministically derived from signature hash
sourcefield:"balance"or"segregated"tokenfield must be an 8-character hex AssetId (no0xprefix)