BrockGlass
Sign in Launch Terminal
Documentation/Reference
Getting started

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.

https://api.brockglass.xyz/v1

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

Getting started

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.

Request header
Authorization: Bearer bg_live_9f3a…c2e1
Accept: application/json

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.

ScopeGrants
ReadAll GET endpoints on your tier.
StreamRead plus WebSocket and webhook subscriptions.
FullEverything, including backtest POST endpoints.
If a key leaks, revoke it immediately in the console. Revocation takes effect within seconds and cannot be undone.
Getting started

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

1
Mint an API key
Console, API keys, Create. Copy the secret once; it is only shown at creation.
2
Set the header
Pass the key as Authorization: Bearer on every request.
3
Call an endpoint
Start with the cascade heatmap. No parameters required.

Make the request

Copy
curl https://api.brockglass.xyz/api/v1/heatmap/magnets?symbol=BTCUSDT \
  -H "X-API-Key: your_api_key"

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 }
    ]
  }
}
Core concepts

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

TierReq / dayBurst / minHistory
Stream10,000607 days
Quant50,0003002 years
Pulse250,0001,200Full
OracleCustomCustomFull + raw

Limit headers

Every response carries your current budget so you never have to guess. Read these instead of polling blindly.

X-RateLimit-Limit: 50000 X-RateLimit-Remaining: 32760 X-RateLimit-Reset: 1738334400

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.

GET /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

ParameterTypeDescription
depthintNumber of zones per side. Default 5, max 25.
windowstringLookback for pressure buildup: 1h, 4h, 1d. Default 4h.
min_notionalintFilter out zones below this notional in USD.

Response fields

FieldTypeDescription
zones[].pricenumberPrice level where pressure concentrates.
zones[].sidestringlong or short, the side that gets liquidated.
zones[].notionalnumberUSD at risk in that zone.
zones[].probabilitynumberModeled trigger probability, 0 to 1.

Example

curl "https://api.brockglass.xyz/v1/btc/cascade/heatmap?depth=3&window=4h" \ -H "Authorization: Bearer bg_live_9f3a…"
{
  "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"
}
Guides

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

EventFires when
cascade.triggerA tracked cascade zone crosses its probability threshold.
whale.moveA clustered whale wallet transfers above your notional filter.
pressure.flipDirectional pressure changes sign on your chosen window.

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.

const sig = crypto .createHmac("sha256", secret) .update(rawBody) .digest("hex"); if (sig !== req.headers["x-brock-signature"]) reject();
Reference

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

CodeMeaning
400Malformed request or invalid parameter value.
401Missing or invalid API key.
403Key is valid but the endpoint is above your tier.
429Rate limit exceeded. See Retry-After.
5xxSomething failed on our side. Safe to retry with backoff.

Error object

{
  "error": {
    "code": "unauthorized",
    "message": "Missing or invalid API key.",
    "status": 401
  }
}