Introducing Solana Support in thirdweb API
Provision Solana wallets, send tokens and more - Ethereum style.

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 1limit
(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 invokeaccounts
: Array of account metadata (address, isSigner, isWritable)data
: Instruction data in hex or base64 encodingencoding
: 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 submittedSUBMITTED
: Transaction has been submitted to the networkCONFIRMED
: Transaction is confirmed on-chainFAILED
: Transaction failed (checkerrorMessage
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! 🚀