generated: '2026-09-19' method: searched source: https://docs.itsgloria.ai/gloria-data-platform/api-integration/#news-websocket-api sources: - https://docs.itsgloria.ai/gloria-data-platform/api-integration/ - openapi/itsgloria-ai-openapi.yml#websocketFeed spec_type: WebSocket asyncapi_published: false asyncapi_probe: - {url: https://www.itsgloria.ai/asyncapi.yaml, status: 404, checked: '2026-09-19'} - {url: https://www.itsgloria.ai/asyncapi.json, status: 404, checked: '2026-09-19'} - {url: https://docs.itsgloria.ai/asyncapi.yaml, status: 404, checked: '2026-09-19'} - {url: https://ai-hub.cryptobriefing.com/asyncapi.json, status: 404, checked: '2026-09-19'} webhooks_published: false note: >- This is NOT an AsyncAPI document and no AsyncAPI or Webhooks pointer is claimed for it. Gloria documents a client-initiated WebSocket push feed in prose and JSON examples, and the OpenAPI carries it as a GET /ws/feed operation (websocketFeed, response 101) whose description repeats the message vocabulary in upper-case (SUBSCRIBE/PING) while the docs use lower-case (subscribe/ping) - the docs are the fuller and more recent source and are followed here. No provider-published webhook surface exists for Gloria: the autogenerated hub spec at ai-hub.cryptobriefing.com/openapi.json lists /webhooks register/list/delete operations tagged "webhooks", but they are undocumented on docs.itsgloria.ai and are not claimed. The message payload of the data event is the same NewsItem object the REST /news endpoint returns (see data-model/). endpoint: url: wss://ai-hub.cryptobriefing.com/ws/feed?token= openapi_stated_url: wss://ai.gloriaterminal.com/ws/feed?token= (host does not resolve; docs host used) auth: JWT as the token query parameter (any token from authentication/ - public tokens have no feed permissions) tier_access: WebSocket streaming is listed as Enterprise-only on the pricing page model: one connection, per-category subscriptions, server pushes each news item as it clears the pipeline client_messages: - type: subscribe purpose: Start receiving items for one feed category fields: {feed_category: string} - type: unsubscribe purpose: Stop receiving items for one feed category fields: {feed_category: string} - type: pong purpose: Keep-alive reply to a server ping fields: {timestamp: number (echo the ping timestamp)} server_messages: - type: connected fields: {message: string} example: '{"type":"connected","message":"Connection established."}' - type: subscribed fields: {feed_category: string} - type: unsubscribed fields: {feed_category: string} - type: data fields: {content: NewsItem} payload_schema: openapi/itsgloria-ai-openapi.yml#/components/schemas/NewsItem - type: error fields: {error: string, details: string} example: '{"type":"error","error":"Permission denied","details":"No permission for crypto feed"}' - type: ping fields: {timestamp: number} cadence: every 30 seconds lifecycle: steps: [connect with a valid token, receive connected, subscribe to feeds, receive data events, answer pings with pong, unsubscribe when done] idle_timeout: connection auto-closes after 5 minutes of inactivity close_codes: - {code: 1000, meaning: normal closure (server shutting down or inactive connection)} - {code: 1008, meaning: policy violation (missing or invalid token)} channels: - name: feed_category subscription keys: [ai, ai_agents, base, bitcoin, crypto, dats, defi, ethereum, hyperliquid, machine_learning, macro, on_chain_whale, perps, ripple, rwa, solana, tech, token_listings, virtuals] source: GET /available-feed-categories (getAvailableFeedCategories)