Skip to content

Your API key

Create one in the portal under API keys.

Browse the API

API reference

Signature templates

Create, edit and assign the signature templates your organisation uses.

8 endpoints

GET/api/v1/signatures

List templates

Every signature template in the organisation, default first.

signatures:read

This endpoint takes no parameters beyond the URL itself.

Example response

json
{
  "signatures": [
    {
      "id": "b8e0f1a2-3c4d-4e5f-8a9b-0c1d2e3f4a5b",
      "name": "Standard",
      "description": "The main company signature",
      "category": "general",
      "is_default": true,
      "version": 4,
      "updated_at": "2026-09-18T14:02:11.000Z"
    }
  ],
  "total": 6
}

Copy and paste

curl -X GET "https://api.usesigned.co.uk/api/v1/signatures" \
  -H "X-API-Key: $SIGNED_API_KEY"

Worth knowing

The list is paged when you pass page or limit. Without them you get the first 100.

POST/api/v1/signatures

Create a template

Creates a signature template. The HTML is compiled before it is saved, so a broken template is rejected rather than stored.

signatures:write

Parameters

JSON body

  • nameRequired

    stringTemplate name.

    up to 255 characters

    example: "Standard"

  • descriptionOptional

    stringWhat the template is for.

    up to 2000 characters

  • html_contentRequired

    stringHandlebars HTML. See the template variables in the guides.

    example: "<table><tr><td><strong>{{display_name}}</strong></td></tr></table>"

  • text_contentOptional

    stringPlain text version, used when the email client cannot show HTML.

  • categoryOptional

    stringFree-text label for grouping templates.

    default "general" · up to 50 characters

  • design_jsonOptional

    stringSaved state of the visual designer. Ignored if you are not using the designer.

    up to 200000 characters

Example request body

json
{
  "name": "Standard",
  "description": "The main company signature",
  "html_content": "<table><tr><td><strong>{{display_name}}</strong><br>{{job_title}}</td></tr></table>",
  "design_json": null
}

Example response

json
{
  "signature": {
    "id": "b8e0f1a2-3c4d-4e5f-8a9b-0c1d2e3f4a5b",
    "name": "Standard",
    "is_default": true,
    "version": 1,
    "created_at": "2026-09-25T10:15:00.000Z"
  }
}

Copy and paste

curl -X POST "https://api.usesigned.co.uk/api/v1/signatures" \
  -H "X-API-Key: $SIGNED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Standard","description": "The main company signature","html_content": "<table><tr><td><strong>{{display_name}}</strong><br>{{job_title}}</td></tr></table>","design_json": null}'

Worth knowing

The first template in an organisation becomes the default automatically.

GET/api/v1/signatures/{id}

Get a template

Returns one template including its HTML.

signatures:read

Parameters

In the path

  • idRequired

    stringTemplate ID.

    uuid

Example response

json
{
  "signature": {
    "id": "b8e0f1a2-3c4d-4e5f-8a9b-0c1d2e3f4a5b",
    "name": "Standard",
    "html_content": "<table><tr><td><strong>{{display_name}}</strong></td></tr></table>",
    "text_content": null,
    "category": "general",
    "is_default": true,
    "version": 4
  }
}

Copy and paste

curl -X GET "https://api.usesigned.co.uk/api/v1/signatures/{id}" \
  -H "X-API-Key: $SIGNED_API_KEY"
PATCH/api/v1/signatures/{id}

Update a template

Updates a template. Every save bumps the version, so a signature can always be traced back to a revision.

signatures:write

Parameters

In the path

  • idRequired

    stringTemplate ID.

    uuid

JSON body

  • nameOptional

    stringTemplate name.

    up to 255 characters

  • descriptionOptional

    stringWhat the template is for.

    up to 2000 characters

  • html_contentOptional

    stringHandlebars HTML.

  • text_contentOptional

    stringPlain text version.

  • categoryOptional

    stringFree-text label for grouping templates.

    up to 50 characters

  • design_jsonOptional

    stringSaved state of the visual designer.

    up to 200000 characters

Example request body

json
{
  "description": "The main company signature, updated September 2026"
}

Example response

json
{
  "signature": {
    "id": "b8e0f1a2-3c4d-4e5f-8a9b-0c1d2e3f4a5b",
    "version": 5
  }
}

Copy and paste

curl -X PATCH "https://api.usesigned.co.uk/api/v1/signatures/{id}" \
  -H "X-API-Key: $SIGNED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"description": "The main company signature, updated September 2026"}'
DELETE/api/v1/signatures/{id}

Delete a template

Deletes a template. Refused if a rule still uses it, so signatures never silently fall back.

signatures:write

Parameters

In the path

  • idRequired

    stringTemplate ID.

    uuid

Example response

json
{
  "deleted": true
}

Copy and paste

curl -X DELETE "https://api.usesigned.co.uk/api/v1/signatures/{id}" \
  -H "X-API-Key: $SIGNED_API_KEY"

Worth knowing

If you delete the default template, the most recently updated template becomes the new default.

POST/api/v1/signatures/{id}/default

Make a template the default

Makes this template the one used by anyone no rule matches.

signatures:write

Parameters

In the path

  • idRequired

    stringTemplate ID.

    uuid

Example response

json
{
  "signature": {
    "id": "b8e0f1a2-3c4d-4e5f-8a9b-0c1d2e3f4a5b",
    "is_default": true
  }
}

Copy and paste

curl -X POST "https://api.usesigned.co.uk/api/v1/signatures/{id}/default" \
  -H "X-API-Key: $SIGNED_API_KEY"
POST/api/v1/signatures/{id}/duplicate

Duplicate a template

Copies a template, including its designer state, under the name "Copy of ...".

signatures:write

Parameters

In the path

  • idRequired

    stringTemplate ID.

    uuid

Example response

json
{
  "signature": {
    "id": "c9f1a2b3-4d5e-4f6a-9b0c-1d2e3f4a5b6c",
    "name": "Copy of Standard",
    "is_default": false
  }
}

Copy and paste

curl -X POST "https://api.usesigned.co.uk/api/v1/signatures/{id}/duplicate" \
  -H "X-API-Key: $SIGNED_API_KEY"
POST/api/v1/signatures/render

Render HTML

Renders Handlebars HTML with sample data without saving anything. Useful for previewing an edit before you commit it.

signatures:read

Parameters

JSON body

  • html_contentRequired

    stringHandlebars HTML to compile.

  • dataOptional

    objectValues to merge over the sample data. Same keys as the template variables.

Example request body

json
{
  "html_content": "<strong>{{display_name}}</strong>",
  "data": {
    "display_name": "Alex Morgan"
  }
}

Example response

json
{
  "html": "<strong>Alex Morgan</strong>",
  "data": {
    "display_name": "Alex Morgan",
    "job_title": "Operations Manager"
  }
}

Copy and paste

curl -X POST "https://api.usesigned.co.uk/api/v1/signatures/render" \
  -H "X-API-Key: $SIGNED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"html_content": "<strong>{{display_name}}</strong>","data": {"display_name": "Alex Morgan"}}'