Introduction
Brock Glass is a Bitcoin intelligence data platform. We produce every number ourselves from primary sources, read market structure, and expose it as one clean API so you can act before price reacts.
Base URL
All requests are made over HTTPS to a single versioned host. There is no sandbox host. Use a test key against the same base URL to get replayed data.
What makes the data different
Most vendors resell an aggregator feed. We run our own collection layer across 24 venues and reconstruct structure at the source, so the signal is not smoothed, lagged, or re-derived from someone else's snapshot.
- Primary source. Order flow, liquidations, and on-chain state measured directly, not inferred from candles.
- Structure first. Cascade probability, whale clustering, and pressure are computed continuously, not on request.
- One feed, every tier. The same primary-source data runs every endpoint. Tiers change rate limits and history depth, never the numbers.
Where to go next
Authentication
Every request is authenticated with a secret API key sent as a bearer token. Keys are minted in the developer console and carry a fixed scope.
API keys
Create keys under Console → API keys. A live key starts with bg_live_ and a test key with bg_test_. Treat both like passwords. Never commit them to source control or ship them in a browser bundle.
The Authorization header
Send your key in the Authorization header on every call. Requests without a valid key return 401.
Key scopes
Scope is set when the key is created and cannot be widened later. Rotate a key to change its secret without downtime; the old secret stays valid for 24 hours.
Quickstart
Three steps take you from an empty terminal to a live cascade reading. This uses your live key, but a test key hits the same base URL with replayed data.
The three steps
Authorization: Bearer on every request.Make the request
Read the response
You get back a JSON object with the current structural zones. Each zone is a price level where liquidation pressure is building, with the dominant side and notional at risk.
{
"symbol": "BTCUSDT",
"spot": 61240.5,
"generated_at": "2026-07-10T14:00:00Z",
"fuel_map": {
"below": [
{ "price": 60500, "fuel_usd": 41200000, "distance_pct": -1.21 },
{ "price": 59800, "fuel_usd": 88600000, "distance_pct": -2.35 }
],
"above": [
{ "price": 62100, "fuel_usd": 33900000, "distance_pct": 1.40 }
]
}
}
Rate limits & tiers
Every tier reads the same primary-source feed. What changes is how often you can call it, how far back history goes, and which advanced endpoints unlock.
Tier limits
Limit headers
Every response carries your current budget so you never have to guess. Read these instead of polling blindly.
Handling 429
When you exceed the burst or daily budget you get a 429 with a Retry-After header in seconds. Back off for that duration; do not retry immediately. WebSocket connections are never rate limited on Quant and above.
/v1/btc/cascade/heatmap
Cascade heatmap
Returns the current liquidation cascade probability across price levels. This is the flagship endpoint: it maps where forced selling or buying is most likely to trigger.
Query parameters
Response fields
Example
{
"symbol": "BTCUSDT",
"generated_at": "2026-07-10T14:00:00Z",
"fragility_state": "CONTAINED",
"edge_tier": "context",
"chain_depth": 1.8,
"snapback_odds": 0.61,
"wick_prediction": "BLIND"
}
Webhooks
Push structural events to your own systems over HTTPS. Register an endpoint, subscribe to event types, and verify each delivery with the signature header.
Register an endpoint
Add your URL under Console → Webhooks, or create one over the API. Deliveries are retried with exponential backoff for up to 24 hours if your endpoint returns a non-2xx status.
Event types
Payload
{
"event": "cascade.fragility_change",
"symbol": "BTCUSDT",
"sent_at": "2026-07-10T14:00:00Z",
"data": {
"fragility_state": "SELF_FEEDING",
"chain_depth": 3.2,
"snapback_odds": 0.28
}
}
Verify the signature
Each delivery includes an X-Brock-Signature header: an HMAC-SHA256 of the raw body using your webhook secret. Compute the same HMAC on your side and compare in constant time before trusting the payload.
Errors
The API uses conventional HTTP status codes. Any 4xx carries a machine-readable error object so you can branch on code rather than parsing messages.
Status codes
Error object
{
"error": {
"code": "unauthorized",
"message": "Missing or invalid API key.",
"status": 401
}
}