Velum Swap and Velum Pay inside your own code or your AI agent, across 70+ chains, straight on the protocols. A keyless REST API, an MCP server and plain deep links, all by one-time deposit address: the API never creates or holds a wallet or a key, and Velum adds 0%.
Endpoints for chains, tokens, quotes, deposit swaps and status, pay links, reading payment codes and x402 funding, plus live block times, health and the OpenAPI document. JSON in, JSON out, with typed errors and rate-limit headers.
Read the API referenceNine tools for quotes, deposit swaps, status, privacy options, payment links, payment codes and x402 funding over Streamable HTTP, for Claude, Cursor and any MCP client. The server's instructions walk an agent through a careful flow and make it ask the user first.
Connect an agentOpen the app with a swap pre-filled. Every quote route already carries one in its appUrl.
/swap?from=sol:native&to=base:native&amount=0.5&recipient=0x…See the link format No sign-up and no key. Ask for a quote, reserve a one-time deposit address on the route you like, and the user pays it from any wallet or exchange.
Creating the swap moves nothing: funds only move when the user sends them. Quotes expire in about 25 seconds, so re-quote if you wait. The full walk-through is in the API reference.
# 1. Price 0.5 SOL to ETH on Base. Routes come back best first.
curl -s -X POST /api/v1/quote \
-H 'content-type: application/json' -d '{
"from": { "chain": "sol", "token": "native" },
"to": { "chain": "base", "token": "native" },
"amount": "0.5",
"refundTo": "<your Solana address>",
"recipient": "<your Base address>"
}'
# 2. Reserve a one-time deposit address on that route (routes[].provider).
curl -s -X POST /api/v1/swap \
-H 'content-type: application/json' -d '{
"from": { "chain": "sol", "token": "native" },
"to": { "chain": "base", "token": "native" },
"amount": "0.5",
"refundTo": "<your Solana address>",
"recipient": "<your Base address>",
"provider": "near", "mode": "deposit"
}'
# 3. Pay depositAddress the exact amount from any wallet, then poll:
curl -s "/api/v1/status?provider=near&id=<trackingId>"
A checkout is the same two calls with amountOut instead of amount: the merchant gets exactly that much of the coin they chose, and the quote tells the payer what to send. Pass the quoted input as maxAmountIn when you create the payment.
Two more calls cover the rest: POST /api/v1/paylink makes a shareable pay link for an exact amount (nothing reserved or stored), and POST /api/v1/x402/fund prices getting exactly what an HTTP 402 asks for into your own wallet. Payments run on exact-output routes (Relay or NEAR Intents, whichever asks the payer for less). The xmr option pays through Monero and delivers at least the amount. No code at all? Make a pay link and put it behind a button.
# 1. How much ETH on Base pays EXACTLY 25 USDC on Solana? (routes[0].amountIn)
curl -s -X POST /api/v1/quote \
-H 'content-type: application/json' -d '{
"from": { "chain": "base", "token": "native" },
"to": { "chain": "sol", "token": "USDC" },
"amountOut": "25",
"refundTo": "<payer's Base address>",
"recipient": "<merchant's Solana address>"
}'
# 2. Create the payment, capped at what the payer agreed to send.
# If the fresh price needs more: 409 price_moved, nothing reserved.
curl -s -X POST /api/v1/swap \
-H 'content-type: application/json' -d '{
"from": { "chain": "base", "token": "native" },
"to": { "chain": "sol", "token": "USDC" },
"amountOut": "25", "maxAmountIn": "<routes[0].maxAmountIn>",
"refundTo": "<payer's Base address>",
"recipient": "<merchant's Solana address>",
"provider": "<routes[0].provider: relay or near>", "mode": "deposit"
}'
Bitcoin, Solana, the EVM chains and more. Paste a contract address or mint to find a token; launchpad coins such as pump.fun and bonk.fun route once NEAR Intents or Relay can carry them. Check the quote's errors before telling a user there is no route.
The protocol issues a one-time deposit address and the user pays it from any wallet or exchange. Neither you nor the API ever handles a key, and a failed swap is refunded to the address you gave.
Exact-output payments, shareable pay links and x402 funding into an agent's own wallet, all by deposit. The same two calls cover a checkout, and the agent signs its own x402 payment.
Ask for standard, private (confidential crossing on NEAR Intents) or XMR routes with one field. XMR is the Monero step: coin to Monero to coin, each part paying the next one's deposit address.