Werracle Radar API — Documentation

Base URL: https://api.werracle.com/v1/radar Dashboard: radar.werracle.com Status: /status Legal: Terms · Privacy · SLA

The Werracle Radar API provides:

The research behind the OEV figures is published openly, with all values re-derived on-chain:

1. Authentication

Paid endpoints require an API key. Send it in a header:

X-API-Key: wrk_pro_live_...
# or
Authorization: Bearer wrk_pro_live_...

Keys are stored only as SHA-256 hashes. A lost key cannot be recovered; contact us to have a new one issued.

Plan Price Rate limit Access
Free — per IP, fair use overview, chains, dataset, oev-analytics (summary), hot-positions (25-market sample), curator/vaults
Pro 149 USD / 30 days 600 req/min Free endpoints plus all tracked markets with borrower samples, solvers, per-transaction SVR records
Institutional 499 USD / 30 days 3,000 req/min Pro plus curator/{vault} stress tests

Design-partner access for MetaMorpho curators is available on request: [email protected].

2. Endpoints

Method Path Plan Description
GET /overview free Research baseline (dataset v1.2) and live shadow state of the Base Morpho markets, with data-freshness flags
GET /chains free OEV mechanism and research figures per chain
GET /dataset free Metadata and summary of dataset v1.2
GET /oev-analytics free / Pro SVR bid share and margins; Pro adds per-transaction records
GET /hot-positions?limit=25 free / Pro Markets with positions below HF 1.10; Pro: all markets and borrower address samples (limit ≤ 1000)
GET /solvers?limit=50 Pro Winning solver contracts: incentive, bids, oracle-priced margin
GET /curator/vaults free Largest MetaMorpho vaults on Base and supported aliases
GET /curator/{vault} Institutional Vault stress test from live positions (§4)
GET /auth/plans free Plans and payment details
POST /auth/claim-key free Activate a key after an on-chain payment (§3)
GET /auth/verify-key key Plan, rate limit and expiry of your key

Examples

Free overview:

curl -s https://api.werracle.com/v1/radar/overview | jq '.realtime_surveillance.base_l2'

Pro (solvers):

curl -s -H "X-API-Key: $WERRACLE_KEY" "https://api.werracle.com/v1/radar/solvers?limit=10"

Institutional (vault stress test, by address or alias):

curl -s -H "X-API-Key: $WERRACLE_KEY" https://api.werracle.com/v1/radar/curator/0xbeeF010f9cb27031ad51e3333f9aF9C6B1228183
curl -s -H "X-API-Key: $WERRACLE_KEY" https://api.werracle.com/v1/radar/curator/steakhouse

Errors

Code Meaning
400 Invalid request. claim-key returns the reason and, where relevant, the message to sign
401 Missing or invalid key
403 Your plan does not include the endpoint
404 Unknown vault
429 Rate limit exceeded
503 An upstream data source is temporarily unavailable

3. Subscribing with USDC on Base

Self-serve payment is available only when /auth/plans shows "self_serve_payments_enabled": true. Otherwise, write to [email protected] for an invoice.

  1. Pay. Send the plan amount in native USDC on Base (0x8335…2913) to the address shown by /auth/plans, from a wallet you control.
  2. Request the message. Call claim-key. The response contains the exact message to sign:
    curl -s -X POST https://api.werracle.com/v1/radar/auth/claim-key \
      -H 'content-type: application/json' \
      -d '{"tx_hash":"0x…","tier":"pro","email":"[email protected]"}'
    # → {"error":"signature required","sign_this_message":"Werracle Radar API key claim\ntx: 0x…\ntier: pro\nemail: [email protected]", …}
  3. Sign. Sign the message with the same wallet that sent the USDC (EIP-191 personal_sign). Smart-contract wallets are supported through EIP-1271. Then send the request again with the signature:
    // ethers v6
    const sig = await signer.signMessage(msg);   // msg = sign_this_message exactly
    # Foundry
    cast wallet sign --private-key $PK "$MSG"
    curl -s -X POST …/auth/claim-key -H 'content-type: application/json' \
      -d '{"tx_hash":"0x…","tier":"pro","email":"[email protected]","signature":"0x…"}'
  4. Store the key. The response contains your key. It is shown once and is valid for 30 days.

Rules:

4. Vault stress test model

/curator/{vault} evaluates every borrow position in the markets the vault supplies to. Data comes from the Morpho public API and is cached for 5 minutes. For each scenario (current price, −5, −10, −15, −20 and −30% collateral price, with the loan asset held fixed):

Quantity Definition
Liquidatable debt > collateral × (1 − shock) × LLTV
Liquidation incentive factor LIF = min(1.15, 1 / (0.3·LLTV + 0.7)), as in Morpho Blue
Repayable debt R = min(debt, collateral' / LIF)
Incentive (OEV) R × (LIF − 1)
Market bad debt debt − R
Vault exposure Market bad debt × the vault's share of market supply
Expected SVR proceeds Incentive × 0.9438. This is the incentive-weighted bid share measured on Base. Proceeds accrue to SVR contracts, not to the vault

Not modelled:

For the largest markets, the 10,000 largest positions are evaluated. The response reports the share of market debt they cover (debt_coverage_of_evaluated_positions).

Back-test: 12–18 October 2026 sell-off

We re-ran the model against what actually happened on-chain between 12 and 19 October 2026 (Base, Morpho Blue). The test covers the 10 markets with SVR liquidations in our research sample: cbXRP, WETH, SOL, cbLTC, cbADA, JitoSOL, cbDOGE, cbZEC and cbHYPE against USDC, plus cbBTC/USDC.

Method:

This tests whether the model finds the right positions and debt for a given price move. It does not test price forecasting.

Run Positions flagged Liquidated positions (existing at start) Found Recall (debt) Precision (debt)
Daily refresh (7 one-day windows) 640 615 606 (98.5%) 99.8% 70.7%
Single snapshot, 7-day window 768 608 581 (95.6%) 98.3% 46.1%

What the numbers mean:

Totals for the week:

Quantity Value
Liquidated debt in these markets $1.67M
Bad debt none
Model-predicted bad debt $0
Positions opened after the snapshot and liquidated in the same window 2, $677

Data and code: backtest_oct12_18.py · result JSON.

5. Data freshness

/overview reports:

Field Meaning
position_snapshot_age_sec Age of the live position snapshot
shadow_status_age_sec Age of the shadow process's last status update
markets_debt_snapshot_utc Time of the per-market debt snapshot
data_stale true when the live shadow has not updated for more than 5 minutes

Treat null values as "not available". The API never substitutes placeholder numbers.

6. Changelog

7. Contact

Purpose Address
General and sales [email protected]
Security [email protected]
Privacy [email protected]

Werracle Radar is operated by ITouch Systems, Çukurova Teknokent, Adana, Türkiye. Outputs are estimates provided as information only, not financial advice.