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.
- https://api.rabbitblaze.com/v1
- Bearer key
- 2026-10-01
- 600 req/min
Quickstart
From zero to a conversation in your inbox in a few minutes.
-
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. -
Make your first request
GET /v1/meworks 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()){ "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" }} -
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']}") -
Listen for events
Add an endpoint under Settings → Developers → Webhooks, choose topics like
conversation.teammate.repliedorticket.state.updated, and verify the signature on every request.
Conventions
Every endpoint follows the same rules, so what you learn once applies everywhere.
https://api.rabbitblaze.com/v1 Authorization: Bearer rbk_… 2026-10-02T14:05:31.000Z { items, nextCursor } One error shape Every error carries a code, a message and, for validation, the fields. { error: { code, message, fields? } } 600 requests a minute Per key, with X-RateLimit-* headers on every response. X-RateLimit-Remaining Dated versions Every response says which version answered. X-Rabbitblaze-Version: 2026-10-01 Safe retries Repeat a POST with the same key and get the same result back. Idempotency-Key: … 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.