Skip to main content
Loading market data…
GET/api/v1/options/{underlying}/pcrHobbyist tier+ · 30 req/min

Put/Call ratio snapshot — underlying total + per-expiry breakdown.

Current OI-PCR and volume-PCR aggregated across every listed expiry, plus the per-expiry term-structure slice. Divergence between OI and vol PCR signals slow-building hedges vs reactive flow.

Path parameters

Segments of the URL path, validated server-side.

NameTypeRequiredDefaultDescription
underlyingenumrequired
BTC or ETH.
BTCETH

Query parameters

This endpoint takes no query parameters.

Response shape

Always wrapped in the standard envelope. Nullable fields are explicitly marked — treat missing numeric data as a real data-source gap, not as an error.

data payloadtypescript
// Wrapped in the standard envelope:
// {
//   data: /* shape below */,
//   meta?: { total?: number; limit?: number; offset?: number; ... }
// }

{ underlying, asOf, oiPcr, volPcr, callOi, putOi, callVol, putVol, byExpiry: Array<{ expiry, expiryMs, oiPcr, totalOi, totalVol }> }

Example

Copy the curl, replace YOUR_KEY with a real key from your dashboard, and run.

Requestbash
curl -sS "http://localhost:3000/api/v1/options/BTC/pcr"
Responsejson
{ "data": { "underlying": "BTC", "asOf": 1744834800000, "oiPcr": 0.83, "volPcr": 0.72, "callOi": 120000, "putOi": 99600, "callVol": 52000, "putVol": 37400, "byExpiry": [] }, "meta": { "total": 0 } }

Next

Check the error code reference, or get an API key to try the request against your own account.