Skip to main content

API Introduction

The Unipay API provides programmatic access to privacy-enhanced Solana transactions. Build applications that can send, swap, and distribute tokens with graph-break privacy protection.

Base URL

https://api.unipay.com/v1

Authentication

All API requests require authentication using API keys:
curl -H "Authorization: Bearer YOUR_API_KEY" \
     -H "Content-Type: application/json" \
     https://api.unipay.com/v1/quote

Rate Limits

TierRequests/MinuteMonthly Quota
Free6010,000
Pro300100,000
Enterprise1,0001,000,000
Rate limit headers are included in all responses:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1640995200

Supported Assets

AssetSymbolMint Address
SolanaSOLSo11111111111111111111111111111111111111112
USD CoinUSDCEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
TetherUSDTEs9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB

Privacy Modes

Wallet Mode

Direct transactions signed by user’s wallet:
  • Lower fees (network only)
  • Faster execution
  • Direct on-chain link visible

Private Mode

Privacy-enhanced routing through ephemeral addresses:
  • Higher fees (network + routing)
  • Slower execution (30-120 seconds)
  • Graph-break privacy protection

Error Handling

All errors return JSON with consistent structure:
{
  "error": {
    "code": "INSUFFICIENT_BALANCE",
    "message": "Insufficient balance for transaction",
    "details": {
      "required": "1.5 SOL",
      "available": "1.2 SOL"
    }
  }
}

Common Error Codes

CodeDescription
INVALID_ADDRESSMalformed Solana address
INSUFFICIENT_BALANCENot enough tokens for transaction
SLIPPAGE_EXCEEDEDPrice moved beyond tolerance
ROUTING_UNAVAILABLEPrivate mode temporarily unavailable
RATE_LIMIT_EXCEEDEDToo many requests

SDKs and Libraries

TypeScript/JavaScript

npm install @unipay/sdk
import { UnipaySDK } from '@unipay/sdk';

const unipay = new UnipaySDK({
  apiKey: 'your-api-key',
  network: 'mainnet-beta'
});

// Get quote
const quote = await unipay.getQuote({
  inputAsset: 'SOL',
  outputAsset: 'USDC',
  amount: 10,
  mode: 'private'
});

Python

pip install unipay-python
from unipay import UnipayClient

client = UnipayClient(api_key='your-api-key')

# Get quote
quote = client.get_quote(
    input_asset='SOL',
    output_asset='USDC', 
    amount=10,
    mode='private'
)

Webhooks

Subscribe to transaction status updates:
{
  "url": "https://your-app.com/webhooks/unipay",
  "events": ["transaction.completed", "transaction.failed"],
  "secret": "webhook-secret-for-verification"
}

Webhook Events

EventDescription
transaction.pendingTransaction submitted to network
transaction.confirmedTransaction confirmed on-chain
transaction.completedTransaction fully processed
transaction.failedTransaction failed or reverted

Next Steps

Get Quote

Get pricing for swaps and transfers

Create Transaction

Submit transactions for processing