Submit signatures for a pending self-custody withdrawal
appIdbearerAuthx-app-id<token>Your application ID. Required on app-tier and user-tier routes. Omitted on routes that authenticate with x-app-api-key only.
AuthorizationBearer <JWT>JWT access token from POST /auth/verify. Required with x-app-id on user routes. On the smart-route quote it is optional and turns a preview into an executable quote.
withdrawalId*stringapplication/json- body
signatures*array<>1 <= items <= 32200
application/json- response
withdrawalId*stringWithdrawal id. Poll it on the status endpoint.
status*stringWithdrawal status. pending: accepted, not started (the submit response always returns this). bridging: moving funds across chains. transferring: same-chain transfer in progress. Terminal: completed, partial (some sources delivered; see completedAmountRaw), failed.
"pending""bridging""transferring""completed""partial""failed"requested*What is being withdrawn.
completedAmountRaw*stringEstimated total delivered by the completed parts. null until the withdrawal is terminal. Integer string in the destination token's atomic units (6 decimals, so 1000000 = 1 USDC; 18 decimals on BNB Chain).
destination*Where the funds are delivered.
legs*array<>Transfers that make up the withdrawal.
expected*Quote for the withdrawal. null fields unless pricingStatus is quoted.
pricingStatus*stringFee quote state. quoted: expected holds a current quote. unquoted / quoting: no quote yet. unviable: at least one source is too small to cover its fees.
"unquoted""quoting""quoted""unviable"errorMessage*stringWhy the withdrawal failed or only partly completed. null otherwise, and always null on the submit response (errors there are returned as HTTP errors).
sources*array<>Balances the withdrawal is funded from.
pendingSignatures?array<>Self-custody only: requests the signing wallet must answer before the withdrawal continues. Absent for managed custody. Answer them on POST /execution/withdrawals/{withdrawalId}/signatures.
curl -X POST 'https://api.t.sufwankhalid.com/execution/withdrawals/string/signatures' \ -H 'Content-Type: application/json' \ -d '{ "signatures": [ { "stepId": "string" } ]}'{ "withdrawalId": "string", "status": "pending", "requested": { "tokenSymbol": "USDC", "amountRaw": "string" }, "completedAmountRaw": "string", "destination": { "chainId": 1, "address": "string", "tokenSymbol": "USDC" }, "legs": [ { "type": "transfer", "status": "planned", "sourceChainId": 0, "destChainId": 0, "amountRaw": "string", "txHash": "string", "bridgeOperationId": "string", "sourceTokenSymbol": "string", "errorMessage": "string" } ], "expected": { "outputRaw": "string", "feeRaw": "string", "etaSeconds": 0 }, "pricingStatus": "unquoted", "errorMessage": "string", "sources": [ { "sourceId": "string", "chainId": 0, "tokenSymbol": "USDC", "tokenAddress": "string", "decimals": 0, "amountRaw": "string", "custodyKind": "DEPOSIT_WALLET", "venue": "kalshi", "sourceVenueAccountId": "string", "sourceExternalAccountId": "string", "status": "pending", "txHash": "string", "bridgeOperationId": "string", "pendingReason": "awaiting_venue_submission" } ], "pendingSignatures": [ { "stepId": "string", "type": "eip712", "venue": "string", "signerAddress": "string", "chainId": 0, "payload": null, "expiresAt": "string", "purpose": "string", "optional": true } ]}