API Documentation

Programmatic access to EHIQ regime intelligence. REST API, JSON responses.

Base URL

https://eventhorizoniq.com/api

Authentication

Free endpoints require no authentication. Paid endpoints require an API key via the x-ehiq-key header.

curl -H "x-ehiq-key: ehiq_your_key_here" \
  https://eventhorizoniq.com/api/sensors/vix-regime

Access Tiers

Free
No key required. Free sensors only. 200 reading limit. 60 req/min.
API Access ($249/mo)
API key required. All sensors + TIQ-ML scores + Signal Drop fires. 1,000 reading limit. 600 req/min.
Institutional
API key required. Full data including ML feature weights and pattern evidence. 10,000+ readings. 6,000 req/min.

Endpoints

GET/api/sensors

List all sensors visible to the caller. Free users see free-tier sensors only. API key holders see all active sensors.

Auth: Optional — expands results with key
// Response
{
  "sensors": [
    {
      "sensorId": "vix-regime",
      "name": "VIX Regime Detector",
      "category": "macro",
      "currentState": "ELEVATED",
      "confidence": "HIGH",
      "updatedAt": "2026-02-28T12:00:00Z"
    }
  ],
  "count": 22
}
GET/api/sensors/:id

Get a single sensor's current state, configuration, and metadata.

Auth: Required for paid sensors
// Response
{
  "sensor": {
    "sensorId": "vix-regime",
    "name": "VIX Regime Detector",
    "category": "macro",
    "currentState": "ELEVATED",
    "confidence": "HIGH",
    "tier": "free",
    "stateDefinition": {
      "STABLE": "VIX < 15, low volatility regime",
      "ELEVATED": "VIX 20-30, heightened risk"
    },
    "methodology": ["Tracks CBOE VIX index..."],
    "sources": [{"label": "CBOE", "url": "..."}],
    "updatedAt": "2026-02-28T12:00:00Z",
    "lastStateChange": "2026-02-25T08:00:00Z"
  }
}
GET/api/sensors/:id/history

Get historical readings for a sensor. Supports pagination via limit and offset query params.

Auth: Optional — higher limits with key
// GET /api/sensors/vix-regime/history?limit=100&offset=0

// Response
{
  "sensorId": "vix-regime",
  "readings": [
    {
      "state": "ELEVATED",
      "value": 28.5,
      "recordedAt": "2026-02-28T12:00:00Z"
    }
  ],
  "count": 100,
  "tier": "free",
  "max_limit": 200
}
GET/api/tiq-ml

Get latest ML-enhanced TIQ scores per ticker. Combines TIPS v2 qualitative scoring with macro-context ML model. Free users see direction and conviction. Paid users see full scoring details.

Auth: Optional — expands fields with key
// GET /api/tiq-ml?ticker=CVNA

// Response (paid)
{
  "version": "v1",
  "read_only": true,
  "governance": "ML modulates conviction, never overrides TIPS direction.",
  "count": 12,
  "scores": [
    {
      "ticker": "CVNA",
      "quarter": "Q4_FY2025",
      "horizon": 360,
      "direction_prob": 0.72,
      "combined_score": 78.5,
      "combined_direction": "BULLISH",
      "combined_conviction": 4.2,
      "tips_score": 82.0,
      "tips_direction": "BULLISH",
      "ml_confidence": "HIGH",
      "ml_gated": false,
      "macro_headwind": false,
      "regime_state": "NORMAL",
      "scored_at": "2026-02-28T10:00:00Z"
    }
  ]
}
GET/api/tiq-ml/:ticker

Get TIQ-ML score history for a specific ticker across all horizons. Supports limit query param.

Auth: Optional — expands fields with key
// GET /api/tiq-ml/CVNA?limit=10

// Response (paid)
{
  "version": "v1",
  "ticker": "CVNA",
  "count": 3,
  "scores": [
    {
      "ticker": "CVNA",
      "quarter": "Q4_FY2025",
      "horizon": 360,
      "direction_prob": 0.72,
      "combined_direction": "BULLISH",
      "ml_confidence": "HIGH",
      "scored_at": "2026-02-28T10:00:00Z"
    }
  ]
}
GET/api/signal-drops

Active inflection signals from earnings transcript analysis. Detects structural turning points (trough recovery, peak exhaustion). Free users see ticker and severity. Paid users see full scoring and evidence.

Auth: Optional — expands fields with key
// GET /api/signal-drops?ticker=OPEN

// Response (paid)
{
  "version": "v1",
  "read_only": true,
  "governance": "Intelligence proposes. Governance decides.",
  "stats": { "total": 6, "nuclear": 4, "bullish": 3, "bearish": 3 },
  "count": 6,
  "fires": [
    {
      "fire_key": "OPEN_Q1_FY2025_TROUGH_TRINITY",
      "ticker": "OPEN",
      "signal_type": "TROUGH_TRINITY",
      "direction": "BULLISH",
      "severity": "NUCLEAR",
      "tips_score": 46.8,
      "conviction": 3,
      "iv_rank": 32.1,
      "arc_type": "Type 1B",
      "avg_outcome": "+10x in 8Q",
      "first_seen": "2026-02-26T20:40:15Z"
    }
  ]
}
GET/api/proposals

List all sensor proposals from the EHIQ agent system. Shows blind spots the system has identified.

// Response
{
  "proposals": [
    {
      "id": 1,
      "proposedSensorId": "options-skew",
      "rationale": "High demand for...",
      "status": "PROPOSED",
      "priorityScore": 8.5,
      "createdAt": "2026-02-27T08:00:00Z"
    }
  ]
}

Rate Limits

Rate limits are enforced per IP (free) or per API key (paid).

Free: 60 req/min
API Access: 600 req/min
Institutional: 6,000 req/min

Exceeding limits returns 429 Too Many Requests.

Error Codes

200Success
400Bad request — invalid parameters
401Unauthorized — invalid or expired API key
403Forbidden — paid sensor, free tier access
404Not found — sensor does not exist
429Rate limit exceeded
500Internal server error

API data is read-only intelligence. Sensor states are diagnostic observations, not predictions or trading recommendations. Use at your own risk.