Withdraw

POST/solend/withdraw
Cryptographically Attested

Parameters (Kit SDK)

When using @sonabuild/kit, you only provide these parameters. The SDK automatically handles context (wallet, origin) and encryption.

amountnumberrequired

Amount of USDC to withdraw (in token units, not lamports)

mintstring

Token mint address (optional, defaults to USDC)

symbolstring

Token symbol (optional, defaults to USDC)

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.

encryptedstringrequired

Sealed box encrypted payload

hintobjectrequired

Plaintext hint for hint verification

contextobjectrequired
walletstringrequired

User wallet public key

originstringrequired

Request origin URL

paramsobjectrequired
amountnumberrequired

Amount of USDC to withdraw (in token units, not lamports)

mintstring

Token mint address (optional, defaults to USDC)

symbolstring

Token symbol (optional, defaults to USDC)

includeAttestationboolean

Whether to include attestation in response

Response Schema

All responses follow this structure. The data field contains operation-specific results (see example response →).

successbooleanrequired
transactionstring

Base64 encoded signed transaction

attestationobject
signaturestringrequired

Attestation signature

docstring

NSM attestation document (base64, includes PCR measurements)

metadataobject
protocolstringrequired
operationstringrequired
timestampnumberrequired
dataobject
withdrawobjectrequired
amountstringrequired

Amount withdrawn in token units

amountRawstringrequired

Amount withdrawn in lamports

tokenSymbolstringrequired
tokenMintstringrequired

Solana wallet or account address (Base58)

accountstringrequired

Obligation account address

errorstring | null
# Attested operations require encrypted payloads
# Use @sonabuild/kit SDK to handle encryption automatically
curl -X POST https://api.sona.build/solend/withdraw \
  -H "Content-Type: application/json" \
  -d '{
  "encrypted": "base64_encrypted_payload_from_kit",
  "hint": {
    "context": {
      "wallet": "YourWalletPublicKey",
      "origin": "https://your-app.com"
    },
    "params": {
      "amount": 100000000
    }
  },
  "includeAttestation": true
}'

Example Response

{
  "transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQACC...",
  "attestation": {
    "signature": "PWT2ZBBQ2p0ZuDw+cysk1KfY6OGlCV03TY3W4K63yrgvF+81L2HFctankBsqaIMM110YiJk9v+miitHHevcjDw==",
    "pcrs": {}
  },
  "metadata": {
    "protocol": "solend",
    "operation": "operation",
    "timestamp": 1766817866733
  },
  "data": {
    "pool": {
      "name": "Main Pool",
      "address": "example_pool_address"
    },
    "amount": "100000000"
  }
}

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.