Delete wallet
Deletes the wallet from its exact owning custody target when that Provider supports wallet deletion.
DELETE/Run in dashboard
Provider, when supplied, is a consistency assertion.
Requires an API key with the wallets.execute action.
Headers
-
x-project-id·string· min length 1 · exampleprj_exampleRequired for dashboard sessions. API keys use their assigned project.
-
Idempotency-Key·stringUse a unique 1–255 printable ASCII key per operation. Reuse it with the same request on retries. An in-flight attempt returns
409; a changed request returns422. Retry and recovery rules.
Request body
application/json · required
Delete wallet request body.
-
provider·string· one oflocal,fireblocks,privy,coinbase_cdp,para,turnkey,dfns,ibm_haven,anchorage,utila· exampleanchorageOptional consistency assertion for the Provider of the wallet being deleted.
-
walletId·string· required · min length 1 · exampleanchorage_wallet_123Provider wallet ID to delete from its exact owning target.
Responses
-
200Wallet deleted-
data·object· requiredDelete wallet response payload.
-
walletId·string· required · min length 1 · exampleanchorage_wallet_123Wallet ID that was deleted.
-
deleted·boolean· required · alwaystrue· exampletrueDeletion confirmation flag.
-
-
meta·object· requiredResponse metadata.
-
requestId·string· required · min length 1 · examplereq_exampleRequest identifier for tracing.
-
timestamp·string· required · formatdate-time· example2025-01-01T00:00:00.000ZISO 8601 timestamp.
-
-
-
400Bad Request-
error·object· requiredStandard error payload.
-
code·string· requiredMachine-readable error code.
-
message·string· requiredHuman-readable error message.
-
details·objectOptional error details for debugging.
*·any
-
-
meta·object-
requestId·string· min length 1 · examplereq_exampleRequest identifier for tracing.
-
-
-
401UnauthorizedSame fields as
400. -
403Forbidden. Requires thewallets.executeaction: an API key must hold it (a module'smanageorexecutealso covers itsread), and a signed-in member's organization role must include it. Without it the error is INSUFFICIENT_PERMISSIONS anderror.details.actionnames the action. Any other 403 names its own reason.Same fields as
400. -
404Not FoundSame fields as
400. -
409ConflictSame fields as
400. -
422Unprocessable EntitySame fields as
400. -
500Internal Server ErrorSame fields as
400.
Example request
curl -X DELETE 'https://api.solana.com/v1/wallets' \
-H "Authorization: Bearer $SDP_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"provider": "anchorage",
"walletId": "anchorage_wallet_123"
}'Example responses
{
"data": {
"walletId": "anchorage_wallet_123",
"deleted": true
},
"meta": {
"requestId": "req_example",
"timestamp": "2025-01-01T00:00:00.000Z"
}
}Error responses use the standard error shape.