The Swaplume API
Live offers from 9 instant exchanges, and swaps at the best one, for your app or AI agent. Free, no API key, no account.
A swap in three calls
curl "https://api.swaplume.com/v1/quotes?from=btc&to=eth&amount=0.1"Every offer, best first. Amounts are what the user receives after all fees.
curl -X POST https://api.swaplume.com/v1/swaps \
-H "content-type: application/json" \
-d '{"from": "btc", "to": "eth", "amount": "0.1", "address": "<ETH address>"}'Without a provider, Swaplume takes the best rate at that moment and falls back to the next one if it fails. The response has the deposit_address the user sends to, and plain-English instructions.
curl https://api.swaplume.com/v1/swaps/$SWAP_ID$SWAP_ID is the id step 2 returned. Read it again every poll_after seconds until is_final is true. Statuses go waiting, confirming, exchanging, sending, finished.
The user then sends their coins to the deposit address from their own wallet. Swaplume never holds funds: the exchange receives the deposit and pays out to the user's address.
Connect an AI agent
The same features are an MCP server at https://api.swaplume.com/mcp, over streamable HTTP with no auth.
claude mcp add --transport http swaplume https://api.swaplume.com/mcp- Claude Desktop and claude.ai: Settings, Connectors, Add custom connector, with the URL above.
- Cursor, VS Code, Windsurf and others: add a remote (HTTP) MCP server with the same URL.
Tools: get_quotes, validate_address, create_swap, get_swap, list_currencies, list_providers.
Endpoints
- GET /v1/quotes
- Every exchange's offer for a swap, best first, and why the others can't do it.
- GET /v1/quotes/stream
- The same comparison as Server-Sent Events, updated as each exchange answers.
- POST /v1/swaps
- Create a swap. Returns the deposit address, memo when one is needed, and instructions.
- GET /v1/swaps/{id}
- Live status, the payout transaction once sent, and what to do next.
- POST /v1/validate-address
- Check an address for an asset before creating the swap.
- GET /v1/currencies
- Supported assets and networks, with filters.
- GET /v1/providers
- The exchanges compared: KYC level, email and refund address support.
- GET /v1/prices
- BTC, ETH, SOL, XMR, LTC, XRP and TON in USDT at the best exchange. /v1/prices.png draws them.
Good to know
- Assets are a ticker plus a network:
btc,usdt:trx,usdc:sol. Names liketron,erc20orbep20work as networks. - Amounts are decimal strings. A floating rate is an estimate;
rate_type=fixedlocks the amount for a short time, until the quote'sexpires_at(pass itsrate_idwhen creating). - To receive an exact amount, pass
amount_toinstead ofamount, at a fixed rate: each quote'samount_fromis what to send, least first. - Each quote says how likely its exchange is to ask the user for ID (
kyc), whether it needs the user's email (email_required) and whether it takes a refund address (refund_address_supported). - Errors are JSON:
{"error": {"code", "message", "details"}}, with messages you can show to users. - Limits: 60 requests a minute and 20 new swaps an hour, per IP. Need more? Tell us.
- It's free: the exchanges pay Swaplume a commission on swaps, already included in the quotes.