Skip to content
GET /v1/stats

Global Wormhole scorecard

Try it live

10 free calls per day — no sign-up, no API key. Goes through the oanor gateway.

Custom headers (optional)
api.oanor.com/wormhole-api

It works. Grab an API key and use it in your project.

Get an API key

Code snippets

curl "https://api.oanor.com/wormhole-api/v1/stats" \
  -H "x-oanor-key: oanor_test_..."
await fetch("https://api.oanor.com/wormhole-api/v1/stats", {
  headers: { "x-oanor-key": "oanor_test_..." }
});
$ch = curl_init("https://api.oanor.com/wormhole-api/v1/stats");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);
import requests
requests.get(
    "https://api.oanor.com/wormhole-api/v1/stats",
    headers={"x-oanor-key": "oanor_test_..."}
)

Example response

A real response from this endpoint, captured by the latest health check.

{
    "data": {
        "note": "The global Wormhole cross-chain scorecard: total messages ever relayed and total bridged volume over the network's life, the current value locked, and message counts and bridged volume (USD) over the last 24 hours, 7, 30, 90 days and a year. A read on how much value is moving between blockchains. Live, cached ~60s.",
        "source": "Wormholescan public API (api.wormholescan.io), keyless",
        "tvl_usd": 2159954176,
        "messages": {
            "1y": 77439987,
            "7d": 1348030,
            "24h": 186555,
            "30d": 5887518,
            "90d": 18131059
        },
        "volume_usd": {
            "1y": 25093587528,
            "7d": 176653652,
            "24h": 21431221,
            "30d": 905078888,
            "90d": 3109882429
        },
        "total_messages": 1185740202,
        "total_volume_usd": 76882164630,
        "total_transactions": 8724860
    },
    "meta": {
        "timestamp": "2026-06-12T19:36:09.578Z",
        "request_id": "ad8ccd12-6f70-47ec-8d66-0e344a2d2ecb"
    },
    "status": "ok",
    "message": "Stats retrieved successfully",
    "success": true
}