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.

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 }
Where this information came from

This is an independent, third-party profile of Circle Realtime WebSocket API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.