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.