create_canned_reply

Save a reusable support reply on a project, with an optional slash-command shortcut and picker position.

Purpose

Add a snippet to a project's saved replies. It appears in the thread composer's picker straight away, and a creator can pull it in by typing its shortcut. The text is validated against the same rules the dashboard form applies, so a snippet accepted here renders in the composer exactly as one saved from the inbox.

Synchronous — the new row is returned, and support.canned_reply.created emits once.

Not idempotent

Two calls with the same title and body save two snippets. Only shortcut is unique within a project, so a snippet without one can be duplicated freely. Check list_canned_replies before creating.

Required ability

support-canned-reply:create

Input schema

{
  "type": "object",
  "required": ["project_id", "title", "body"],
  "properties": {
    "project_id": {
      "type": "string",
      "description": "UUID of the project the snippet belongs to."
    },
    "title": {
      "type": "string",
      "description": "Short label shown in the picker, 2 to 80 characters."
    },
    "body": {
      "type": "string",
      "description": "The reply text, 2 to 4000 characters."
    },
    "shortcut": {
      "type": "string",
      "description": "Slash-command a creator types to insert the snippet: letters, numbers, dashes and underscores, up to 30 characters, unique within the project."
    },
    "sort_order": {
      "type": "integer",
      "minimum": 0,
      "maximum": 999,
      "description": "Position in the picker, 0 to 999. Defaults to 0."
    }
  }
}

Output shape

{
  "data": {
    "id": "5d2f8a71-3c9e-4b06-a8f4-1e7c9d2b6a35",
    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
    "title": "Refund policy",
    "body": "Refunds are available within 14 days of your first payment. Reply here with the email you paid with and we'll sort it.",
    "shortcut": "refund",
    "sort_order": 0,
    "created_at": "2026-09-06T10:05:00+00:00",
    "updated_at": "2026-09-06T10:05:00+00:00"
  }
}

title comes back trimmed. body is stored as sent, whitespace included, because it reaches members verbatim. An omitted or empty shortcut is stored as null.

Example prompts

"Save a canned reply on project 7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13 called 'Refund policy' with shortcut refund that says refunds are available within 14 days."

"Turn the answer I just sent Jane into a saved reply called 'Invite link expired'."

"Add a saved reply for opening hours and put it at the top of the picker." (sort_order: 0, then bump the others)

Failure modes

  • VALIDATION_FAILEDtitle outside 2–80 characters, body outside 2–4000, shortcut longer than 30 characters, containing anything but letters, numbers, dashes and underscores, or already used by another snippet in this project, or sort_order outside 0–999. The envelope names the offending field. Also returned when the token's owner is on the project's team but their role lacks the support permission on it.
  • RESOURCE_NOT_FOUNDproject_id names a project the token cannot see: unknown, another team's, or outside the token's scope:project: allow-list.
  • AUTHENTICATION_REQUIRED — no authenticated user on the request.
  • TOKEN_MISSING_ABILITY — token lacks support-canned-reply:create.

How is this guide?

On this page

Subscriby is a product designed by you — for you.

No boardroom full of executives deciding what we ships next. Our roadmap always shaped by you with your feedback.

Share feedback or a request