Solana - Getting started (REST API)

This article covers the steps required to create a Solana wallet and generate addresses. It includes an example of checking the address balance and transferring funds to another Solana address.

📘

The following steps and examples are based on Solana devnet.

Steps

Step_1: Generate a Solana Wallet

Generating a Solana wallet means creating an account with an address, secret key (private key) an mnemonic. Only one address is generated per mnemonic.

  • Tatum does not store Mnemonics and or Private Keys.
  • The responsibility of keeping your Mnemonics and Private Keys secure rests solely with you, the User.
  • Additional information about Mnemonics and Private Keys is available in the following article.

Example request:

  • The response returns an address, a secret key and a mnemonic
curl --location 'https://api.tatum.io/v3/solana/wallet' \
--header 'x-api-key: {YOUR_API_KEY}'

//Response:
{
    "mnemonic": "develop avoid filter category draft napkin innocent elephant potato core expose primary fish horse fever bubble damage lens kite hip select ### ### ###",
    "address": "BWmkpRBdW6EvQcsQLEaAbRMvn3VxXxo83su2HZT3fPqh",
    "privateKey": "####"
}

Step_2: Add funds to the Solana address

We take the address generated in step_1. For testnet, you can get free coins from a faucet. Find additional information in the following article.

{
    "address": "BWmkpRBdW6EvQcsQLEaAbRMvn3VxXxo83su2HZT3fPqh"
}

Step_3: Check the balance of an Solana account

Request example:

  • The response returns the balance of an Solana account
curl --location 'https://api.tatum.io/v3/solana/account/balance/BWmkpRBdW6EvQcsQLEaAbRMvn3VxXxo83su2HZT3fPqh' \
--header 'x-api-key: {YOUR_API_KEY}'

//Response:
{
    "balance": "5"
}

Step_4: Send SOL from account to account

Request example:

  • The response returns a transaction hash
curl --location 'https://api.tatum.io/v3/solana/transaction' \
--header 'Content-Type: application/json' \
--header 'x-api-key: {YOUR_API_KEY}' \
--data '{
  "from": "BWmkpRBdW6EvQcsQLEaAbRMvn3VxXxo83su2HZT3fPqh",
  "to": "8hhPvPKyYWgH2xttVzPWRzwSyTuAxu2fUfsfr59aEG2a",
  "amount": "2",
  "fromPrivateKey": "####"
}'

//Response
{
    "txId": "3uR49BuVHhkfq2daYPN6fLgbf5gd6Qa3CFnBAJpaKx1hybx3TZnhNSBmWyWuC1AScMhvuxP55YUM3r65KAyPzsij"
}

Step_5: Get the details of a transaction

Request example:

  • The response returns the details of an Solana transaction
curl --location 'https://api.tatum.io/v3/solana/transaction/3uR49BuVHhkfq2daYPN6fLgbf5gd6Qa3CFnBAJpaKx1hybx3TZnhNSBmWyWuC1AScMhvuxP55YUM3r65KAyPzsij' \
--header 'x-api-key: {YOUR_API_KEY}'

//Response
{
    "blockTime": 1719524019,
    "meta": {
        "computeUnitsConsumed": 150,
        "err": null,
        "fee": 5000,
        "innerInstructions": [],
        "loadedAddresses": {
            "readonly": [],
            "writable": []
        },
        "logMessages": [
            "Program 11111111111111111111111111111111 invoke [1]",
            "Program 11111111111111111111111111111111 success"
        ],
        "postBalances": [
            2994439840,
            4949995000,
            1
        ],
        "postTokenBalances": [],
        "preBalances": [
            4994444840,
            2949995000,
            1
        ],
        "preTokenBalances": [],
        "rewards": [],
        "status": {
            "Ok": null
        }
    },
    "slot": 308623387,
    "transaction": {
        "message": {
            "header": {
                "numReadonlySignedAccounts": 0,
                "numReadonlyUnsignedAccounts": 1,
                "numRequiredSignatures": 1
            },
            "accountKeys": [
                "BWmkpRBdW6EvQcsQLEaAbRMvn3VxXxo83su2HZT3fPqh",
                "8hhPvPKyYWgH2xttVzPWRzwSyTuAxu2fUfsfr59aEG2a",
                "11111111111111111111111111111111"
            ],
            "recentBlockhash": "H2PQGMvyPEaTyQcn3Y7qfmamcdXDxnESh8TSko9WCFTN",
            "instructions": [
                {
                    "accounts": [
                        0,
                        1
                    ],
                    "data": "3Bxs3zxH1DZVrsVy",
                    "programIdIndex": 2,
                    "stackHeight": null
                }
            ],
            "indexToProgramIds": {}
        },
        "signatures": [
            "3uR49BuVHhkfq2daYPN6fLgbf5gd6Qa3CFnBAJpaKx1hybx3TZnhNSBmWyWuC1AScMhvuxP55YUM3r65KAyPzsij"
        ]
    },
    "version": "legacy"
}

Good to Know

  • There can only be one address per wallet
  • Familiarize yourself with the Safety & Security Basics in the following article.