Overview REST · JSON

The Monolith API exposes everything the Premium dashboard computes: exposure by strike, derived levels, regime state, hedging forecasts, and strategy signals. Responses are JSON over HTTPS. All timestamps are ISO 8601 in UTC. API access is included with Premium only. Basic has no programmatic access.

Endpoints go live with Institutional access in Q2 2027. This preview documents the v1 contract so integrations can be built ahead of launch. Field names are stable; additional optional fields may be added. See Premium.
https://api.monolithquant.com/v1

Authentication

Every request must include your API key in the Authorization header. Keys are created in the subscriber dashboard, scoped per integration, and can be revoked at any time. Never embed keys in client-side code.

HeaderDescription
AuthorizationRequired. Bearer mq_live_…
AcceptRequired. application/json
User-AgentRecommended. Identify your client, e.g. MyExecutor/1.2
# Example
curl https://api.monolithquant.com/v1/signals/latest \
  -H "Authorization: Bearer mq_live_xxxxxxxxxxxx" \
  -H "Accept: application/json"

Rate limits

Premium keys allow 120 requests per minute on REST endpoints. For anything latency-sensitive, use webhooks rather than polling. Limit state is returned on every response.

HeaderMeaning
X-RateLimit-LimitRequests allowed per window
X-RateLimit-RemainingRequests left in the current window
X-RateLimit-ResetUnix time when the window resets

Latest signals

Returns the current active signal for each instrument in your subscription. A signal is active from publication until its stop is hit, its session closes, or it is superseded by a newer signal for the same instrument.

GET/v1/signals/latest
Query paramTypeDescription
instrumentstringOptional. Filter by ticker, e.g. ES1!. Comma-separate for multiple.
min_confidencenumberOptional. Only return signals with confidence ≥ value (0 to 1).
{
  "data": [
    {
      "id": "sig_01J8ZK3Q8W",
      "instrument": "ES1!",
      "exchange": "CME",
      "direction": "long",
      "entry": { "low": 5210.00, "high": 5225.00 },
      "stop": 5188.00,
      "confidence": 0.81,
      "model": "walk-fwd-2.4",
      "published_at": "2026-03-15T06:45:00Z",
      "expires_at": "2026-03-15T21:00:00Z",
      "status": "active"
    }
  ],
  "generated_at": "2026-03-15T06:45:02Z"
}

Signal history

Paginated list of all signals published to your account, including closed ones with their outcome. Use this to reconcile your execution log against the audit record.

GET/v1/signals
Query paramTypeDescription
from / toISO dateOptional. Inclusive date range on published_at.
instrumentstringOptional. Filter by ticker.
statusstringOptional. active, stopped, closed, expired
cursorstringOptional. Pagination cursor from a previous response.
limitintegerOptional. 1 to 200, default 50.

Instruments

Lists instruments covered by your subscription with exchange, currency, tick size, and trading-session hours.

GET/v1/instruments
{
  "data": [
    { "ticker": "ES1!",   "name": "S&P 500 E-Mini", "exchange": "CME",   "currency": "USD", "tick": 0.25 },
    { "ticker": "NQ1!",   "name": "Nasdaq E-Mini",  "exchange": "CME",   "currency": "USD", "tick": 0.25 },
    { "ticker": "CL1!",   "name": "Crude Oil",      "exchange": "CME",   "currency": "USD", "tick": 0.01 },
    { "ticker": "GC1!",   "name": "Gold",           "exchange": "CME",   "currency": "USD", "tick": 0.10 },
    { "ticker": "ZN1!",   "name": "10Y T-Note",     "exchange": "CME",   "currency": "USD", "tick": 0.015625 },
    { "ticker": "FDAX1!", "name": "DAX Futures",    "exchange": "Eurex", "currency": "EUR", "tick": 0.50 }
  ]
}

Exposure by strike

Per-strike exposure for one Greek and one expiry bucket. Weighting is by open interest, by volume, or both. Add skew_adj=true for smile-adjusted Greeks.

GET/v1/exposure/{instrument}/{greek}
ParamValuesDescription
greekgex, dex, vanna, charm, vex, tex, vomma, zomma, speed, colorPath. Which exposure to return.
bucketzero, one, full, YYYY-MM-DDQuery. 0DTE, next expiry, all ≤90d, or an explicit expiry. Default full.
weightoi, vol, bothQuery. Default both.
skew_adjbooleanQuery. Per-strike IV instead of ATM vol.
{
  "instrument": "ES1!", "greek": "gex", "bucket": "zero", "spot": 5231.25,
  "as_of": "2026-03-15T14:30:00.412Z",
  "strikes": [ [5150, -228.0, -86.9], [5200, 41.2, 118.4], [5250, 312.6, 402.1] ],  // [strike, by_vol, by_oi]
  "net": { "vol": 1712585.5, "oi": 51521.1 }
}

Levels

Derived levels for an instrument and bucket, each with a quality score (Premium dealer layer). Also available as /levels/{instrument}/changes for the largest moves over 1, 5, 10, 15 and 30 minutes.

GET/v1/levels/{instrument}
{
  "zero_gamma": 5212.4,
  "major_pos": { "oi": 5250, "vol": 5250, "quality": 0.88 },
  "major_neg": { "oi": 5150, "vol": 5100, "quality": 0.61 },
  "max_pain": 5225, "gamma_wall": 5250, "vol_trigger": 5198,
  "delta_risk_reversal": 0.118
}

Regime & hedging forecast Dealer layer

Current gamma regime with confidence, and the expected dealer hedging flow curve for the rest of the session. Regime transitions are also pushed as regime.changed webhook events.

GET/v1/regime/{instrument}
{
  "regime": "positive_gamma", "confidence": 0.79, "pin_probability": 0.64,
  "hedging_forecast": [ { "t": "15:00Z", "price": 5230, "contracts": -420 }, { "t": "20:00Z", "price": 5230, "contracts": -1840 } ],
  "driver": "charm"
}

Webhooks Push

Register an HTTPS URL and receive a POST the moment a signal is published, updated, or closed, a level moves, or the regime changes. Webhooks are the recommended path for automated execution: no polling, sub-second delivery.

POSTyour-endpoint.example.com/monolith

Each delivery includes an X-Monolith-Signature header: an HMAC-SHA256 of the raw body using your webhook secret. Verify it before acting on the payload. Deliveries are retried with exponential backoff for up to 15 minutes on non-2xx responses.

{
  "event": "signal.published",   // signal.* | level.changed | regime.changed
  "sent_at": "2026-03-15T06:45:01Z",
  "data": { /* Signal object, see reference below */ }
}

Signal object

FieldTypeDescription
idstringUnique, immutable signal identifier.
instrumentstringContinuous-contract ticker, e.g. ES1!.
exchangestringCME, Eurex, or ICE.
directionstringlong or short.
entry.low / entry.highnumberEntry zone bounds in instrument price units.
stopnumberProtective stop level.
confidencenumberModel confidence, 0 to 1.
modelstringModel identifier and version that produced the signal.
published_atstringISO 8601 UTC timestamp of publication.
expires_atstringSignal is void after this time if not triggered.
statusstringactive, stopped, closed, expired.

Errors

Errors use conventional HTTP status codes and a JSON body with a machine-readable code and a human-readable message.

StatusCodeMeaning
401unauthorizedMissing or invalid API key.
403forbiddenKey lacks the required scope or tier.
404not_foundUnknown resource.
429rate_limitedToo many requests. Respect X-RateLimit-Reset.
5xxinternalServer error. Safe to retry with backoff.
API access is included with Premium. Questions about the contract before launch? Reach us via Support.