canonical: https://jentic.com/apis/heartbeat.chat/heartbeat-chat

# Heartbeat Chat Heartbeat API

Jentic publishes the only available OpenAPI specification for Heartbeat API, keeping it validated and agent-ready. Heartbeat is a community platform for membership communities that combines chat, events, and member directories. The v0 API exposes user management, channels and threads, comments, and event-style notifications, so community operators can sync members from a CRM, post automated announcements, or build custom integrations on top of an existing Heartbeat space. The endpoints follow REST conventions with bearer-token auth.

## For AI agents

Manage Heartbeat community users, channels, threads, and comments through bearer-authenticated REST endpoints, including search and reactivation flows.

## Scope

Does not handle billing, video conferencing, or course delivery - use for Heartbeat community member, channel, thread, and comment management only.

## Capabilities

- List, create, update, and deactivate community members through /users
- Reactivate previously deactivated members via POST `/users/reactivate`
- Search members by name, email, or other fields through `/find/users`
- Manage channels and threads through /channels and /threads endpoints
- Post and update threads and comments inside a channel via PUT /threads and PUT /comments
- List threads in a specific channel through `/channels/{channelID}/threads`

## Use cases

### CRM-Synced Community Membership

Sync members from your CRM or billing system into Heartbeat so paying customers automatically gain access to the community. POST to /users when a new customer is created, PUT to /users when contact data changes, and DELETE when access lapses. The `/find/users` endpoint helps detect duplicates before creating a new record.

Example prompt: POST /users with name, email, and metadata for a new paid customer and confirm the user appears via `/find/users`

### Automated Announcements and Threads

Wire automation into specific channels so that product launches, new blog posts, or scheduled reminders show up as threads without a human posting them. Find the channel via /channels and `/channels/{channelID}/threads`, then PUT /threads with the title and body. Follow up by PUT /comments to reply with extra context or links.

Example prompt: PUT /threads in a specific channelID with a launch announcement and follow up with PUT /comments for the documentation link

### Member Reactivation Flow

When a churned customer returns and renews, your billing webhook can call POST `/users/reactivate` to restore their Heartbeat membership without recreating the account. This preserves the user's history, threads, and comments inside the community. Combined with `/find/users` to look up the existing record, the flow is fully automated.

Example prompt: Look up the user via `/find/users` by email, then POST `/users/reactivate` with the userID

### AI Agent Community Operations via Jentic

A community-ops agent searches Jentic for 'add a member to a community' and Jentic returns Heartbeat's POST /users operation. The agent provisions members, posts threads on launch days, and reactivates returning customers, all without holding the bearer token directly because Jentic securely stores it. This makes Heartbeat operable from copilots and scheduled workflows.

Example prompt: Use Jentic search 'add a member to a community' to load /users for heartbeat.chat and execute with the new member's name and email

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/users` | List community members |
| POST | `/users` | Create a new member |
| PUT | `/users` | Update a member |
| DELETE | `/users` | Deactivate a member |
| POST | `/users/reactivate` | Reactivate a previously deactivated member |
| GET | `/find/users` | Search members |
| GET | `/channels` | List channels |
| PUT | `/threads` | Create or update a thread |

## Key resources

- **Users** — Create, list, update, deactivate, and reactivate community members via /users
- **Channels** — Manage channels via /channels and `/channels/{channelID}`
- **Threads** — Post and update threads via /threads and read by channel via `/channels/{channelID}/threads`
- **Comments** — Add or update comments on threads via /comments
- **Find Users** — Search the member directory via `/find/users`

## Why Jentic

- **Setup:** Wiring Heartbeat by hand means minting a bearer token that grants full community read and write, and attaching the Authorization header on every call. Through Jentic you install once, import the Heartbeat API from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Heartbeat identifies members and threads through the request body on shared endpoints like /users and /threads, so limit the agent to the operations it needs, such as adding a member or posting a thread. You choose the operations it may call, so destructive ones like deleting a user are not included unless you add them.
- **Credential handling:** Your Heartbeat bearer token is stored once, encrypted, by your own Jentic One instance and injected as the Authorization header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'add a member to a community' or 'post a community thread', and Jentic returns the matching /users, /channels, or /threads operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Discord API** — Discord covers a similar community-chat use case with a much larger feature surface and free tier
- **Circle API** — Circle is a direct competitor for membership-community platforms with similar member, space, and post APIs
- **Slack API** — Slack runs internal team communication while Heartbeat hosts the external customer or member community

## FAQ

### Why is there no official OpenAPI spec for Heartbeat API?

Heartbeat does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Heartbeat via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Heartbeat API use?

The API uses HTTP Bearer authentication. Pass your Heartbeat token in the Authorization header on every request. Jentic stores the bearer token in the vault and attaches it on each call so agents never hold the raw value.

### Can I post a thread to a Heartbeat channel from the API?

Yes. PUT /threads with a payload that includes the channelID, title, and body content. Read the resulting thread back via `/channels/{channelID}/threads` to confirm it landed in the right place.

### What are the rate limits for the Heartbeat API?

Heartbeat does not document a public per-account rate limit. For bulk operations like CRM sync, throttle requests and back off on HTTP 429 to avoid being throttled.

### How do I add a member to a Heartbeat community through Jentic?

Search Jentic for 'add a member to a community', load the POST /users operation for heartbeat.chat, and execute with the new member's name and email. Jentic injects the bearer token from the vault.

### How do I reactivate a deactivated Heartbeat member?

Look up the existing user via GET `/find/users`, then POST `/users/reactivate` with their userID. The user's threads, comments, and channel memberships are preserved through reactivation.

### Can I limit what my agent is allowed to do with the Heartbeat API?

Yes. Because Jentic One is self-hosted, you decide which Heartbeat operations your agent may call, so you can allow just adding a member via POST /users or posting a thread via PUT /threads while excluding destructive ones like DELETE /users unless you add them. Heartbeat identifies members and threads through the request body on shared endpoints such as /users and /threads, so scoping the agent to only the operations it needs keeps its reach narrow. Your own rules decide which endpoints and stored bearer credential the agent is permitted to use at execution time.
