Starts on the free Starter tier — 1,000 calls/day, 15-minute delay. Upgrade anytime.
GET /v1/state
Poll the current world state as structured JSON. Returns top stories, confidence scores, and source metadata.
GET /v1/stream
Server-sent events for real-time push. Each event is a new story with full metadata as it arrives.
npx @oruk/mcp-server
Model Context Protocol server for AI agents. Exposes tools for querying world state and subscribing to categories.
oruk listen
Command-line interface for terminal-based monitoring. Supports filters, JSON output, and pipe-friendly formatting.
Stories hit your systems the instant we detect them. No 5-minute or 15-minute lag.
No call caps. Ingest the full firehose across all categories, regions, and sources.
Private endpoints, SLA guarantees, and priority support with named account engineers.
Webhook delivery, Kafka topics, S3 sinks, and bespoke schemas for your data pipeline.
Tell us about your use case and we'll design a package that fits.
oruk is a real-time broadcast intelligence service that monitors radio, TV, and social streams worldwide and transforms them into structured, machine-readable world state. It provides categorized news stories with confidence scores, source metadata, geographic coordinates, and topic tags — updated continuously.
Base URL: https://api.oruk.io
Categories: finance, politics, disaster, military, tech
All requests require a Bearer token. Generate a free API key:
POST https://api.oruk.io/v1/keys
Content-Type: application/json
{"email": "agent@example.com"}
Response: {"key": "ork_abc123...", "tier": "starter"}
Free tier: 1,000 calls/day, 15-minute delay.
GET /v1/state GET /v1/state?category=finance GET /v1/state?category=military&limit=10 curl -H "Authorization: Bearer ork_YOUR_KEY" https://api.oruk.io/v1/state
{"stories": [{"id": "evt_8f3a2b", "body": "Story text...", "confidence": 0.93, "category": "finance", "source": "BBC World Service", "city": "London", "region": "Europe", "lat": 51.5072, "lon": -0.1276, "topics": ["rates", "inflation"], "timestamp": "2026-03-30T15:42:00Z"}], "meta": {"count": 20, "window": "1h"}}
GET /v1/stream GET /v1/stream?category=disaster curl -N -H "Authorization: Bearer ork_YOUR_KEY" https://api.oruk.io/v1/stream
import sseclient, requests, json
r = requests.get("https://api.oruk.io/v1/stream", headers={"Authorization": "Bearer ork_YOUR_KEY"}, stream=True)
for event in sseclient.SSEClient(r).events():
story = json.loads(event.data)
print(story["body"])
const src = new EventSource("https://api.oruk.io/v1/stream?token=ork_YOUR_KEY");
src.onmessage = e => { const story = JSON.parse(e.data); console.log(story.body); };
npx @oruk/mcp-server --key ork_YOUR_KEY
Available MCP tools: oruk_get_state(category?, limit?), oruk_subscribe(category?), oruk_search(query), oruk_sources()
{"mcpServers": {"oruk": {"command": "npx", "args": ["@oruk/mcp-server", "--key", "ork_YOUR_KEY"]}}}
npm install -g @oruk/cli oruk listen --key ork_YOUR_KEY oruk listen --category finance --format json oruk listen --category disaster | jq '.body' oruk state --category military --limit 5
| Starter | $0/mo | 1,000 calls/day | 15-min delay |
| Growth | $49/mo | 10,000 calls/day | 5-min delay |
| Professional | $299/mo | 100,000 calls/day | 1-min delay |
| Enterprise | Custom | Unlimited | Real-time |
All tiers include all connection methods (REST, SSE, MCP, CLI).
Docs: https://docs.oruk.io | Status: https://status.oruk.io | Email: support@oruk.io