Skip to main content

Ephemeral SPL Token Program

Overview

The Private Payments API builds unsigned SPL token transactions for deposits, transfers, withdrawals, and mint initialization across Solana and MagicBlock ephemeral rollups. It also exposes balance and mint-initialization status queries. The canonical public reference is available at payments.magicblock.app/reference.

Meta

  • Health - Check API health and availability

SPL

  • Deposit SPL Tokens - Build an unsigned deposit transaction from Solana into an ephemeral rollup
  • Transfer SPL Tokens - Build an unsigned public or private SPL transfer
  • Withdraw SPL Tokens - Build an unsigned withdrawal transaction back to Solana
  • Initialize Mint - Build an unsigned transaction that initializes a validator-scoped transfer queue for a mint
  • Balance - Get the base-chain SPL token balance for an address
  • Private Balance - Get the ephemeral-rollup SPL token balance for an address
  • Is Mint Initialized - Check whether a mint has a validator-scoped transfer queue on the ephemeral RPC

MCP

  • MCP - Access the stateless Streamable HTTP MCP endpoint
┌────────────────────────────────────────────┐
│ 1. Deposit                                │
├────────────────────────────────────────────┤
│ • Build an unsigned deposit transaction   │
│ • Solana base balance → ephemeral rollup  │
└────────────────────────────────────────────┘

┌────────────────────────────────────────────┐
│ 2. Transfer                               │
├────────────────────────────────────────────┤
│ • Build SPL transfer                      │
│ • base/ephemeral → base/ephemeral         │
└────────────────────────────────────────────┘

┌────────────────────────────────────────────┐
│ 3. Withdraw                               │
├────────────────────────────────────────────┤
│ • Build an unsigned withdrawal            │
│ • ephemeral rollup → Solana base balance  │
└────────────────────────────────────────────┘

Response Format

Successful transaction-building endpoints return an unsigned transaction payload:
{
  "kind": "deposit",
  "version": "legacy",
  "transactionBase64": "base64-encoded-transaction",
  "sendTo": "base",
  "recentBlockhash": "blockhash",
  "lastValidBlockHeight": 284512337,
  "instructionCount": 3,
  "requiredSigners": ["3rXKwQ1kpjBd5tdcco32qsvqUh1BnZjcYnS5kYrP7AYE"]
}