API Reference
The Quakenode API provides programmatic access to real-time event ingestion, AI signal scoring, strategy management, and multi-venue execution. All API access is over HTTPS; data is returned in JSON.
stable are production-safe. Endpoints marked beta may have breaking changes with advance notice. Subscribe to the changelog to stay current.
Authentication
All requests must include your API key in the Authorization header as a Bearer token. API keys are scoped (read-only, strategy, execution) and can be managed from your dashboard.
Authorization: Bearer qn_live_your_api_key_here
Keys are prefixed with qn_live_ for production and qn_test_ for sandbox. Never expose keys in client-side code.
Key Scopes
| Scope | Permissions |
|---|---|
| read | Subscribe to event stream, query historical events, read strategies and positions |
| strategy | All read permissions + create, modify, and delete strategies |
| execution | All strategy permissions + place and cancel orders, modify risk limits |
Base URL & Versioning
https://api.quakenode.com/v1
The current version is v1. Breaking changes increment the major version; the previous major version remains accessible for 12 months after deprecation notice.
Errors
Quakenode uses standard HTTP status codes. All error responses include a JSON body with error, code, and optional details fields.
{
"error": "Strategy not found",
"code": "STRATEGY_NOT_FOUND",
"request_id": "req_8kLm4nP2qR"
}
| Status | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad Request — malformed parameters |
| 401 | Unauthorized — missing or invalid API key |
| 403 | Forbidden — key lacks required scope |
| 404 | Not Found |
| 422 | Unprocessable — failed validation (risk limits, insufficient funds) |
| 429 | Rate Limited — see Retry-After header |
| 500 | Internal Server Error |
Rate Limits
Rate limits are applied per API key. The current limits apply to REST endpoints; the WebSocket stream has separate connection limits.
| Tier | Requests / minute | Event subscriptions |
|---|---|---|
| Sandbox | 60 | 1 stream |
| Growth | 600 | 5 streams |
| Institutional | Unlimited | Unlimited |
Rate limit headers are included in all responses: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Event API
The Event API is the core of Quakenode. It exposes a scored, classified stream of market-moving events drawn from 100+ global sources, updated in real time.
Event Types
| Type | Description |
|---|---|
| FED_RATE_DECISION | Federal Reserve FOMC rate decisions, meeting minutes, dot plot releases |
| CENTRAL_BANK_POLICY | ECB, Bank of England, Bank of Japan, SNB, PBOC policy statements and decisions |
| CPI_RELEASE | Consumer price index prints across major economies (US, EU, UK, JP, etc.) |
| GDP_RELEASE | Gross domestic product data — advance, preliminary, and final readings |
| NFP_RELEASE | US non-farm payrolls and unemployment rate releases |
| MACRO_DATA | PMI, retail sales, industrial production, trade balance, housing data |
| EARNINGS_RELEASE | Quarterly earnings, guidance revisions, analyst estimate changes |
| MERGER_ACQUISITION | M&A announcements, hostile bids, regulatory approvals, deal collapses |
| REGULATORY_FILING | SEC (8-K, 13D/G, 13F), FCA, ESMA filings with parsed key fields |
| GEOPOLITICAL_EVENT | Sanctions, trade restrictions, conflicts with identified market impact |
| TRADE_POLICY | Tariff announcements, trade agreements, WTO rulings, export controls |
| IMF_WORLD_BANK | Economic outlooks, growth forecasts, credit facility announcements |
| BOND_MARKET | Sovereign rating changes, yield curve events, major auction results |
| CORPORATE_ACTION | Spin-offs, delistings, index inclusions/exclusions, share buybacks |
The Event Object
{
"id": "evt_9mXk4pQ2rT8wLn",
"type": "FED_RATE_DECISION",
"timestamp": "2026-06-18T18:00:00.042Z", // UTC, millisecond precision
"source": "federalreserve.gov",
"headline": "FOMC holds rates at 4.25–4.50%; signals two cuts in 2026",
"body": "Full parsed text of the announcement...",
"score": 9.4, // AI impact score 0–10
"sentiment": "DOVISH", // BULLISH | BEARISH | DOVISH | HAWKISH | NEUTRAL
"impact": "HIGH", // LOW | MEDIUM | HIGH | CRITICAL
"confidence": 0.97,
"tickers": ["SPY", "TLT", "GLD", "DXY"],
"regions": ["US"],
"asset_classes":["EQUITIES", "BONDS", "FX", "COMMODITIES"],
"reasoning": "Rate hold with dovish forward guidance typically positive for equities and bonds...",
"latency_ms": 4.7, // ms from source publication to API delivery
"ingested_at": "2026-06-18T18:00:00.046Z"
}
Query Events (REST)
| Parameter | Type | Required | Description |
|---|---|---|---|
| types | string[] | optional | Comma-separated event types. Omit for all types. |
| min_score | number | optional | Minimum AI impact score (0–10). Default: 0. |
| tickers | string[] | optional | Filter by affected tickers (e.g. SPY,TLT). |
| regions | string[] | optional | US, EU, UK, JP, CN, GLOBAL |
| since | ISO 8601 | optional | Return events after this timestamp. Default: 1 hour ago. |
| until | ISO 8601 | optional | Return events before this timestamp. |
| limit | integer | optional | Max results (1–1000). Default: 100. |
| cursor | string | optional | Pagination cursor from previous response. |
GET /v1/events?types=FED_RATE_DECISION,CPI_RELEASE&min_score=7.0®ions=US&limit=50 Authorization: Bearer qn_live_...
{
"data": [ /* array of Event objects */ ],
"meta": {
"total": 238,
"count": 50,
"next_cursor": "cur_a8Bz2kMpQx",
"has_more": true
}
}
Returns a single Event object. Useful for webhooks that deliver event IDs rather than full payloads.
GET /v1/events/evt_9mXk4pQ2rT8wLn
WebSocket Stream
The WebSocket stream delivers scored events in real time with sub-5ms average latency from source publication. This is the primary interface for automated strategy execution.
wss://stream.quakenode.com/v1/events?api_key=qn_live_...
Subscription Message
After connecting, send a subscription message to filter the stream. Without a subscription message you receive all events.
{
"action": "subscribe",
"types": ["FED_RATE_DECISION", "CPI_RELEASE", "GEOPOLITICAL_EVENT"],
"min_score": 7.5,
"regions": ["US", "EU"],
"strategy_id": "str_Km4Px9Rq2T" // optional: auto-trigger a strategy on match
}
Python Example
import asyncio, json, websockets API_KEY = "qn_live_your_key" async def stream(): uri = f"wss://stream.quakenode.com/v1/events?api_key={API_KEY}" async with websockets.connect(uri) as ws: # Subscribe to high-impact macro events await ws.send(json.dumps({ "action": "subscribe", "types": ["FED_RATE_DECISION", "CPI_RELEASE", "GEOPOLITICAL_EVENT", "MERGER_ACQUISITION"], "min_score": 8.0 })) async for msg in ws: event = json.loads(msg) print(f"[{event['type']}] {event['headline']}") print(f" Score: {event['score']} | Latency: {event['latency_ms']}ms") asyncio.run(stream())
Strategy API
Strategies define the rules by which Quakenode responds to incoming events. When an event matches a strategy's filters and score threshold, the strategy's action set is triggered automatically.
execution: true place real orders. Always validate strategies in sandbox (qn_test_ key) before enabling execution in production.
The Strategy Object
{
"id": "str_Km4Px9Rq2T",
"name": "FED Dovish — Long SPY",
"status": "ACTIVE", // ACTIVE | PAUSED | ARCHIVED
"trigger": {
"event_types": ["FED_RATE_DECISION"],
"sentiment": ["DOVISH"],
"min_score": 8.5,
"regions": ["US"]
},
"actions": [
{
"type": "MARKET_ORDER",
"direction": "BUY",
"ticker": "SPY",
"quantity": 500,
"venues": ["CBOE", "NYSE", "NASDAQ"]
}
],
"risk": {
"max_position_usd": 500000,
"stop_loss_pct": 2.0,
"daily_loss_limit":25000
},
"execution": true,
"created_at": "2026-05-10T09:22:11Z",
"updated_at": "2026-06-01T14:07:33Z"
}
Creates a strategy. Set execution: false to create a signal-only strategy (no orders placed). Requires strategy scope; execution: true also requires execution scope.
Returns all strategies for the account. Supports status filter: ACTIVE, PAUSED, ARCHIVED.
Returns a single strategy object including its full trigger, action, and risk configuration.
Partial updates are supported. Changing status to PAUSED stops execution immediately without deleting the strategy. In-flight orders are not affected.
Strategies are soft-deleted (status set to ARCHIVED). All historical execution logs are preserved. Hard deletion is not supported.
Orders API
Orders can be created manually via the REST API or automatically by active strategies. All orders are routed across the configured venues and confirmed with full execution details.
{
"ticker": "SPY",
"direction": "BUY", // BUY | SELL | SHORT | COVER
"type": "MARKET", // MARKET | LIMIT | STOP | STOP_LIMIT
"quantity": 200,
"venues": ["NYSE", "CBOE"], // optional: auto-route if omitted
"time_in_force": "DAY", // DAY | GTC | IOC | FOK
"event_id": "evt_9mXk4pQ2rT8wLn" // optional: link order to triggering event
}
{
"id": "ord_7pLm2nK9xB",
"status": "FILLED",
"fills": [
{ "venue": "NYSE", "qty": 120, "price": 548.23, "latency_ms": 3.8 },
{ "venue": "CBOE", "qty": 80, "price": 548.25, "latency_ms": 4.2 }
],
"avg_price": 548.24,
"total_qty": 200,
"created_at": "2026-06-18T18:00:00.061Z"
}
Returns orders with optional filters: status (PENDING, FILLED, CANCELLED, REJECTED), ticker, strategy_id, since, until.
Returns full order details including individual fills per venue, latency per venue, and the triggering event ID if applicable.
Cancels an order with status PENDING. Returns 422 if the order is already filled or cancelled.
Positions API
{
"ticker": "SPY",
"quantity": 700,
"direction": "LONG",
"avg_cost": 546.18,
"market_value":384326.00,
"unrealized_pnl":1435.00,
"exposure_pct": 18.4,
"opened_at": "2026-06-17T09:31:02Z"
}
Returns the current position for a specific instrument. Returns 404 if no position exists.
Risk Controls API
Risk limits are enforced at order submission time. Breaching a limit returns 422 and the order is rejected. Limits can be read and updated via API.
{
"gross_exposure_usd": 2084500,
"net_exposure_usd": 1230400,
"largest_position_pct": 18.4,
"realized_pnl_today": 4218.50,
"unrealized_pnl": 7632.00,
"drawdown_today_pct": -0.34
}
Returns all currently configured risk limits for the account including per-strategy overrides.
{
"max_position_usd": 500000,
"max_gross_exposure": 3000000,
"daily_loss_limit": 50000,
"max_orders_per_min": 20,
"circuit_breaker_pct": 3.0 // halt all execution if daily loss hits this %
}
SDKs & Libraries
| Language | Package | Status |
|---|---|---|
| Python | pip install quakenode | Stable |
| JavaScript / Node | npm install @quakenode/sdk | Stable |
| Go | go get github.com/quakenode/go-sdk | Beta |
| Java | Maven: io.quakenode:sdk | Beta |
| REST / cURL | Direct HTTP — no SDK required | Stable |
Changelog
- Added
TRADE_POLICYandIMF_WORLD_BANKevent types - Risk Controls API (
/v1/risk) promoted to stable - WebSocket now supports
strategy_idauto-trigger parameter
- Added
/v1/positionsendpoints - Order fills now include per-venue latency and price
- Go SDK released in beta
- Event Stream API, WebSocket, Strategy API
- Python and JavaScript SDKs
- Sandbox environment available on all accounts
Questions about the API?
Our team responds within one business day. Include your use case and we'll recommend the right approach.
Contact Us →