Transfer
/wallet/transferParameters (Kit SDK)
When using @sonabuild/kit, you only provide these parameters. The SDK automatically handles context (wallet, origin) and encryption.
recipientstringrequiredRecipient wallet address
amountnumberrequiredAmount to transfer (in token units, not lamports)
mintstringToken mint address (omit for SOL transfers)
symbolstringToken symbol (e.g., "USDC", "SOL")
memostringOptional memo (max 566 characters)
Full Request Schema (Direct API)
If calling the API directly (without Kit), send this complete structure. The Kit SDK constructs this automatically from your params.
encryptedstringrequiredSealed box encrypted payload
hintobjectrequiredPlaintext hint for hint verification
contextobjectrequiredwalletstringrequiredUser wallet public key
originstringrequiredRequest origin URL
paramsobjectrequiredrecipientstringrequiredRecipient wallet address
amountnumberrequiredAmount to transfer (in token units, not lamports)
mintstringToken mint address (omit for SOL transfers)
symbolstringToken symbol (e.g., "USDC", "SOL")
memostringOptional memo (max 566 characters)
includeAttestationbooleanWhether to include attestation in response
Response Schema
All responses follow this structure. The data field contains operation-specific results (see example response →).
successbooleanrequiredtransactionstringBase64 encoded signed transaction
attestationobjectsignaturestringrequiredAttestation signature
docstringNSM attestation document (base64, includes PCR measurements)
metadataobjectprotocolstringrequiredoperationstringrequiredtimestampnumberrequireddataobjecttransferobjectrequiredfromstringrequiredSolana wallet or account address (Base58)
tostringrequiredSolana wallet or account address (Base58)
amountstringrequiredAmount transferred in lamports
mintstringSolana wallet or account address (Base58)
symbolstringrequirederrorstring | null# Attested operations require encrypted payloads
# Use @sonabuild/kit SDK to handle encryption automatically
curl -X POST https://api.sona.build/wallet/transfer \
-H "Content-Type: application/json" \
-d '{
"encrypted": "base64_encrypted_payload_from_kit",
"hint": {
"context": {
"wallet": "YourWalletPublicKey",
"origin": "https://your-app.com"
},
"params": {
"recipient": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
"amount": 100000000
}
},
"includeAttestation": true
}'Example Response
{
"transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQACC...",
"attestation": {
"signature": "PWT2ZBBQ2p0ZuDw+cysk1KfY6OGlCV03TY3W4K63yrgvF+81L2HFctankBsqaIMM110YiJk9v+miitHHevcjDw==",
"pcrs": {}
},
"metadata": {
"protocol": "wallet",
"operation": "operation",
"timestamp": 1770786030261
},
"data": {
"result": "success"
}
}Cryptographic Attestation
This endpoint generates transactions in a secure enclave. Every transaction includes a cryptographic attestation that can be verified before signing.
Calling directly without the SDK? See our Manual Encryption Guide to learn how to encrypt payloads for attested endpoints.