Skip to main content

Overview

Test crypto transactions in the sandbox — send testnet tokens, estimate gas fees, and query transaction history, all without spending real funds. Sandbox base URL: https://crypto-sandbox.yativo.com/api/
The sandbox uses testnet blockchains. Never send real mainnet tokens to sandbox wallet addresses.

Get a Gas Fee Estimate

Estimate the gas fee for a transaction before sending.
POST https://crypto-sandbox.yativo.com/api/transactions/get-gas-price
chain_type
string
required
Blockchain to estimate gas for: ethereum, solana, bitcoin, polygon, bsc, base, xdc.
priority
string
Transaction speed: slow, medium, fast. Defaults to medium.
amount_usd
number
Optional USD amount, for calculating gas as a percentage.
curl -X POST 'https://crypto-sandbox.yativo.com/api/transactions/get-gas-price' \
  -H 'Authorization: Bearer YOUR_SANDBOX_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "chain_type": "SOL",
    "priority": "medium"
  }'
Response
{
  "success": true,
  "data": {
    "estimatedFee": 0.00063,
    "gasFee": 0.00063,
    "platformFees": 0,
    "priority": "low",
    "chainType": "ETH",
    "breakdown": {
      "gas_cost_usd": "0.00063000",
      "platform_fees_usd": "0.00000000",
      "total_cost_usd": "0.00063000",
      "platform_fee_details": []
    }
  }
}

Send a Transaction

Send testnet tokens from your sandbox wallet to another address.
POST https://crypto-sandbox.yativo.com/api/transactions/send-funds
from_asset_id
string
required
The asset ID of the wallet to send from (obtained from POST /assets/get-user-assets).
to_address
string
required
Destination blockchain address. Must be a valid testnet address for the specified chain.
amount
string
required
Amount to send in the token’s native units, e.g. "25.00".
chain
string
required
Blockchain network: solana, ethereum, base, etc.
ticker
string
required
Token ticker symbol: USDC_SOL, ETH, BTC, etc.
priority
string
Transaction speed: slow, medium, fast. Defaults to medium.
idempotency_key
string
Unique key to prevent duplicate transactions. Auto-generated if omitted.
curl -X POST 'https://crypto-sandbox.yativo.com/api/transactions/send-funds' \
  -H 'Authorization: Bearer YOUR_SANDBOX_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "from_asset_id": "ast_01HX9KZMB3F7VNQP8R2WDGT4E6",
    "to_address": "9xZ7Y4mQkLpR3sVwC8tF2bG6hJ5nM1yK",
    "amount": "25.00",
    "chain": "solana",
    "ticker": "USDC_SOL",
    "priority": "medium"
  }'
Response — Transaction Submitted
{
  "status": "success",
  "message": "Transaction submitted successfully",
  "data": {
    "transaction_id": "txn_01HX9KZMB3F7VNQP8R2WDGT100",
    "from_asset_id": "ast_01HX9KZMB3F7VNQP8R2WDGT4E6",
    "to_address": "9xZ7Y4mQkLpR3sVwC8tF2bG6hJ5nM1yK",
    "amount": "25.00",
    "chain": "solana",
    "ticker": "USDC_SOL",
    "status": "pending",
    "tx_hash": "5KgF7hJ2mN4pQ8rT9vX1yC3bA6wD0eG2jL5nP8sU1z4",
    "fee": "0.000005",
    "fee_ticker": "SOL",
    "idempotency_key": "idem_01HX9KZMB3F7VNQP8R2WDGT4E5",
    "created_at": "2026-03-28T11:00:00Z"
  }
}

List Transactions

Retrieve a paginated list of all transactions for your sandbox account.
POST https://crypto-sandbox.yativo.com/api/transactions/get-transactions
page
integer
Page number. Defaults to 1.
limit
integer
Transactions per page. Defaults to 20, max 100.
status
string
Filter by status: pending, confirmed, failed, cancelled.
chain
string
Filter by blockchain: solana, ethereum, etc.
curl -X POST 'https://crypto-sandbox.yativo.com/api/transactions/get-transactions' \
  -H 'Authorization: Bearer YOUR_SANDBOX_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "page": 1,
    "limit": 20
  }'
Response
{
  "data": [
    {
      "transaction_id": "txn_01HX9KZMB3F7VNQP8R2WDGT100",
      "type": "send",
      "chain": "solana",
      "ticker": "USDC_SOL",
      "amount": "25.00",
      "status": "confirmed",
      "to_address": "9xZ7Y4mQkLpR3sVwC8tF2bG6hJ5nM1yK",
      "tx_hash": "5KgF7hJ2mN4pQ8rT9vX1yC3bA6wD0eG2jL5nP8sU1z4",
      "created_at": "2026-03-28T11:00:00Z"
    }
  ],
  "status": true,
  "message": "Transactions retrieved successfully"
}

Transaction Status Values

StatusDescription
pendingSubmitted to the blockchain, awaiting confirmation.
confirmedConfirmed on-chain.
failedTransaction failed (insufficient gas, invalid address, etc.).
cancelledCancelled before broadcast.

Testing Tips

Attempt to send more than your wallet balance. Your application should handle this gracefully.
curl -X POST 'https://crypto-sandbox.yativo.com/api/transactions/send-funds' \
  -H 'Authorization: Bearer YOUR_SANDBOX_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "from_asset_id": "ast_01HX9KZMB3F7VNQP8R2WDGT4E6",
    "to_address": "9xZ7Y4mQkLpR3sVwC8tF2bG6hJ5nM1yK",
    "amount": "99999999.00",
    "chain": "solana",
    "ticker": "USDC_SOL"
  }'
Send two transactions with the same idempotency_key. The second call should return the original transaction rather than creating a duplicate.
After submitting a transaction, poll POST /transactions/get-transactions filtering by the transaction_id until the status changes from pending to confirmed or failed.