# Spark Protocol API
> Live protocol metrics for Spark (the Sky / former MakerDAO ecosystem capital-allocation protocol), keyless. Both Spark products: SparkLend, the lending money-market with per-asset supply APY and TVL, and Spark Savings, the sUSDS / USDS / USDC / USDT savings products passing through the Sky Savings Rate — a savings-yield dimension other lending APIs do not have. Plus total value locked and per-chain TVL. One combined overview endpoint snapshots it all. Live, nothing stored. The Spark-metrics layer for DeFi dashboards, lending, savings, stablecoin and yield apps — distinct from pure lending protocols, this is Spark lending-plus-savings model specifically.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/spark-api/..."
```

## Pricing
- **Free** (Free) — 3,600 calls/Mo, 3 req/s
- **Starter** ($21/Mo) — 98,000 calls/Mo, 8 req/s
- **Pro** ($69/Mo) — 680,000 calls/Mo, 20 req/s
- **Business** ($208/Mo) — 4,400,000 calls/Mo, 50 req/s

## Endpoints

### Overview

#### `GET /v1/overview` — Combined Spark snapshot (TVL + markets + savings + best savings rate)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/spark-api/v1/overview"
```

**Response:**
```json
{
    "data": {
        "note": "Snapshot of Spark: TVL, SparkLend markets, Spark Savings products and the best savings rate.",
        "source": "DeFiLlama",
        "protocol": "Spark",
        "total_tvl": 4683759402.97,
        "top_market": {
            "tvl": 2195005787,
            "asset": "WSTETH",
            "chain": "Ethereum",
            "pool_id": "3b45941c-16cb-48c5-a490-16c6c4f1d86a",
            "total_apy": 0,
            "reward_apy": null,
            "stablecoin": false,
            "supply_apy": 0
        },
        "chain_count": 7,
        "best_savings_apy": {
            "asset": "USDS",
            "chain": "Arbitrum",
            "savings_apy": 3.6
        },
        "lend_market_count": 14,
        "savings_product_count": 7
    },
    "meta": {
        "timestamp": "2026-06-14T08:04:23.655Z",
        "request_id": "ae02690e-5b99-4de9-8c13-f9724a46e905"
    },
    "status": "ok",
    "message": "Spark overview retrieved successfully",
    "success": true
}
```

### Metrics

#### `GET /v1/tvl` — Spark TVL total and per-chain breakdown

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/spark-api/v1/tvl"
```

**Response:**
```json
{
    "data": {
        "note": "Total value locked across Spark (SparkLend + Spark Savings), in USD.",
        "chains": [
            {
                "tvl": 4481161274.08,
                "chain": "Ethereum"
            },
            {
                "tvl": 141270349,
                "chain": "Arbitrum"
            },
            {
                "tvl": 26669809,
                "chain": "Base"
            },
            {
                "tvl": 19163687,
                "chain": "OP Mainnet"
            },
            {
                "tvl": 15136074,
                "chain": "Unichain"
            },
            {
                "tvl": 358204,
                "chain": "Gnosis"
            },
            {
                "tvl": -0.11,
                "chain": "Avalanche"
            }
        ],
        "source": "DeFiLlama",
        "protocol": "Spark",
        "total_tvl": 4683759402.97,
        "chain_count": 7
    },
    "meta": {
        "timestamp": "2026-06-14T08:04:23.727Z",
        "request_id": "b453a460-5944-46a0-a5e7-627721ad5901"
    },
    "status": "ok",
    "message": "Spark TVL retrieved successfully",
    "success": true
}
```

### Lending

#### `GET /v1/markets` — SparkLend lending markets with supply APY and TVL

**Parameters:**
- `chain` (query, optional, string) — Filter by chain (e.g. Ethereum, Arbitrum, Base) Example: `Ethereum`
- `min_tvl` (query, optional, string) — Minimum market TVL in USD Example: `1000000`
- `limit` (query, optional, string) — Results (1-100, default 25) Example: `25`
- `sort` (query, optional, string) — Sort by tvl, supply_apy or apy Example: `tvl`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/spark-api/v1/markets?chain=Ethereum&min_tvl=1000000&limit=25&sort=tvl"
```

