Introducing Solana Support in thirdweb API

Provision Solana wallets, send tokens and more - Ethereum style.

Introducing Solana Support in thirdweb API

We're proud to announce initial support for Solana via the thirdweb API. This is the first of many releases making Solana more accessible to Ethereum developers.

Note: For the time being, you must create a new project from the thirdweb dashboard and use its secret key (server-side) to authenticate to the Solana APIs via the x-secret-key header.

Getting Started

All Solana endpoints are available at https://api.thirdweb.com/v1/solana/* and require authentication via the x-secret-key header:

x-secret-key: YOUR_SECRET_KEY

The API supports both Solana Mainnet (solana:mainnet) and Solana Devnet (solana:devnet) networks.


Create a Solana Wallet

Create or retrieve a managed Solana wallet using a unique label. If a wallet with the given label already exists, it will be returned instead of creating a new one.

Endpoint: POST https://api.thirdweb.com/v1/solana/wallets

Example Request:

curl -X POST https://api.thirdweb.com/v1/solana/wallets \
  -H "x-secret-key: YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label": "my-treasury-wallet"
  }'

Example Response:

{
  "result": {
    "address": "8JBLmveV4YF5AQ7EVnKJgyj6etGgVkPp3tYqQMTu3p5B",
    "label": "my-treasury-wallet",
    "createdAt": "2025-10-11T14:22:11.000Z",
    "updatedAt": "2025-10-11T14:22:11.000Z"
  }
}

The wallet is securely stored and can be used for signing transactions and messages.


List Solana Wallets

Retrieve all Solana wallets created for your project with pagination support.

Endpoint: GET https://api.thirdweb.com/v1/solana/wallets

Query Parameters:

  • page (optional): Page number, defaults to 1
  • limit (optional): Number of wallets per page (1-500), defaults to 100

Example Request:

curl -X GET "https://api.thirdweb.com/v1/solana/wallets?page=1&limit=50" \
  -H "x-secret-key: YOUR_SECRET_KEY"

Example Response:

{
  "result": {
    "wallets": [
      {
        "address": "8JBLmveV4YF5AQ7EVnKJgyj6etGgVkPp3tYqQMTu3p5B",
        "label": "my-treasury-wallet",
        "createdAt": "2025-10-11T14:22:11.000Z",
        "updatedAt": "2025-10-11T14:22:11.000Z"
      }
    ],
    "pagination": {
      "totalCount": 125,
      "page": 1,
      "limit": 50
    }
  }
}

Send Tokens

Transfer native SOL or SPL tokens with a single API call. The API automatically handles SPL token account creation if needed.

Endpoint: POST https://api.thirdweb.com/v1/solana/send

Send Native SOL

Example Request:

curl -X POST https://api.thirdweb.com/v1/solana/send \
  -H "x-secret-key: YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "8JBLmveV4YF5AQ7EVnKJgyj6etGgVkPp3tYqQMTu3p5B",
    "to": "FhtwVYF1wKAm7fWmE2N5P2eCv13wt2aT8W4Q9NQ9YcJH",
    "amount": "1000000",
    "chainId": "solana:devnet"
  }'
Note: Amounts are specified in lamports (1 SOL = 1,000,000,000 lamports)

Send SPL Tokens (Like USDC)

Example Request:

curl -X POST https://api.thirdweb.com/v1/solana/send \
  -H "x-secret-key: YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "8JBLmveV4YF5AQ7EVnKJgyj6etGgVkPp3tYqQMTu3p5B",
    "to": "FhtwVYF1wKAm7fWmE2N5P2eCv13wt2aT8W4Q9NQ9YcJH",
    "amount": "1000000",
    "chainId": "solana:devnet",
    "tokenAddress": "HZW5eXoaZySUdkGFwmkpfMoP1jmvYzu3PV6PvUCa3y7F"
  }'

Example Response:

{
  "result": {
    "transactionId": "solana-tx-queue-id-abc123"
  }
}

Transactions are queued and processed asynchronously. Use the returned transactionId to poll for status.


Send Transaction

For advanced use cases, submit custom Solana transactions with one or more instructions. This gives you full control over program interactions.

Endpoint: POST https://api.thirdweb.com/v1/solana/transactions

Example Request (SOL Transfer):

