API Reference
You push numbers over time. We return what cycle you're in, how you trend against peers, where something changed, what correlates with what, and what's probably coming next. Any domain. Any entity. Three API calls.
Base URL
https://intellistasis.com/api
Authentication
Pass your API key in the x-api-key header on every request. Keys are issued after email verification and expire after 7 days (trial) or with your subscription.
# Every request needs this header curl https://intellistasis.com/api/v1/intelligence?domain=retail&entity=store-1 \ -H "x-api-key: sk_stasis_YOUR_KEY"
You can also use Authorization: Bearer sk_stasis_YOUR_KEY. Both work identically.
Quick Start
Three calls. Push signals, run the engine, read the intelligence. That's it.
# 1 — Push signals curl -X POST https://intellistasis.com/api/signals \ -H "x-api-key: sk_stasis_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"domain":"retail","entity_id":"store-north","signals":[ {"metric":"daily_sales","value":12400,"ts":1750118400000}, {"metric":"customer_footfall","value":890,"ts":1750118400000} ]}' # 2 — Run the engine curl -X POST "https://intellistasis.com/api/run?domain=retail" \ -H "x-api-key: sk_stasis_YOUR_KEY" # 3 — Read the intelligence curl "https://intellistasis.com/api/v1/intelligence?domain=retail&entity=store-north" \ -H "x-api-key: sk_stasis_YOUR_KEY"
const KEY = 'sk_stasis_YOUR_KEY'; const BASE = 'https://intellistasis.com/api'; // 1 — Push signals await fetch(`${BASE}/signals`, { method: 'POST', headers: { 'x-api-key': KEY, 'Content-Type': 'application/json' }, body: JSON.stringify({ domain: 'retail', entity_id: 'store-north', signals: [ { metric: 'daily_sales', value: 12400, ts: Date.now() }, { metric: 'customer_footfall', value: 890, ts: Date.now() }, ] }) }); // 2 — Run the engine (do this after loading a batch, or on a schedule) await fetch(`${BASE}/run?domain=retail`, { method: 'POST', headers: { 'x-api-key': KEY } }); // 3 — Read the intelligence const intel = await fetch( `${BASE}/v1/intelligence?domain=retail&entity=store-north`, { headers: { 'x-api-key': KEY } } ).then(r => r.json()); console.log(intel.regime.current_state); // "growing" console.log(intel.boids.trend_state); // "challenger" console.log(intel.anomalies[0]?.metric); // "daily_sales" console.log(intel.correlations[0]?.metric_b); // "customer_footfall" console.log(intel.predictions[0]?.score); // 0.67
import requests, time KEY = 'sk_stasis_YOUR_KEY' BASE = 'https://intellistasis.com/api' HDR = {'x-api-key': KEY, 'Content-Type': 'application/json'} # 1 — Push signals requests.post(f'{BASE}/signals', headers=HDR, json={ 'domain': 'retail', 'entity_id': 'store-north', 'signals': [ {'metric': 'daily_sales', 'value': 12400, 'ts': int(time.time()*1000)}, {'metric': 'customer_footfall', 'value': 890, 'ts': int(time.time()*1000)}, ] }) # 2 — Run the engine requests.post(f'{BASE}/run?domain=retail', headers=HDR) # 3 — Read the intelligence intel = requests.get( f'{BASE}/v1/intelligence', headers=HDR, params={'domain': 'retail', 'entity': 'store-north'} ).json() print(intel['regime']['current_state']) # "growing" print(intel['boids']['trend_state']) # "challenger"
MCP Setup
Model Context Protocol
Intelli-Stasis is MCP-native. Add it to Claude Desktop, any MCP-compatible client, or your own agent framework. Your AI can call the intelligence engine as a native tool — no extra plumbing.
{
"mcpServers": {
"intelli-stasis": {
"url": "https://mcp.intellistasis.com",
"headers": {
"x-api-key": "sk_stasis_YOUR_KEY"
}
}
}
}
Once connected, your AI agent can call push_signals, run_domain, get_intelligence, and get_context as native tools. Available on Pro and Enterprise tiers.
Signal Ingestion
Write time-series data points into your domain. Accepts a single signal or a batch of up to 1,000. Duplicate data points (same domain + entity + metric + timestamp) are silently skipped — safe to call repeatedly.
{
"domain": "retail", // your namespace — any lowercase string
"entity_id": "store-north", // entity within your domain
"metric": "daily_sales", // what you're measuring
"value": 12400, // numeric
"ts": 1750118400000 // Unix ms (or Unix s — auto-detected). Defaults to now.
}
{
"signals": [
{ "domain": "retail", "entity_id": "store-north", "metric": "daily_sales", "value": 12400, "ts": 1750118400000 },
{ "domain": "retail", "entity_id": "store-north", "metric": "customer_footfall", "value": 890, "ts": 1750118400000 },
{ "domain": "retail", "entity_id": "store-south", "metric": "daily_sales", "value": 8750, "ts": 1750118400000 }
]
}
{
"ok": true,
"written": 3, // new data points stored
"skipped": 0, // duplicates or invalid rows
"errors": [] // only present if any signals were rejected
}
macro, forex, equities, energy, supply_chain, food, demographics, employment, logistics, consumer, weather, political, news, intelligence, crypto, trends. Use any other name for your own domains.Data Model
Every signal in the engine is identified by three fields. Think of them as namespace → entity → measurement.
You can have multiple domains in one account, multiple entities per domain, and as many metrics per entity as you like. The engine adapts its analysis granularity automatically based on the data density you provide (daily, weekly, or monthly bucketing).
Signal Types
You don't need all of these — the engine works with whatever you have. But the more signal types you push, the richer the output. These are the six types the engine is designed to receive:
Intelligence Engine
Triggers the full analysis pipeline on all entities and metrics in your domain. This discovers what's in the domain automatically — no entity list required. Run after a batch insert, or on a schedule that matches your data cadence.
| Param | Type | Required | Description |
|---|---|---|---|
| domain | string | required | Your domain name, e.g. retail. Can be passed as a query param or in the request body. |
curl -X POST "https://intellistasis.com/api/run?domain=retail" \ -H "x-api-key: sk_stasis_YOUR_KEY"
{
"ok": true,
"domain": "retail",
"entities": 4, // how many entities were analysed
"elapsed_ms": 812
}
The primary read endpoint. Returns all five intelligence outputs for a single entity in your domain. Structured for direct injection into an AI agent's context window.
| Param | Type | Required | Description |
|---|---|---|---|
| domain | string | required | Your domain, e.g. retail |
| entity | string | required | Entity ID, e.g. store-north |
curl "https://intellistasis.com/api/v1/intelligence?domain=retail&entity=store-north" \ -H "x-api-key: sk_stasis_YOUR_KEY"
{
"domain": "retail",
"entity": "store-north",
"as_of": "2026-06-17T09:14:22.000Z",
// ── Output 1: Cycles ──────────────────────────────────────────────
"regime": {
"current_state": "growing", // declining | recovering | growing | accelerating
"next_state": "accelerating",
"next_state_prob": 0.67, // calibrated probability 0–1
"updated_at": "2026-06-17T..."
},
// ── Output 2: Trends ─────────────────────────────────────────────
"boids": {
"trend_state": "challenger", // leader | challenger | follower | lagging | diverging
"leader": "store-7", // entity currently leading the peer group
"lag_vs_leader": 2, // periods behind the leader
"next_wave_score": 74.2, // likelihood this entity leads the next move (0–100)
"alignment": 0.81 // how closely this entity tracks the peer group
},
// ── Output 3: Anomalies ──────────────────────────────────────────
"anomalies": [
{
"metric": "daily_sales",
"direction": "down", // up | down
"magnitude_pct": -23.4, // % deviation from baseline at alarm point
"cusum_value": 5.8, // cumulative sum statistic — higher = more certain
"alarm_ts": 1749340800000, // when the structural change was detected
"baseline_mean": 13200,
"status": "active"
}
],
// ── Output 4: Correlations ────────────────────────────────────────
"correlations": [
{
"metric_a": "daily_sales",
"metric_b": "customer_footfall",
"domain_b": "retail", // may be a base layer domain, e.g. "consumer"
"entity_b": "store-north",
"r": 0.84, // correlation strength -1 to 1
"lag": 1, // positive = metric_b leads metric_a by N periods
"direction": "same" // same | inverse
}
],
// ── Output 5: Predictions ────────────────────────────────────────
"predictions": [
{
"stream": "regime",
"action_type": "state_transition",
"score": 0.67, // calibrated probability 0–1
"target": { "next_state": "accelerating" },
"created_at": 1750118400000,
"outcome_hit": null, // null until the prediction horizon passes
"accuracy_score": null
}
]
}
Five Outputs
Every entity in every domain gets the same five outputs from the engine. Same structure regardless of whether you're tracking retail stores, SaaS products, or financial instruments.
Base Layer Included
Every account gets free access to 875,000+ built-in signals across 26 markets and 18 domains — global economic data back to 1960. Your signals are automatically cross-referenced against this base layer. If your retail sales correlate with consumer confidence or your SaaS churn tracks the NASDAQ, the correlation engine finds it.
The base layer endpoints give direct access to these built-in signals and the intelligence computed on top of them.
Returns the full intelligence context for a built-in market entity — signals, cycle state, trend position, structural breaks, correlations, and a risk summary. The primary endpoint for the economic base layer.
| Param | Type | Required | Description |
|---|---|---|---|
| entity | string | one of | Market code, e.g. VN, IN, BR |
| entities | string | one of | Comma-separated codes for bulk fetch, e.g. VN,TH,MY |
| q | string | one of | Natural language query, e.g. Vietnam manufacturing outlook |
curl "https://intellistasis.com/api/v1/context?entity=VN" \ -H "x-api-key: sk_stasis_YOUR_KEY"
Drill into one intelligence output for a built-in market. Replace :m with a market code (e.g. VN) and [output] with one of the available types:
| Output | Description |
|---|---|
| mri | Manufacturing Readiness Index — composite FDI, employment, trade demand score |
| qwi | Who's Quietly Winning — identifies markets gaining share before it shows in conventional data |
| political | Political risk profile — governance quality, geopolitical alignment, fiscal posture |
| regime | Macro cycle state — expansion, transition, or stress |
| boids | Flock dynamics — market position and trajectory within the peer group |
| alerts | Active commodity and capacity alerts for this market |
curl "https://intellistasis.com/api/v1/market/VN/mri" -H "x-api-key: ..." curl "https://intellistasis.com/api/v1/market/IN/regime" -H "x-api-key: ..." curl "https://intellistasis.com/api/v1/market/BR/boids" -H "x-api-key: ..."
Available market codes: VN TH MY ID PH KH IN BD MX BR TR PL NG ZA MA SA AE (growth markets) + US CN DE GB AU NZ RU (reference markets).
Error Codes
All errors return JSON with an error field. HTTP status codes follow standard conventions.
| Status | Meaning | Common cause |
|---|---|---|
| 400 | Bad Request | Missing required parameter, invalid body, or reserved domain name used in /api/signals |
| 401 | Unauthorized | Missing, invalid, or expired API key. Check the x-api-key header and key expiry. |
| 403 | Forbidden | Attempting to write to a reserved system domain, or accessing a feature not included in your tier. |
| 429 | Rate Limited | Daily call limit reached for your tier. The response includes your current limit and a link to upgrade. |
| 500 | Internal Error | Something went wrong on our end. The error field has the detail. Retry after a short delay. |
{
"error": "API key expired. Renew your subscription at intellistasis.com."
}
Rate Limits
Call limits are per API key per calendar day (UTC). The 7-day trial runs at Pro limits.
| Tier | Daily calls | MCP access | Cross-domain correlations | Custom domains |
|---|---|---|---|---|
| Starter | 5,000 / day | — | — | ✓ |
| Pro | 50,000 / day | ✓ | ✓ | ✓ |
| Enterprise | Unlimited | ✓ | ✓ | ✓ |
A "call" is counted per HTTP request to any key-gated endpoint. Batch signal ingestion counts as 1 call regardless of how many signals are in the batch. Upgrade your plan →