Skip to main content
Hyparrow’s crypto wallet endpoints let you provision blockchain wallets for your customers, query balances, and send funds — all through a single API. Wallets are created on Coinbase’s infrastructure and linked to your customer records.

Supported networks

Network identifierDescription
baseBase mainnet
base-sepoliaBase Sepolia testnet
solanaSolana mainnet
solana-devnetSolana devnet
Use base-sepolia or solana-devnet for integration testing before going live on mainnet.

Create a wallet

POST /api/v1/crypto/wallets Creates a new on-chain wallet for a customer and associates it with your account.
customerId
string
required
UUID of the customer who will own the wallet. The customer must belong to your API client.
network
string
required
Blockchain network. Must be one of the supported network identifiers above.
label
string
Human-readable label for the wallet (e.g. "Main wallet", "Savings").
curl --request POST \
  --url https://api.hyparrow.com/api/v1/crypto/wallets \
  --header "x-api-key: your_api_key" \
  --header "x-api-secret: your_api_secret" \
  --header "Content-Type: application/json" \
  --data '{
    "customerId": "cust-uuid-...",
    "network": "base",
    "label": "Main wallet"
  }'
Response
{
  "success": true,
  "message": "Crypto wallet created successfully",
  "data": {
    "wallet": {
      "id": "wallet-uuid-...",
      "userId": "cust-uuid-...",
      "walletAddress": "0xAbCdEf1234...",
      "network": "base",
      "status": "active",
      "label": "Main wallet",
      "walletId": "coinbase-wallet-id",
      "createdAt": "2025-06-01T10:00:00Z"
    }
  }
}
Wallet statuses: active, suspended, closed.

List customer wallets

GET /api/v1/crypto/customers/:customerId/wallets Returns all wallets belonging to the specified customer.
cURL
curl --request GET \
  --url https://api.hyparrow.com/api/v1/crypto/customers/cust-uuid-.../wallets \
  --header "x-api-key: your_api_key" \
  --header "x-api-secret: your_api_secret"
Response
{
  "success": true,
  "data": {
    "wallets": [
      {
        "id": "wallet-uuid-...",
        "walletAddress": "0xAbCdEf1234...",
        "network": "base",
        "status": "active",
        "label": "Main wallet"
      }
    ],
    "count": 1
  }
}

Get wallet balance

GET /api/v1/crypto/wallets/:walletId/balance Fetches live balances from the blockchain for each asset held in the wallet.
cURL
curl --request GET \
  --url https://api.hyparrow.com/api/v1/crypto/wallets/wallet-uuid-.../balance \
  --header "x-api-key: your_api_key" \
  --header "x-api-secret: your_api_secret"
Response
{
  "success": true,
  "data": {
    "walletId": "wallet-uuid-...",
    "balances": [
      {
        "asset": "ETH",
        "amount": "0.05123",
        "currency": "ETH"
      },
      {
        "asset": "USDC",
        "amount": "120.00",
        "currency": "USDC"
      }
    ]
  }
}

Transfer crypto

POST /api/v1/crypto/transfer Sends crypto from a customer’s wallet to an external address. The transfer is initiated immediately; the transaction status starts as pending and updates to confirmed or failed once the network processes it.
walletId
string
required
UUID of the source wallet (the id field on the wallet object).
amount
string
required
Amount to send as a string (e.g. "0.01").
asset
string
required
Asset to send (e.g. "ETH", "USDC").
destination
string
required
Recipient’s on-chain address.
curl --request POST \
  --url https://api.hyparrow.com/api/v1/crypto/transfer \
  --header "x-api-key: your_api_key" \
  --header "x-api-secret: your_api_secret" \
  --header "Content-Type: application/json" \
  --data '{
    "walletId": "wallet-uuid-...",
    "amount": "0.01",
    "asset": "ETH",
    "destination": "0xRecipientAddress..."
  }'
Response
{
  "success": true,
  "message": "Transfer initiated successfully",
  "data": {
    "transfer": {
      "amount": "0.01",
      "asset": "ETH",
      "destination": "0xRecipientAddress...",
      "status": "pending",
      "transactionHash": "0xTxHash..."
    },
    "transaction": {
      "id": "tx-uuid-...",
      "cryptoWalletId": "wallet-uuid-...",
      "type": "withdraw",
      "status": "pending",
      "amount": "0.01",
      "asset": "ETH",
      "fromAddress": "0xAbCdEf1234...",
      "toAddress": "0xRecipientAddress...",
      "transactionHash": "0xTxHash...",
      "network": "base",
      "createdAt": "2025-06-01T10:05:00Z"
    }
  }
}
On-chain transfers are irreversible. Verify the destination address before calling this endpoint.

Transaction history

GET /api/v1/crypto/wallets/:walletId/transactions Returns all recorded transactions for the wallet, ordered newest first.
cURL
curl --request GET \
  --url https://api.hyparrow.com/api/v1/crypto/wallets/wallet-uuid-.../transactions \
  --header "x-api-key: your_api_key" \
  --header "x-api-secret: your_api_secret"
Response
{
  "success": true,
  "data": {
    "transactions": [
      {
        "id": "tx-uuid-...",
        "type": "withdraw",
        "status": "confirmed",
        "amount": "0.01",
        "asset": "ETH",
        "fromAddress": "0xAbCdEf1234...",
        "toAddress": "0xRecipientAddress...",
        "transactionHash": "0xTxHash...",
        "network": "base",
        "createdAt": "2025-06-01T10:05:00Z"
      }
    ],
    "count": 1
  }
}

Transaction types and statuses

FieldValues
typedeposit, withdraw, payment, receive
statuspending, confirmed, failed