Skip to main content

Choose Life: APIs Over SDKs

In crypto, we live at dog-year speed. Protocols ship fast, integrations need to be faster. But here’s the challenge: every SDK you maintain, every programming language you support, creates a long chain of breaking changes. Strong APIs are a win-win

For protocol teams

Build one great transaction endpoint that works everywhere

For integrators

Any developer, web2 or web3, can integrate with simple HTTP requests
The best teams are switching to strong APIs instead of maintaining SDKs and the Standard Blinks Library brings this approach to Solana’s top protocols.
Watch the full presentation from Accelerate 2025

Quality & Reliability

Curated Protocols

Top Solana ecosystem projects you already know and love

OpenAPI Documentation

Interactive docs with examples that you can test directly in your browser

Daily Automated Tests

Tests run across the Standard Blink Library to ensure Blinks remain operational

Production-Ready

Optimized transactions with validation and error handling built-in

Zero Maintenance

No SDKs to update, no breaking changes, no version conflicts

Regular Updates

New protocols and operations added weekly

Transactions as a Service

Think of the SBL as Transactions as a Service. Instead of:
  • Installing heavy SDKs
  • Learning protocol-specific APIs
  • Managing dependencies across languages
  • Dealing with breaking changes
You simply:
  • Make an HTTP request
  • Receive a ready-to-sign transaction
  • Sign it with any wallet
Every programming language can do this. Mobile, web, backend. It doesn’t matter. If it can make an HTTP request, it can integrate any protocol in the SBL.

How It Works

1

Find the Blink

Browse the protocol-specific sections in the SBL to find the operation you need (swap, deposit, claim, repay, withdraw, etc.)
2

Fetch the Transaction

Make a simple POST request with the user’s wallet address. Get back a ready-to-sign transaction.
3

Sign and Send

Sign the transaction with the user’s wallet and send it to Solana. Done.
The only difference between protocols is the URL. Everything else stays the same:
// Define your action - same pattern for any protocol
const swapUsdcToSol = 'https://jupiter.dial.to/api/v0/swap/USDC-SOL/100'
// const borrowSolOnJupiter = 'https://jupiter.dial.to/api/v0/lend/borrow/1/2433/borrow?percentage=90'
// const lendUsdcOnKamino = 'https://kamino.dial.to/api/v0/lend/HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E/deposit?amount=100'

const response = await fetch(swapUsdcToSol, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ account: userWalletAddress })
});

const { transaction } = await response.json();
// That's it. Sign and send.

Ready to Get Started?

Quick Start Guide

Build your first integration in 5 minutes