ShadeSwap
DocsAPI Reference

API Reference

Integrate ShadeSwap's anonymous exchange into your application

Become a ShadeSwap Reseller

Integrate anonymous cryptocurrency exchange into your platform and earn profit on every swap. Set your own markup, track orders in real-time, and withdraw earnings instantly via your dashboard.

  • • Customizable markup: Set profit margin per transaction
  • • 170+ cryptocurrencies supported
  • • Real-time order tracking and automatic profit calculations
  • • No KYC required - fully anonymous exchanges

Introduction

ShadeSwap Reseller API enables you to integrate anonymous cryptocurrency exchange directly into your platform. Create swaps programmatically, apply custom markups, and earn profit on every transaction. Our exchange engine supports 170+ cryptocurrencies without KYC requirements.

Base URL

https://shadeswap.io/api/v1

Authentication

All API requests require authentication via your unique API key. Include it in the X-API-Key header of every request. Connect your Solana wallet and get your API key from the reseller dashboard.

  curl -H "X-API-Key: shade_abc123xyz789..." \
  https://shadeswap.io/api/v1/estimate?from=btc&to=xmr&amount=0.1

How Reseller Markup Works

Set your markup in basis points (1 bps = 0.01%). For example, 150 bps = 1.5% markup on exchange amounts.

  • • Original exchange: User sends 1 BTC → receives 50 XMR
  • • With 1.5% markup: User sends 1 BTC → receives 49.25 XMR
  • • Your profit: 0.75 XMR automatically tracked in dashboard
  • • Withdraw earnings anytime to your wallet

Endpoints

GET/currencies

Returns a list of all supported cryptocurrencies with their network information.

Response
{
  "currencies": [
    {
      "ticker": "btc",
      "name": "Bitcoin",
      "network": "btc",
      "hasExtraId": false,
      "isAvailable": true
    },
    {
      "ticker": "eth",
      "name": "Ethereum",
      "network": "eth",
      "hasExtraId": false,
      "isAvailable": true
    },
    {
      "ticker": "xmr",
      "name": "Monero",
      "network": "xmr",
      "hasExtraId": false,
      "isAvailable": true
    }
  ]
}
GET/estimate

Get an estimated exchange amount for a given pair.

Parameters
fromCurrencySource currency ticker (e.g., "btc")
toCurrencyDestination currency ticker (e.g., "xmr")
fromAmountAmount to exchange
Example
  curl "https://api.shadeswap.io/v1/estimate?fromCurrency=btc&toCurrency=xmr&fromAmount=0.1"
Response
{
  "fromCurrency": "btc",
  "toCurrency": "xmr",
  "fromAmount": 0.1,
  "toAmount": 45.234567,
  "rate": 452.34567,
  "fee": "0.5%",
  "validUntil": "2026-01-14T12:30:00Z"
}
POST/exchange

Create a new anonymous exchange order. Returns a deposit address where user sends funds. Your markup is automatically applied to the output amount, and profit is tracked in your dashboard.

Request Body
{
  "from": "btc",
  "to": "xmr",
  "amount": "0.1",
  "address": "888tNkZrPN6JsEgekjMnABU4TBzc2Dt29EPAvkRxbANsAnjyPbb3iQ1YBRk1UXcdRsiKc9dhwMVgN5S9cQUiyoogDavup3H",
  "extraId": null,
  "refundAddress": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
  "refundExtraId": null
}

extraId - Optional: Payment ID for currencies that require it (XMR, XRP, etc.)

refundAddress - Recommended: Address for refunds if exchange fails

Response
{
  "id": "abc123xyz789",
  "payinAddress": "bc1qrandomgeneratedaddress123456",
  "payinExtraId": null,
  "payoutAddress": "888tNkZrPN6...",
  "fromCurrency": "btc",
  "toCurrency": "xmr",
  "fromAmount": 0.1,
  "toAmount": 44.5567,
  "status": "waiting"
}

Note: The toAmount already includes your markup. User will receive this amount, and the difference between original exchange rate and marked-up rate is your profit.

GET/exchange/:id

Get the current status of an exchange.

Status Values
waitingWaiting for deposit
confirmingDeposit received, awaiting confirmations
exchangingExchange in progress
sendingSending to destination
finishedExchange complete
failedExchange failed (refund initiated)

Rate Limits

TierRequests/minExchanges/day
Public60100
With API Key300Unlimited

Error Handling

All errors return a consistent JSON structure:

{
  "error": {
    "code": "INVALID_ADDRESS",
    "message": "The provided destination address is not valid for XMR"
  }
}