Canned replies
The same questions arrive again and again — "when will it ship?", "is COD available?", "how do returns work?". Canned replies let you save your best answers once and insert them into any reply with one click.
Canned replies are per-workspace: every agent on the team shares the same library.
In the portal
- Manage them under Settings → Canned replies: add a new one (title + body), or delete ones you've outgrown.
- Use them from any ticket: when your workspace has at least one canned reply, the reply box shows an "Insert canned reply…" dropdown. Picking one inserts its body into the reply box — edit it to fit, then send. Nothing is sent automatically.
Keep the title short and recognizable (Tracking number, Returns,
Business hours) — that's what you scan for in the dropdown.
API
All endpoints require authentication and use the standard envelope. The canned reply object:
{
"id": "cnr_01jx2v9k3m8q4r5s6t7u8v9w0x",
"accountId": "acc_5f1e2d3c4b5a69788796a5b4",
"title": "Tracking number",
"body": "Hi! Your order's tracking number: {{number}}. Check the status on the courier's site. Thank you!",
"createdAt": "2026-06-11T03:00:00.000Z",
"updatedAt": "2026-06-11T03:00:00.000Z"
}
(Heads-up: {{number}} above is just a writing convention for the
human agent to fill in — Suppuo doesn't do template-variable
substitution.)
List
GET /api/v1/canned-replies
Returns all of the workspace's canned replies, sorted by title.
{
"data": { "cannedReplies": [ { "id": "cnr_01jx…", "title": "Tracking number", "...": "…" } ] },
"error": null,
"meta": { "requestId": "req_01jx…", "timestamp": "2026-06-11T03:05:00.000Z" }
}
Create
POST /api/v1/canned-replies
| Field | Type | Notes |
|---|---|---|
title |
string | required, 1–120 chars |
body |
string | required, 1–20 000 chars |
curl -X POST "https://suppuo.com/api/v1/canned-replies" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "title": "Business hours", "body": "Hi! We are online Monday–Saturday 09:00–17:00 WIB." }'
Returns 201 with the created object.
Update
PATCH /api/v1/canned-replies/:id
Send title and/or body (same limits as create). Returns 200 with
the updated object; 404 NOT_FOUND if the ID isn't in your workspace.
Delete
DELETE /api/v1/canned-replies/:id
Returns 200 with { "deleted": true }; 404 NOT_FOUND if the ID
isn't in your workspace.
See also
- Tickets API — sending the reply a canned snippet was inserted into.