API reference
A clean REST API over JSON and HTTPS — the same one our dashboard is built on. Authenticate, manage tickets, subscribe to webhooks.
The Cherryrise REST API lets you script everything in the product — tickets, contacts, macros, rules and reports. It speaks JSON over HTTPS, uses standard verbs and status codes, and is the same API our own dashboard is built on.
Authentication
Authenticate every request with a workspace API key as a bearer token. Create keys in Settings → API; scope them to read-only or full access, and rotate them anytime. Keys are tied to a workspace, so data isolation is enforced automatically.
curl https://api.cherryrise.com/v1/tickets \
-H "Authorization: Bearer $CHERRYRISE_API_KEY"API keys can read and write customer data. Never ship them in client-side code or a chat widget — call the API from your backend.
Tickets
Tickets are the core object. List, create, update and close them.
| Parameter | Type | Description |
|---|---|---|
subject required | string | The ticket subject line. |
requester required | object | The customer — { "email": "...", "name": "..." }. |
message | string | The first message body (plain text or HTML). |
priority | enum | One of low, normal, high. Affects the SLA clock. |
tags | array | String tags applied on creation. |
Example response:
{
"id": "tkt_4821",
"subject": "My first ticket",
"status": "open",
"priority": "normal",
"requester": { "email": "[email protected]" },
"sla": { "first_response_due": "2026-06-18T14:00:00Z" },
"created_at": "2026-06-17T17:42:00Z"
}Webhooks
Subscribe to events and Cherryrise will POST them to your URL in real time — the same mechanism that can turn inbound mail into tickets in your own systems. Each request is signed with an HMAC header so you can verify it came from us.
| Event | Fires when |
|---|---|
ticket.created | A new ticket enters the queue. |
ticket.replied | An agent or customer adds a message. |
ticket.closed | A ticket is resolved or closed. |
sla.at_risk | A ticket crosses its at-risk threshold. |
# Verify the signature (Node)
const sig = req.headers["cherryrise-signature"];
const expected = crypto
.createHmac("sha256", process.env.WEBHOOK_SECRET)
.update(req.rawBody)
.digest("hex");
if (sig !== expected) return res.status(401).end();Rate limits
Limits are per workspace, per API key. Every response includes the headers below; back off when remaining hits zero.
| Plan | Requests / minute | Burst |
|---|---|---|
| Team | 120 | 200 |
| Growth | 600 | 1,000 |
| Enterprise | Custom | Custom |
HTTP/1.1 200 OK
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 598
X-RateLimit-Reset: 1718645000See existing native integrations, or read the Quickstart to get a key.