Developers

Build on Rabbitblaze

A REST API for your customer data and conversations, signed webhooks for real-time events, and a JavaScript API for the Messenger.

Base URL
https://api.rabbitblaze.com/v1
Auth
Bearer key
Version
2026-10-01
Rate limit
600 req/min

Quickstart

From zero to a conversation in your inbox in a few minutes.

  1. Create an API key

    In Rabbitblaze, open Settings → Developers → API keys and choose New API key. Name it after the integration, pick its permissions (full access, read-only, or exactly the resources it needs) and copy the key: it starts with rbk_ and is shown only once. Only owners and admins manage keys.

  2. Make your first request

    GET /v1/me works with any key and tells you which workspace it belongs to. A good connection test.

    curl https://api.rabbitblaze.com/v1/me \  -H "Authorization: Bearer $RABBITBLAZE_API_KEY"
    const res = await fetch("https://api.rabbitblaze.com/v1/me", {  headers: { Authorization: `Bearer ${process.env.RABBITBLAZE_API_KEY}` },})console.log(await res.json())
    import osimport requests res = requests.get(    "https://api.rabbitblaze.com/v1/me",    headers={"Authorization": f"Bearer {os.environ['RABBITBLAZE_API_KEY']}"},)print(res.json())
    Response · 200 OK
    {  "object": "api_key",  "id": "0199c4e1-0b52-7d1e-a3f4-5b6c7d8e9f01",  "name": "CRM sync",  "scopes": [    "contacts:read",    "contacts:write",    "conversations:read",    "events:write"  ],  "workspace": {    "id": "0199a8f2-1c3d-7e4f-8a5b-6c7d8e9f0a1b",    "name": "Acme Inc",    "appId": "acme0001",    "timezone": "Europe/Berlin"  }}
  3. Create a person and a conversation

    People are identified by your own user id (externalId), their email or the Rabbitblaze id. Opening a conversation on their behalf puts it in your inbox, lets Blaze AI Agent and your workflows react, and fires the same webhooks as a message from the Messenger.

    # Create (or update) the person who wrote incurl -X POST https://api.rabbitblaze.com/v1/contacts \  -H "Authorization: Bearer $RABBITBLAZE_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "role": "user",    "name": "Lena Fischer",    "email": "[email protected]",    "externalId": "usr_48213"  }' # Open a conversation with their message: it lands in your inbox right awaycurl -X POST https://api.rabbitblaze.com/v1/conversations \  -H "Authorization: Bearer $RABBITBLAZE_API_KEY" \  -H "Content-Type: application/json" \  -H "Idempotency-Key: form-submission-8841" \  -d '{    "externalId": "usr_48213",    "body": "Our October invoice shows our old VAT number."  }'
    const api = (path, body) =>  fetch(`https://api.rabbitblaze.com/v1${path}`, {    method: "POST",    headers: {      Authorization: `Bearer ${process.env.RABBITBLAZE_API_KEY}`,      "Content-Type": "application/json",    },    body: JSON.stringify(body),  }).then((res) => res.json()) const contact = await api("/contacts", {  role: "user",  name: "Lena Fischer",  email: "[email protected]",  externalId: "usr_48213",}) const conversation = await api("/conversations", {  contactId: contact.id,  body: "Our October invoice shows our old VAT number.",})console.log(`Opened #${conversation.number}`)
    import osimport requests session = requests.Session()session.headers["Authorization"] = f"Bearer {os.environ['RABBITBLAZE_API_KEY']}" contact = session.post("https://api.rabbitblaze.com/v1/contacts", json={    "role": "user",    "name": "Lena Fischer",    "email": "[email protected]",    "externalId": "usr_48213",}).json() conversation = session.post("https://api.rabbitblaze.com/v1/conversations", json={    "contactId": contact["id"],    "body": "Our October invoice shows our old VAT number.",}).json()print(f"Opened #{conversation['number']}")
  4. Listen for events

    Add an endpoint under Settings → Developers → Webhooks, choose topics like conversation.teammate.replied or ticket.state.updated, and verify the signature on every request.

Conventions

Every endpoint follows the same rules, so what you learn once applies everywhere.

Plans and access

Included on every paid plan, from Starter ($5/month)

On the Free plan, requests answer 403 plan_limit and webhook deliveries pause until you upgrade. API keys are created by owners and admins; the people, conversations and tickets the API creates count toward your plan’s limits like any others.

See pricing