VXIL
Wallet

Transfer

Execute a transfer from the bot embedded wallet

When to use this

Send SOL or token value directly from the bot wallet.

Endpoint

POST /api/bot/v1/wallet/transfers

Auth

Authorization: Bot YOUR_BOT_TOKEN

Request Body

FieldTypeRequiredNotes
to_addressstringYesRecipient wallet address
asset`"SOL"string`Yes
amountstringYesDecimal amount
memostringNoOptional annotation
idempotency_keystringNoRetry-safe transfer intent

Response

FieldTypeDescription
transfer_idstringInternal transfer ID
status`"submitted""confirmed"
signaturestringChain transaction signature

Errors

StatusReason
400Invalid transfer payload
401Invalid token
402Insufficient balance
403Wallet transfer scope disabled
429Rate limited

cURL

curl -X POST https://api.vxil.io/api/bot/v1/wallet/transfers \
  -H "Authorization: Bot YOUR_BOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "to_address": "8a5...xyz",
    "asset": "SOL",
    "amount": "0.25"
  }'

TypeScript

await fetch("https://api.vxil.io/api/bot/v1/wallet/transfers", {
  method: "POST",
  headers: {
    "Authorization": `Bot ${process.env.VXIL_BOT_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    to_address: "8a5...xyz",
    asset: "SOL",
    amount: "0.25",
  }),
});

Retry and idempotency

Always retry with the same idempotency_key after network failures to prevent duplicate transfers.

On this page