Circle · AsyncAPI Specification

Circle Realtime WebSocket API (Beta)

Version 1.0

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.

View Spec View on GitHub CommunityCreatorsCoursesMembershipEventChatCommunity PlatformReal-TimeAsyncAPIEventsWebSockets

Channels

NotificationChannel
subscribe receiveNotifications
Receive realtime notification events for the member.
Realtime notifications for a signed-in community member. ActionCable identifier channel "NotificationChannel"; the underlying pub/sub stream is notification-channel-{community_member_id}.
ChatRoomMemberChannel
subscribe receiveMemberChatEvents
Receive chat room creation and update events for the member.
Member-specific chat channel for room creation and update events. Pub/sub stream chat-room-channel-{community_member_id}.
ChatRoomChannel
subscribe receiveRoomMessages
Receive messages, updates, and deletions for a chat room.
Room-wide chat channel delivering messages, deletions, and updates to all participants of a room. Pub/sub stream chat-room-{chat_room_id}-channel.
ChatThreadChannel
subscribe receiveThreadEvents
Receive thread messages and status events for the member.
Thread-level chat channel delivering thread messages and status. Pub/sub stream chat-community-member-{community_member_id}-threads-channel.

Messages

✉
NewNotification
New notification
A new notification was created for the member.
✉
UpdateNewNotificationCount
Update unread notification count
The member's unread notification count changed.
✉
ResetNewNotificationCount
Reset unread notification count
The member's unread notification count was reset.
✉
ChatRoomEvent
Chat room event
A chat room was created or updated for the member.
✉
ChatMessage
Chat message
A message was sent, updated, or deleted in a chat room.
✉
ChatThreadEvent
Chat thread event
A thread message or status update was delivered.

Servers

wss
production app.circle.so/cable
Circle ActionCable WebSocket endpoint. Requires an "Authorization: Bearer HEADLESS_MEMBER_ACCESS_TOKEN" header and an "Origin" header set to a whitelisted community domain.

AsyncAPI Specification

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 }

Work with this as data

Every AsyncAPI spec 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 asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • 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 AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/circle-community-asyncapi"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

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

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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