v1
latestOpenAPI 3.0.12026-08-061638881007.6 KBInitiate a withdrawal from a tenant to an external destination address
Validates balance, reserves funds, dry-runs a CreateTransactionOrder intent on Custody, and returns an unsigned intent payload. The frontend signs the payload and submits it directly to Custody POST /v1/intents. The backend tracks confirmation asynchronously via a Temporal workflow keyed by the generated transactionOrderId.
Path parameters
Headers
Required. A client-chosen key that makes this withdrawal idempotent; reuse the exact same value on every retry of the same withdrawal. A missing header is rejected with 400, as is a blank value. The operationId is derived deterministically from (domainId, omnibusId, tenantId, key), so reusing the key for a different payload (amount/ticker/ledger/destAddress) returns 409, and different source tenants may reuse the same key without collision. A retry with the same key returns the original operation and its unsigned intent (or status only once terminal) instead of reserving funds and starting a second workflow.
Request body
Response
Withdrawal initiated or idempotent replay. Fresh create: reservation taken and unsigned intent returned. Pending replay (same key, still in progress): original operation and its unsigned intent returned, no new reservation. Terminal replay (operation already COMPLETED/FAILED/CANCELLED): operation status only, no unsigned intent and no reservation.