Get a message template

One of your templates, with its subject and body exactly as written — blanks and all, not filled in. Requires the `notifications.templates.read` permission.

GET
/messages/templates/{templateId}
AuthorizationBearer <token>

The access token returned after a successful sign-in, sent as Authorization: Bearer <access_token>.

It identifies the person and the organization they are working in, and it lasts about fifteen minutes. When it runs out, use their refresh token at POST /auth/refresh-token instead of asking them to sign in again.

In: header

Path Parameters

templateId*string

Identifier of the template.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://api.dual.network/messages/templates/665f1c2d4b1a2c3d4e5f6ad0"
{
  "id": "665f1c2d4b1a2c3d4e5f6ad0",
  "name": "Ticket ready",
  "action_type": "custom",
  "system": "email",
  "language": "en",
  "title": "Your ticket {{.ticket}} is ready",
  "content": "<p>Hello {{.first_name}}, your ticket is ready.</p>",
  "content_type": "html",
  "when_created": "2026-02-20T12:00:00Z",
  "when_modified": "2026-02-20T12:00:00Z"
}
{
  "code": 3,
  "message": "Key: 'limit' Error:Field validation for 'limit' failed on the 'lte' tag"
}

{
  "code": 16,
  "message": "no auth provided"
}

{
  "code": 7,
  "message": "forbidden"
}
{
  "code": 5,
  "message": "object not found"
}
{
  "code": 8,
  "message": "too many requests"
}
{
  "code": 13,
  "message": "internal error"
}