Skip to main content

circle-so-python-sdk

CI

Python SDK for Circle.so covering three APIs:

  • Headless Auth API -- token management for headless integrations
  • Admin API V2 -- server-side community management (~120 endpoints)
  • Headless Client API V1 -- member-facing operations (~100 endpoints)

Installation

pip install circle-so-python-sdk

Token Types

Circle uses two different API tokens. Which one you need depends on what you want to access:

Token Source Use for
Admin API token Circle Admin > Settings > API client.admin.* -- manage members, spaces, posts as admin
Headless Auth token Circle Admin > Developers > Headless Auth client.auth.* + client.headless.* -- DMs, notifications, posts as a user

These are not interchangeable. Admin endpoints return 401 with a headless token and vice versa.

Quick Start

from circle import CircleClient

# --- Admin API (server-side management) ---
# Requires: Admin API token
admin_client = CircleClient(api_token="YOUR_ADMIN_TOKEN")
community = admin_client.admin.get_community()
members = admin_client.admin.list_community_members()

# --- Creating posts (admin API) ---
# tiptap_body MUST be wrapped in a "body" key, and uses camelCase node types
tiptap_body = {
    "body": {
        "type": "doc",
        "content": [
            {"type": "paragraph", "content": [{"type": "text", "text": "Hello world"}]},
            {"type": "bulletList", "content": [
                {"type": "listItem", "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Item one"}]}]},
            ]},
        ]
    }
}
post = admin_client.admin.posts.create_post(
    space_id=123456,
    name="My Post Title",
    tiptap_body=tiptap_body,
    status="published",
)

# --- Headless API (user-scoped: DMs, notifications, posts) ---
# Requires: Headless Auth token
headless_client = CircleClient(api_token="YOUR_HEADLESS_TOKEN")

# Option 1: Convenience method (recommended)
user = headless_client.headless_as_user(email="you@example.com")
rooms = user.chat_notif_members.list_chat_rooms()
unread = user.chat_notif_members.get_unread_chat_rooms()

# Option 2: Manual two-step flow
token = headless_client.auth.create_auth_token(email="you@example.com")
user_client = CircleClient(api_token=token.access_token, community_url="https://your-community.circle.so")
spaces = user_client.headless.list_spaces()

Async Support

from circle import AsyncCircleClient

async with AsyncCircleClient(api_token="YOUR_TOKEN") as client:
    members = await client.admin.list_community_members()

API Coverage

API Endpoints Sync Async
Headless Auth 4 Yes Yes
Admin V2 ~118 Yes Yes
Headless Client V1 ~101 Yes Yes

Documentation

  • Quickstart -- install, auth, basic usage
  • Admin API -- all admin endpoints with examples
  • Headless API -- all headless endpoints with examples
  • Auth API -- headless auth token management
  • Models -- complete models reference
  • Webhooks -- signature verification and payload parsing
  • Limitations -- known Circle API limitations (mentions, polls, moderators)

Project Structure

src/circle/
  __init__.py           # Public API exports
  client.py             # CircleClient / AsyncCircleClient facade
  http.py               # Sync/Async HTTP transport with retry
  exceptions.py         # Typed exceptions (401/403/404/422/429)
  pagination.py         # Auto-pagination helpers
  rate_limit.py         # Token bucket rate limiter
  validation.py         # Request body validation models
  webhooks.py           # Webhook signature verification
  models/
    auth.py             # HeadlessAuthToken, RefreshedAccessToken
    admin/              # ~35 Pydantic models for Admin API
    headless/           # ~40 Pydantic models for Headless API
  api/
    auth.py             # Headless Auth client (4 endpoints)
    admin_*.py          # 8 Admin API client modules
    headless_*.py       # 3 Headless API client modules

Contributing

  1. Clone the repo and install in dev mode: pip install -e .[dev]
  2. Run tests: pytest tests/ -v --ignore=tests/integration
  3. Follow conventional commit format for commit messages

License

MIT

Metadata

Release files for circle-so-python-sdk 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for circle-so-python-sdk 0.1.4
File Size Uploaded
circle_so_python_sdk-0.1.4.tar.gz 53.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for circle-so-python-sdk 0.1.4
File Interpreter ABI Platform
circle_so_python_sdk-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 105.8 kB

Release files / circle_so_python_sdk-0.1.4.tar.gz

Download URL circle_so_python_sdk-0.1.4.tar.gz
Size 53.8 kB
Tags Source
SHA-256 checksum
How to use checksums
4b57ae13bf3539f499aa9e20f40d7720822083c22436e26cc9d1666f5c82def4
BLAKE2b-256 checksum
How to use checksums
cd42924ab46571a7d016755ffd002f860c7c70a3e5f4da080315c1daa82b93d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / circle_so_python_sdk-0.1.4-py3-none-any.whl

Download URL circle_so_python_sdk-0.1.4-py3-none-any.whl
Size 52.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3bd1a61dcdf36bd53537496da4fbfe7e5fc396620179fa650cf6f33bb334c5bb
BLAKE2b-256 checksum
How to use checksums
a465d88c4dfc793e4a528790af801b64918b9e63557fb90f9c14539a33b1f56f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.1.5

2 release files

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page