curl -X POST https://api.thirdweb.com/v1/solana/transactions \
  -H "x-secret-key: YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "8JBLmveV4YF5AQ7EVnKJgyj6etGgVkPp3tYqQMTu3p5B",
    "chainId": "solana:devnet",
    "transactions": [
      {
        "programId": "11111111111111111111111111111111",
        "accounts": [
          {
            "address": "8JBLmveV4YF5AQ7EVnKJgyj6etGgVkPp3tYqQMTu3p5B",
            "isSigner": true,
            "isWritable": true
          },
          {
            "address": "FhtwVYF1wKAm7fWmE2N5P2eCv13wt2aT8W4Q9NQ9YcJH",
            "isSigner": false,
            "isWritable": true
          }
        ],
        "data": "02000000e888b30000000000",
        "encoding": "hex"
      }
    ]
  }'

Instruction Fields:

  • programId: The Solana program to invoke
  • accounts: Array of account metadata (address, isSigner, isWritable)
  • data: Instruction data in hex or base64 encoding
  • encoding: Either "hex" or "base64" (defaults to "base64")

Example Response:

{
  "result": {
    "transactionId": "solana-tx-queue-id-xyz789"
  }
}

Get Transaction

Check the status of any queued transaction using its transaction ID.

Endpoint: GET https://api.thirdweb.com/v1/solana/transactions/{transactionId}

Example Request:

curl -X GET https://api.thirdweb.com/v1/solana/transactions/solana-tx-queue-id-abc123 \
  -H "x-secret-key: YOUR_SECRET_KEY"

Example Response:

{
  "result": {
    "id": "solana-tx-queue-id-abc123",
    "chainId": "solana:devnet",
    "from": "8JBLmveV4YF5AQ7EVnKJgyj6etGgVkPp3tYqQMTu3p5B",
    "signature": "5j8k9L4mN3pQ2rS7tU6vW8xY9zA1bC2dE3fG4hH5iJ6kK7lL8mM9nN0oO1pP2qQ3rR4sS5tT6uU7vV8wW9xX0yY",
    "status": "CONFIRMED",
    "confirmedAt": "2025-10-11T14:23:45.000Z",
    "confirmedAtSlot": "123456789",
    "blockTime": 1728654225,
    "createdAt": "2025-10-11T14:23:11.000Z",
    "errorMessage": null,
    "clientId": "your-client-id"
  }
}

Transaction Statuses:

  • QUEUED: Transaction is waiting to be submitted
  • SUBMITTED: Transaction has been submitted to the network
  • CONFIRMED: Transaction is confirmed on-chain
  • FAILED: Transaction failed (check errorMessage for details)

Sign Message

Sign arbitrary messages with your Solana wallet. Supports both plain text and hexadecimal formats with automatic detection.

Endpoint: POST https://api.thirdweb.com/v1/solana/sign-message

Example Request (Plain Text):

curl -X POST https://api.thirdweb.com/v1/solana/sign-message \
  -H "x-secret-key: YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "8JBLmveV4YF5AQ7EVnKJgyj6etGgVkPp3tYqQMTu3p5B",
    "message": "Welcome to my dApp!"
  }'

Example Request (Hex Format):

curl -X POST https://api.thirdweb.com/v1/solana/sign-message \
  -H "x-secret-key: YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "8JBLmveV4YF5AQ7EVnKJgyj6etGgVkPp3tYqQMTu3p5B",
    "message": "0x48656c6c6f20536f6c616e61"
  }'

Example Response:

{
  "result": {
    "signature": "5Nftk1W4nN6Xr2y4griH4sHqY2cD3rPrXg5BDJ9Y6hHSF3oURaUz6VXo4Qzv6TQ2Jj3MdE4Y5nVkq"
  }
}

The signature is returned in Base58 format and can be used for authentication and verification.


Coming Soon

We're actively working on expanding our Solana support. Here's what's coming next:

Official thirdweb Solana RPCs

High-performance, globally distributed RPC endpoints optimized for Solana applications.

Solana Swap API

Seamlessly swap tokens on Solana with the best rates from top DEXs like Jupiter and Raydium.

Solana Token Deployment API

Deploy your own SPL tokens with a single API call, including support for Token-2022 program features.


Need Help?

We can't wait to see what you build with Solana on thirdweb! 🚀