Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/alphagov/notifications-api/llms.txt

Use this file to discover all available pages before exploring further.

These endpoints are used by the admin interface to manage templates. All endpoints require admin authentication.

Create Template

POST /service/{service_id}/template Create a new template for a service.

Path Parameters

ParameterTypeDescription
service_iduuidThe service ID

Request Body

{
  "name": "Welcome Email",
  "template_type": "email",
  "subject": "Welcome to ((service_name))",
  "content": "Hi ((name)),\n\nWelcome to our service!",
  "service": "service-uuid",
  "created_by": "user-uuid",
  "parent_folder_id": "folder-uuid",
  "process_type": "normal"
}

Template Types

TypeDescription
emailEmail template
smsSMS template
letterLetter template

Process Types

TypeDescription
normalStandard priority
priorityHigh priority (faster delivery)
bulkBulk sending (may be slower)

Response

{
  "data": {
    "id": "template-uuid",
    "name": "Welcome Email",
    "template_type": "email",
    "subject": "Welcome to ((service_name))",
    "content": "Hi ((name)),\n\nWelcome to our service!",
    "version": 1,
    "created_at": "2023-01-01T00:00:00Z",
    "updated_at": "2023-01-01T00:00:00Z",
    "created_by": {
      "id": "user-uuid",
      "name": "Admin User"
    },
    "service": "service-uuid",
    "archived": false
  }
}
Status Code: 201 Created
For letter templates, if no postage is specified, it defaults to second class.

Update Template

POST /service/{service_id}/template/{template_id} Update an existing template. Each update creates a new version.

Path Parameters

ParameterTypeDescription
service_iduuidThe service ID
template_iduuidThe template ID

Request Body

{
  "name": "Updated Welcome Email",
  "subject": "Welcome to ((service_name)) - Updated",
  "content": "Hi ((name)),\n\nWelcome! We've updated our message.",
  "created_by": "user-uuid"
}

Response

{
  "data": {
    "id": "template-uuid",
    "name": "Updated Welcome Email",
    "template_type": "email",
    "subject": "Welcome to ((service_name)) - Updated",
    "content": "Hi ((name)),\n\nWelcome! We've updated our message.",
    "version": 2,
    "updated_at": "2023-01-02T00:00:00Z"
  }
}

Get All Templates for Service

GET /service/{service_id}/template Retrieve all templates for a service.

Path Parameters

ParameterTypeDescription
service_iduuidThe service ID

Response

{
  "data": [
    {
      "id": "template-uuid-1",
      "name": "Welcome Email",
      "template_type": "email",
      "version": 2,
      "created_at": "2023-01-01T00:00:00Z",
      "updated_at": "2023-01-02T00:00:00Z",
      "archived": false
    },
    {
      "id": "template-uuid-2",
      "name": "Reminder SMS",
      "template_type": "sms",
      "version": 1,
      "created_at": "2023-01-01T00:00:00Z",
      "archived": false
    }
  ]
}

Get Template by ID

GET /service/{service_id}/template/{template_id} Retrieve a specific template (latest version).

Path Parameters

ParameterTypeDescription
service_iduuidThe service ID
template_iduuidThe template ID

Response

{
  "data": {
    "id": "template-uuid",
    "name": "Welcome Email",
    "template_type": "email",
    "subject": "Welcome to ((service_name))",
    "content": "Hi ((name)),\n\nWelcome to our service!",
    "version": 2,
    "created_at": "2023-01-01T00:00:00Z",
    "updated_at": "2023-01-02T00:00:00Z",
    "created_by": {
      "id": "user-uuid",
      "name": "Admin User"
    },
    "service": "service-uuid",
    "archived": false,
    "folder": "folder-uuid",
    "redact_personalisation": false,
    "postage": "second"
  }
}

Preview Template

GET /service/{service_id}/template/{template_id}/preview Preview a template with personalisation values.

Path Parameters

ParameterTypeDescription
service_iduuidThe service ID
template_iduuidThe template ID

Query Parameters

Provide personalisation values as query parameters:
?name=John&service_name=My Service

Response

{
  "id": "template-uuid",
  "name": "Welcome Email",
  "template_type": "email",
  "subject": "Welcome to My Service",
  "content": "Hi John,\n\nWelcome to our service!",
  "version": 2
}

Error Response

