Public API live · subscriptions opening

Market news your terminal
can act on.

Omni converts 50+ active market-news sources into deduplicated, clustered, AI-enriched events with normalized tickers, sentiment, impact, and versioned lineage. Integrate once over REST and WebSocket.

50+ sources56 distinct feeds active in the last 30 days
One contractNormalized symbols, topics, sentiment, and impact
REST + WSSCursor history and single-use 60-second tickets
VersionedEvent, model, prompt, and schema lineage
WHY TERMINALS INTEGRATE OMNI

Raw news is infrastructure. Omni is a product-ready intelligence layer.

A raw feed leaves every terminal team to rebuild source adapters, duplicate detection, entity resolution, and live-delivery reliability. Omni delivers the market event your product needs, with the analysis lineage required to reprocess history as models evolve.

Raw news feeds

  • Source-by-source parsers and reconnect logic
  • Repeated headlines for the same developing event
  • Missing or ambiguous tradable instruments
  • Unbounded text and inconsistent payload shapes

Omni AI News

  • One stable, versioned event contract
  • Deduplicated and clustered developing stories
  • Normalized instruments, sentiment, and impact
  • Cursor REST history plus ticketed live WSS
FIVE-MINUTE QUICKSTART

From API key to live events.

Create a named key in API settings and keep it on your server. The public contract is read-only, versioned, and separate from the collection path.

  1. 01Create a `news_api:read` key and save it when shown.
  2. 02Request `news_event.v1` history and persist the returned cursor.
  3. 03Exchange the key for a single-use 60-second WebSocket ticket.
  4. 04Send JSON pings and request a fresh ticket on every reconnect.
Handle errors predictably

`400` means the request or object version is unsupported. `401` means the key or ticket is invalid, expired, or already used. `403` means the News API entitlement or scope is missing. On `429`, wait until `X-RateLimit-Reset`, add jitter, and retry without dropping your last stored cursor.

Open the complete News API reference Read versioning, lifecycle, and changelog guidance
1. Request history
curl "https://api.omniterminal.app/api/v1/news?market=tradfi&limit=50&object_version=news_event.v1" \
  -H "x-api-key: YOUR_API_KEY"
2. Response shape (abridged)
{
  "object": "list",
  "api_version": "2026-07-14",
  "tier": "pro",
  "data": [{
    "object": "news_event.v1",
    "id": "analysis-revision-id",
    "event_id": "logical-event-id",
    "headline": "Market event headline",
    "tickers": ["BTC"],
    "analysis": { "model": "model-id", "schema_version": "schema-id" },
    "revision": { "kind": "original" }
  }],
  "pagination": {
    "next_before_timestamp": 1784548800000,
    "has_more": true
  }
}
3. Request the next cursor page
curl "https://api.omniterminal.app/api/v1/news?limit=50&before_timestamp=1784548800000&object_version=news_event.v1" \
  -H "x-api-key: YOUR_API_KEY"
4. Connect live from your server
const ticketResponse = await fetch(
  "https://api.omniterminal.app/api/v1/news/ws-ticket",
  { method: "POST", headers: { "x-api-key": process.env.OMNI_NEWS_API_KEY } }
);
if (!ticketResponse.ok) throw new Error(`ticket: ${ticketResponse.status}`);

const { ticket, recommended_ping_interval_seconds } = await ticketResponse.json();
const ws = new WebSocket(
  `wss://api.omniterminal.app/ws/v1/news?ticket=${ticket}`
);

const keepalive = setInterval(
  () => ws.send(JSON.stringify({ type: "ping", ts: Date.now() })),
  recommended_ping_interval_seconds * 1000
);
ws.onmessage = ({ data }) => console.log(JSON.parse(data));
ws.onclose = () => {
  clearInterval(keepalive);
  // Fetch a new single-use ticket before reconnecting with capped backoff.
};
BUILT FOR TERMINAL TEAMS

One event stream, many product surfaces.

01

News surfaces

Power searchable feeds, event pages, watchlists, and market briefings without exposing raw-source noise.

02

Alerts and automation

Trigger user-defined workflows from symbols, topics, direction, sentiment, impact, and importance.

03

Portfolio and chart context

Place relevant events beside prices, positions, orders, liquidations, and risk analysis.

PAID ACCESS

Start with the feed. Expand into the terminal.

API access is authenticated per customer and designed to share the same identity and subscription system as Omni Terminal Pro and Enterprise.

Pro

Up to 500 items per request, seven-day lookback, 60 REST requests/minute, and live WebSocket access.

Enterprise

Up to 2,000 items per request, 30-day lookback, 600 REST requests/minute, and higher-volume integration support.