Skip to main content
POST
/
v2
/
wallets
/
{id}
/
withdrawals
Initiate a withdrawal
curl --request POST \
  --url https://sandbox.groundtech.co/v2/wallets/{id}/withdrawals \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "requestId": "f4a5b6c7-0000-4000-8000-000000000001",
  "destinationChain": "arbitrum",
  "amountUsd": 50,
  "destinationAddress": "0xRecipient..."
}
'
{ "id": "w1a2b3c4-0000-4000-8000-000000000001", "amountUsd": "50.00", "feeUsd": "0.50", "destinationChain": "arbitrum", "destinationAddress": "0xRecipient...", "status": "pending", "txHash": null, "failureReason": null, "createdAt": "2025-09-05T10:00:00Z", "completedAt": null }

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

id
string<uuid>
required

Wallet ID

Body

application/json
requestId
string<uuid>
required

Client-generated idempotency key (UUID v4).

destinationChain
string
required

Destination chain (e.g. arbitrum, solana).

amountUsd
number<double>
required

Amount to withdraw in USD terms.

destinationAddress
string
required

On-chain destination address.

Response

Withdrawal initiated (or existing withdrawal returned for idempotent retry)

id
string<uuid>
amountUsd
string

Withdrawal amount in USD as a formatted string.

feeUsd
string | null

Fee charged for the withdrawal as a formatted string.

destinationChain
string
destinationAddress
string
status
enum<string>

Simplified withdrawal status.

Available options:
pending,
processing,
completed,
failed,
cancelled
txHash
string | null

On-chain transaction hash once the withdrawal is broadcast.

failureReason
string | null

Human-readable reason for failure (only present when status is failed).

createdAt
string<date-time>
completedAt
string<date-time> | null