Circle Realtime WebSocket API

Beta ActionCable (Rails) WebSocket surface for realtime chat and notifications, connected at wss://app.circle.so/cable with a member Bearer access token and a whitelisted Origin header. Exposes a NotificationChannel (new-notification and unread-count events) and three chat channels for member-level room updates, room-wide messages, and thread events.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/circle-community-realtime-websocket-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

AsyncAPI Specification

circle-community-asyncapi.yml Raw ↑
asyncapi: 2.6.0
info:
  title: Circle Realtime WebSocket API (Beta)
  version: '1.0'
  description: >-
    Circle exposes a documented public WebSocket API for realtime chat and
    notifications, in beta for customers on the Business plan and above. The
    transport is ActionCable (Rails' WebSocket framework), a pub/sub protocol,
    connected at wss://app.circle.so/cable. Clients authenticate with a
    member-scoped Bearer access token (the same HEADLESS_MEMBER_ACCESS_TOKEN
    used by the Headless Member API, which expires after one hour and must be
    refreshed) and must send an Origin header set to a domain whitelisted for
    the community. After connecting, a client subscribes to ActionCable channels
    to receive server-pushed messages. This is the community-software company at
    circle.so, NOT the USDC / stablecoin financial-services company.
  license:
    name: Proprietary
    url: https://circle.so/terms
servers:
  production:
    url: app.circle.so/cable
    protocol: wss
    description: >-
      Circle ActionCable WebSocket endpoint. Requires an "Authorization: Bearer
      HEADLESS_MEMBER_ACCESS_TOKEN" header and an "Origin" header set to a
      whitelisted community domain.
    security:
      - memberToken: []
channels:
  NotificationChannel:
    description: >-
      Realtime notifications for a signed-in community member. ActionCable
      identifier channel "NotificationChannel"; the underlying pub/sub stream is
      notification-channel-{community_member_id}.
    subscribe:
      operationId: receiveNotifications
      summary: Receive realtime notification events for the member.
      message:
        oneOf:
          - $ref: '#/components/messages/NewNotification'
          - $ref: '#/components/messages/UpdateNewNotificationCount'
          - $ref: '#/components/messages/ResetNewNotificationCount'
  ChatRoomMemberChannel:
    description: >-
      Member-specific chat channel for room creation and update events. Pub/sub
      stream chat-room-channel-{community_member_id}.
    subscribe:
      operationId: receiveMemberChatEvents
      summary: Receive chat room creation and update events for the member.
      message:
        $ref: '#/components/messages/ChatRoomEvent'
  ChatRoomChannel:
    description: >-
      Room-wide chat channel delivering messages, deletions, and updates to all
      participants of a room. Pub/sub stream chat-room-{chat_room_id}-channel.
    subscribe:
      operationId: receiveRoomMessages
      summary: Receive messages, updates, and deletions for a chat room.
      message:
        $ref: '#/components/messages/ChatMessage'
  ChatThreadChannel:
    description: >-
      Thread-level chat channel delivering thread messages and status. Pub/sub
      stream chat-community-member-{community_member_id}-threads-channel.
    subscribe:
      operationId: receiveThreadEvents
      summary: Receive thread messages and status events for the member.
      message:
        $ref: '#/components/messages/ChatThreadEvent'
components:
  securitySchemes:
    memberToken:
      type: httpApiKey
      in: header
      name: Authorization
      description: >-
        Member-scoped Bearer access token in the format "Bearer
        HEADLESS_MEMBER_ACCESS_TOKEN". Must be paired with an Origin header set
        to a whitelisted community domain.
  messages:
    NewNotification:
      name: newNotification
      title: New notification
      summary: A new notification was created for the member.
      payload:
        type: object
        properties:
          event: { type: string, example: newNotification }
    UpdateNewNotificationCount:
      name: updateNewNotificationCount
      title: Update unread notification count
      summary: The member's unread notification count changed.
      payload:
        type: object
        properties:
          event: { type: string, example: updateNewNotificationCount }
    ResetNewNotificationCount:
      name: resetNewNotificationCount
      title: Reset unread notification count
      summary: The member's unread notification count was reset.
      payload:
        type: object
        properties:
          event: { type: string, example: resetNewNotificationCount }
    ChatRoomEvent:
      name: chatRoomEvent
      title: Chat room event
      summary: A chat room was created or updated for the member.
      payload:
        type: object
        properties:
          event: { type: string }
    ChatMessage:
      name: chatMessage
      title: Chat message
      summary: A message was sent, updated, or deleted in a chat room.
      payload:
        type: object
        properties:
          event: { type: string }
          chat_room_id: { type: integer }
    ChatThreadEvent:
      name: chatThreadEvent
      title: Chat thread event
      summary: A thread message or status update was delivered.
      payload:
        type: object
        properties:
          event: { type: string }