If required personalisation is missing:
{
  "result": "error",
  "message": {
    "template": ["Missing personalisation: name, service_name"]
  }
}
Status Code: 400 Bad Request

Get Template Version

GET /service/{service_id}/template/{template_id}/version/{version} Retrieve a specific version of a template.

Path Parameters

ParameterTypeDescription
service_iduuidThe service ID
template_iduuidThe template ID
versionintegerThe version number

Response

{
  "data": {
    "id": "template-uuid",
    "name": "Welcome Email",
    "template_type": "email",
    "subject": "Welcome to ((service_name))",
    "content": "Hi ((name)),\n\nWelcome to our service!",
    "version": 1,
    "created_at": "2023-01-01T00:00:00Z"
  }
}

Get All Template Versions

GET /service/{service_id}/template/{template_id}/versions Retrieve all versions of a template.

Path Parameters

ParameterTypeDescription
service_iduuidThe service ID
template_iduuidThe template ID

Response

{
  "data": [
    {
      "id": "template-uuid",
      "name": "Updated Welcome Email",
      "version": 2,
      "created_at": "2023-01-02T00:00:00Z",
      "created_by": "user-uuid"
    },
    {
      "id": "template-uuid",
      "name": "Welcome Email",
      "version": 1,
      "created_at": "2023-01-01T00:00:00Z",
      "created_by": "user-uuid"
    }
  ]
}

Archive Template

POST /service/{service_id}/template/{template_id} Archive a template by setting the archived flag.

Request Body

{
  "archived": true,
  "created_by": "user-uuid"
}

Response

{
  "data": {
    "id": "template-uuid",
    "archived": true,
    "version": 3
  }
}
Archiving a template also archives any associated email attachment files.

Redact Template

POST /service/{service_id}/template/{template_id} Redact personalisation data from a template’s notification history.

Request Body

{
  "redact_personalisation": true,
  "created_by": "user-uuid"
}

Response

Status Code: 200 OK
Redacting a template prevents viewing personalisation data in sent notifications. This is useful for GDPR compliance.

Update Template Reply-To

POST /service/{service_id}/template/{template_id} Update the reply-to address or letter contact for a template.

Request Body

For email templates:
{
  "reply_to": "reply-to-email-uuid"
}
For letter templates:
{
  "reply_to": "letter-contact-uuid"
}
For SMS templates:
{
  "reply_to": "sms-sender-uuid"
}

Response

{
  "data": {
    "id": "template-uuid",
    "service_letter_contact_id": "letter-contact-uuid",
    "version": 2
  }
}

Get Precompiled Letter Template

GET /service/{service_id}/template/precompiled Retrieve the precompiled letter template for a service. This is a special hidden template used for sending letters from PDF files.

Path Parameters

ParameterTypeDescription
service_iduuidThe service ID

Response

{
  "id": "template-uuid",
  "name": "Pre-compiled PDF",
  "template_type": "letter",
  "hidden": true,
  "is_precompiled_letter": true
}

Preview Letter Template from Notification

GET /service/{service_id}/template/preview/{notification_id}/{file_type} Generate a preview of a sent letter notification.

Path Parameters

ParameterTypeDescription
service_iduuidThe service ID
notification_iduuidThe notification ID
file_typestringEither pdf or png

Query Parameters

ParameterTypeDescription
pageintegerPage number for PNG previews

Response

{
  "content": "base64-encoded-file-content",
  "metadata": {
    "message": "content-outside-printable-area",
    "invalid_pages": ["1", "3"]
  }
}

Template Content Validation

SMS Templates

  • Maximum length: Automatically calculated based on GSM-7 encoding
  • Character limit: 918 characters (6 SMS segments)
  • Personalisation fields count towards the limit

Email Templates

  • Subject line: No strict limit but keep under 100 characters for deliverability
  • Content: No strict limit
  • Supports Markdown formatting

Letter Templates

  • QR codes: Data must not exceed 500 characters
  • Postage: Must be first or second class
  • Content must fit within printable area

Personalisation

Templates support personalisation using double parentheses:
Hi ((name)),

Your reference number is ((reference)).
When sending a notification, provide personalisation values:
{
  "personalisation": {
    "name": "John Smith",
    "reference": "ABC123"
  }
}
See also:

Build docs developers (and LLMs) love