Skip to main content
POST
/
v1
/
query
/
init-withdraw-otp
Initiate a withdrawal
curl --request POST \
  --url https://api.byzantine.fi/v1/query/init-withdraw-otp \
  --header 'Content-Type: application/json' \
  --header 'X-Pubkey: <api-key>' \
  --header 'X-Signature: <x-signature>' \
  --header 'X-Timestamp: <x-timestamp>' \
  --data '{
  "accountId": "550e8400-e29b-41d4-a716-446655440000",
  "vaultAddr": "0x1234567890abcdef",
  "amount": "123.456789",
  "destinationCurrency": "usd",
  "bank_account_id": "550e8400-e29b-41d4-a716-446655440000"
}'
{
  "accountId": "550e8400-e29b-41d4-a716-446655440000",
  "transactionType": "deposit",
  "vaultAddr": "0x1234567890abcdef",
  "amount": "750.25",
  "transaction_id": "550e8400-e29b-41d4-a716-446655440000"
}

Authorizations

X-Pubkey
string
header
required

Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd

Headers

X-Timestamp
string
required

Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826

X-Signature
string
required

ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: {timestamp}{METHOD}{path_and_query}{json_body}. Example: 0x3045022100...

Query Parameters

chain_id
integer
required

Chain ID (1 for Ethereum, 8453 for Base)

Required range: x >= 0

Body

application/json
accountId
string<uuid>
required

A UUID string

Example:

"550e8400-e29b-41d4-a716-446655440000"

vaultAddr
string
required

The address of the vault to withdraw from.

Example:

"0x1234567890abcdef"

amount
string
required

A high-precision decimal number represented as a string

Example:

"123.456789"

destinationCurrency
enum<string>
required
Available options:
usd,
eur,
usdc,
eurc
bank_account_id
string<uuid>

A UUID string

Example:

"550e8400-e29b-41d4-a716-446655440000"

Response

Transaction created successfully

accountId
string<uuid>
required

A UUID string

Example:

"550e8400-e29b-41d4-a716-446655440000"

transactionType
enum<string>
required

Type of transaction that is being submitted.

Available options:
approve,
deposit,
withdraw
Example:

"deposit"

vaultAddr
string
required

The address of the vault.

Example:

"0x1234567890abcdef"

transaction_id
string<uuid>
required

A UUID string

Example:

"550e8400-e29b-41d4-a716-446655440000"

amount
string | null

Amount to deposit.

Example:

"750.25"