Buzzchat
Developers

REST API

A small, predictable JSON API for reading your inbox and pushing conversations in.

REST API Webhooks Widget & Identify Status

The base URL is https://buzzmark.chat/api/v1. Every response is JSON. Requests are rate-limited to 120 per minute per token.

Authentication

Create an API token in Settings → Developers. Tokens are shown once and stored hashed - treat them like passwords. Send the token as a bearer header on every request:

Authorization: Bearer bzk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Who am I

get /api/v1/me

Returns the workspace the token belongs to - handy as a connectivity check.

curl https://buzzmark.chat/api/v1/me \
  -H "Authorization: Bearer bzk_…"

Conversations

get /api/v1/conversations

Lists the workspace's conversations, newest activity first, with channel, status, assignment and contact summary.

get /api/v1/conversations/{id}

A single conversation by its public id, including its messages.

Contacts

get /api/v1/contacts

Lists contacts across your inboxes.

post /api/v1/contacts

Creates (or finds) a contact. All fields optional except that at least an email or external id makes it useful:

curl -X POST https://buzzmark.chat/api/v1/contacts \
  -H "Authorization: Bearer bzk_…" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "jo@example.com",
    "name": "Jo Bloggs",
    "external_id": "user_42",
    "inbox": "optional-inbox-public-id"
  }'

Ingest a conversation

post /api/v1/ingest

Turns anything - a contact form, an internal tool, another system - into a conversation in your inbox, threading repeat senders into their existing contact:

curl -X POST https://buzzmark.chat/api/v1/ingest \
  -H "Authorization: Bearer bzk_…" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "jo@example.com",
    "name": "Jo Bloggs",
    "subject": "Contact form: pricing question",
    "message": "Hi! Do you offer annual billing?",
    "inbox": "optional-inbox-public-id"
  }'

REST hooks

For no-code connectors (Zapier, Make, IFTTT) - subscribe a URL to an event and we'll POST to it:

post /api/v1/hooks
{ "target_url": "https://hooks.example.com/abc", "event": "message.created" }
delete /api/v1/hooks/{id}

Events: conversation.created and message.created. For signed, dashboard-managed deliveries see webhooks.

Errors

Standard HTTP status codes: 401 for a missing/invalid token, 404 for unknown resources, 422 with a JSON errors object for validation failures, and 429 when you hit the rate limit.

Ready to start chatting?

Create your workspace, paste the snippet, and talk to your first customer today.

Get started free