Learn how to integrate Solana’s top protocols into your application through pure HTTP requests.
The Standard Blinks Library (SBL) is a collection of APIs that return ready-to-sign transactions for major Solana protocols. By abstracting away the complexity of integrating these protocols through complex SDKs and maintaining these integrations, the SBL allows you to focus on building a seamless user experience.Each SBL API endpoint follows the Solana Actions specification and provides:
Ready-to-Sign Transactions
APIs that return transaction data ready for user signing
Rich UI Metadata
Optimized metadata for building beautiful user experiences
Blinks (blockchain links) are URLs that return ready-to-sign transactions following the Solana Actions specification. They eliminate the need to integrate protocol-specific SDKs. For more information about blinks, please see the Blinks section.You’ll encounter blink URLs in several places:
Markets API responses: In the actions object (e.g., actions.deposit.blinkUrl)
Direct protocol URLs: Like https://jupiter.dial.to/api/v0/swap/USDC-SOL
Standard Blinks Library: A set of curated blinks from top Solana ecosystem projects
On a high level, the process of using blinks is as follows:
1
GET Request
Fetch metadata (title, description, parameters)
2
POST Request
Submit wallet address + parameters → Get transaction
Blink metadata provides the title, description, icon, and parameters needed to interact with a blink. This information helps you understand the link structure and can be used to build custom UIs (if you don’t want to use our UI components).
Tip: All SBL blinks include an OpenAPI specification that lets you test them directly in your browser and explore the response structure. You can use these interactive docs instead of fetching metadata manually - jump to Step 2 if you prefer this approach.
Our example response supports total amounts as well as percentages. For the latter, you can use the percentage query parameter. The blink endpoint will automatically fetch the wallet balance and calculate the amount based on the percentage:
The example response also supports custom input actions, in this case the user can enter the amount of USDC they want to deposit by using the amount query parameter:
After receiving the transaction from the POST request, simply sign and send it with your wallet.
Copy
Ask AI
import { Connection, VersionedTransaction } from '@solana/web3.js';// Deserialize the base64 transaction as it was // returned and extracted in the previous stepconst transaction = VersionedTransaction.deserialize( Buffer.from(transaction, 'base64'));// Update blockhash (recommended)const connection = new Connection('https://api.mainnet-beta.solana.com');const { blockhash } = await connection.getLatestBlockhash();transaction.message.recentBlockhash = blockhash;// Sign and sendconst signedTx = await wallet.signTransaction(transaction);const signature = await connection.sendRawTransaction(signedTx.serialize());console.log('Transaction successful:', signature);
We recommend to always update the recent blockhash before signing. The transaction returned by the API may have an expired blockhash, which will cause the transaction to fail.
Some blinks support multi-step workflows where one action leads to another. This is useful for complex operations like opening a leveraged position. The response will include a next field with the URL for the next step.Learn more in the Headless Integration guide.