⌂›API reference›Transfers
Create a transfer
Creates an outbound transfer from a vault. The transfer is evaluated against the enforced policy, waits for its approval quorum and is signed inside the attested enclave once released.
POST/v1/transfers
Every transfer carries an idempotency key. Retrying with the same key returns the transfer already created instead of creating a second one, so a client can retry safely after a timeout.
The policy decides how many approvals a transfer needs from the value band it falls in. Small transfers can be released automatically; larger bands require more approvers or a time lock before signing.
Note
Approvers review the transfer on the trusted approval screen and sign the verified digest with their security key; the API never accepts an approval without that signature.
Parameters
| Name | Type | Description |
|---|---|---|
| vault | integer | Index of the vault the funds leave. |
| asset | string | Chain and asset reference, e.g. evm:1:native. |
| destination | string | Receiving address, checked against the address book. |
| amount | string | Amount in the asset's base units. |
| external_ref | string | Your own reference, echoed in webhooks. |
Request
curl
curl -X POST https://api.custody.example/v1/transfers \
-H "Authorization: Bearer $TOKEN" \
-H "Idempotency-Key: 7f3c9a2e-1b44-4c1e-9d0a" \
-d '{
"vault": 12,
"asset": "evm:1:native",
"destination": "0x9a8b…b7c6d5",
"amount": "2500000000000000000"
}'Response
201 Created
{
"id": "08f3eaf6-035c-48c5-b25a",
"state": "PENDING_APPROVAL",
"required_approvals": 2,
"approvals": [],
"created_at": "2026-10-15T08:04:00Z"
}Previous
« List transfers
Next
Get a transfer »