API & webhooks

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.

BASEhttps://api.cherryrise.com/v1

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.

bash
curl https://api.cherryrise.com/v1/tickets \
  -H "Authorization: Bearer $CHERRYRISE_API_KEY"
Keep keys server-side

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.

GET/v1/tickets
POST/v1/tickets
ParameterTypeDescription
subject requiredstringThe ticket subject line.
requester requiredobjectThe customer — { "email": "...", "name": "..." }.
messagestringThe first message body (plain text or HTML).
priorityenumOne of low, normal, high. Affects the SLA clock.
tagsarrayString tags applied on creation.

Example response:

json
{
  "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.

EventFires when
ticket.createdA new ticket enters the queue.
ticket.repliedAn agent or customer adds a message.
ticket.closedA ticket is resolved or closed.
sla.at_riskA ticket crosses its at-risk threshold.
bash
# 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.

PlanRequests / minuteBurst
Team120200
Growth6001,000
EnterpriseCustomCustom
http
HTTP/1.1 200 OK
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 598
X-RateLimit-Reset: 1718645000
Build an integration

See existing native integrations, or read the Quickstart to get a key.