**Response:**
```json
{
    "data": {
        "note": "SparkLend lending markets — supply APY and TVL per asset.",
        "sort": "tvl",
        "chain": "Ethereum",
        "count": 13,
        "source": "DeFiLlama",
        "markets": [
            {
                "tvl": 2195005787,
                "asset": "WSTETH",
                "chain": "Ethereum",
                "pool_id": "3b45941c-16cb-48c5-a490-16c6c4f1d86a",
                "total_apy": 0,
                "reward_apy": null,
                "stablecoin": false,
                "supply_apy": 0
            },
            {
                "tvl": 588726624,
                "asset": "USDS",
                "chain": "Ethereum",
                "pool_id": "54e9b138-3146-4c1f-8dce-1cb948f5ef96",
                "total_apy": 3.7,
                "reward_apy": 3.7,
                "stablecoin": true,
                "supply_apy": null
            },
            {
                "tvl": 211510745,
                "asset": "LBTC",
                "chain": "Ethereum",
                "pool_id": "ff17b423-bccc-4d12-9a72-68bde120ac62",
                "total_apy": 0,
                "reward_apy": null,
                "stablecoin": false,
                "supply_apy": 0
            },
            {
                "tvl": 174976632,
                "asset": "WETH",
                "chain": "Ethereum",
                "pool_id": "24195b31-d749-445f-bf9e-b65aa025ebdd",
                "total_apy": 1.44,
                "reward_apy": null,
       
…(truncated, see openapi.json for full schema)
```

### Savings

#### `GET /v1/savings` — Spark Savings products (Sky Savings Rate) with live savings APY

**Parameters:**
- `chain` (query, optional, string) — Filter by chain (e.g. Ethereum, Arbitrum, Base) Example: `Ethereum`
- `limit` (query, optional, string) — Results (1-100, default 25) Example: `25`
- `sort` (query, optional, string) — Sort by tvl or apy Example: `apy`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/spark-api/v1/savings?chain=Ethereum&limit=25&sort=apy"
```

**Response:**
```json
{
    "data": {
        "note": "Spark Savings products (sUSDS / USDS / USDC / USDT) passing through the Sky Savings Rate, by chain. savings_apy is the live yield.",
        "count": 4,
        "source": "DeFiLlama",
        "matched": 4,
        "product": "Spark Savings",
        "savings": [
            {
                "tvl": 325900910,
                "asset": "USDC",
                "chain": "Ethereum",
                "pool_id": "c5c74dd1-995c-4445-9d84-3e710bad7d52",
                "savings_apy": 3.6
            },
            {
                "tvl": 903012,
                "asset": "PYUSD",
                "chain": "Ethereum",
                "pool_id": "4d33c615-a969-4c55-9acf-49d8d14a1063",
                "savings_apy": 3.6
            },
            {
                "tvl": 1102751546,
                "asset": "USDT",
                "chain": "Ethereum",
                "pool_id": "a5d67f7e-5b51-4a9d-969d-caf051a7f5a4",
                "savings_apy": 2.5
            },
            {
                "tvl": 120988106,
                "asset": "ETH",
                "chain": "Ethereum",
                "pool_id": "bace601a-530a-432c-9b79-8c6451de25ea",
                "savings_apy": 1.4
            }
        ],
        "protocol": "Spark"
    },
    "meta": {
        "timestamp": "2026-06-14T08:04:23.880Z",
        "request_id": "26d7c2c8-ec93-4474-8f45-e7e0a55e1984"
    },
    "status": "ok",
    "message": "Spark Savings retrieved successfully",
    "success": 
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Service metadata & live sample

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/spark-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "markets takes optional chain, min_tvl, limit (1-100) and sort (tvl, supply_apy or apy). savings takes optional chain, limit and sort (tvl or apy). All money values are USD; APYs are percentages. Other endpoints take no parameters.",
        "sample": {
            "total_tvl": 4683759402.97,
            "best_savings_apy": 3.6
        },
        "source": "DeFiLlama open API (api.llama.fi + yields.llama.fi), live",
        "service": "spark-api",
        "endpoints": {
            "GET /v1/tvl": "Spark TVL total and per-chain breakdown.",
            "GET /v1/meta": "This document.",
            "GET /v1/markets": "SparkLend lending markets with supply APY and TVL (chain, sort).",
            "GET /v1/savings": "Spark Savings products (Sky Savings Rate) with live savings APY (chain, sort).",
            "GET /v1/overview": "Combined Spark snapshot (TVL + markets + savings + best savings rate)."
        },
        "description": "Live protocol metrics for Spark (the Sky / former MakerDAO ecosystem's capital-allocation protocol), keyless. Both Spark products: SparkLend, the lending money-market with per-asset supply APY and TVL, and Spark Savings, the sUSDS/USDS/USDC/USDT savings products passing through the Sky Savings Rate — a savings-yield dimension other lending APIs don't have. Plus total value locked and per-chain TVL. One combined overview snapshots it all. Live, nothing stored beyond a short protective cache. The Spark-metrics layer fo
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/spark-api
OpenAPI spec: https://www.oanor.com/api/spark-api/openapi.json
