Withdraw from account balance
Initiate a withdrawal from the user's account balance. The USDC is sent on Solana to the solana_address you supply; the destination is never inferred, so the address is required.
This is an asynchronous operation. A successful call answers 202 Accepted: the withdrawal is created in a pending state and sent within a few minutes. Poll the returned status_url (GET /get-withdrawal-status?withdrawal_id=...) until state reaches a terminal value rather than treating the 202 as completion.
This draws only on the Laso account balance, never on the managed agent wallet. USDC sitting in the agent wallet is moved with agentWalletTransfer instead. When the account balance is too low but the agent wallet holds funds, the 400 response says so and reports both figures.
An agent's withdrawal counts against the account's spend limits, the same as its payments and wallet sends: it must be under the per-payment limit and fit in what is left of the rolling 24-hour limit. Otherwise it is refused with 403 and code agent_spend_limit or agent_daily_limit, and nothing is withdrawn. Do not split it into smaller withdrawals to get under a limit; tell your human.
Requires a Bearer token from /auth or /get-card.
Request
- Base URL: https://laso.finance
- URL: https://laso.finance/withdraw
- Auth: API key in header Authorization
Headers
Optional client-generated unique key (a UUID works) that makes this write safe to retry. A retry with the same key within 24 hours returns the recorded response of the original request, marked with an Idempotency-Replayed: true header, instead of performing the write again. Reusing a key with a different body or route is rejected with 422 (code: idempotency_key_reused); a retry that arrives while the original is still running gets 409 (code: idempotency_key_in_progress), so wait a moment and retry with the same key. Keys are scoped to the authenticated account.
Request body
Response
Withdrawal accepted. The withdrawal is recorded in a pending state and the USDC is sent on Solana within a few minutes, so this response reports that the request was accepted, not that it settled. Poll status_url (also returned in the Location header) until withdrawal.state reaches a terminal value.
Example response
{
"status_url": "https://laso.finance/get-withdrawal-status?withdrawal_id=abc123"
}Changes
No recorded changes to this operation across all 3 revisions of this API.