---
title: "Update an existing template"
method: PATCH
path: "/v1/org/{orgId}/template/{templateId}"
tags: ["template"]
---

# Update an existing template

`PATCH /v1/org/{orgId}/template/{templateId}`

## Path parameters

- `orgId` string, required
- `templateId` string, required

## Request body

- UpdateTemplate
  - `name` string — template name, must be unique to organization
  - `description` string — description of template
  - `content` string — template content
  - `stylesheet` string — template inline stylesheet
  - `fileId` string — file identifier, if the template is based on a PDF file instead of a CQLT template
  - `placements` SignaturePlacement[] — signature zone placements for a file-based template; only valid when fileId is set
    - `type` 'SIGNATURE' | 'NAME' | 'TITLE' | 'DATE' | 'EXPR', required — the kind of placement
    - `x` number, float, required — horizontal position as a fraction (0..1) of page width, from the left edge
    - `y` number, float, required — vertical position as a fraction (0..1) of page height, from the top edge
    - `pageNumber` integer, required — 1-based page number the placement is anchored to
    - `width` number, float — optional width as a fraction (0..1) of page width, reserved for future use
    - `height` number, float — optional height as a fraction (0..1) of page height, reserved for future use
    - `expr` string — carrot expression evaluated against the document's person; required for EXPR placements
    - `signerNumber` integer — 1-based signer this placement binds to; when null, the placement is assigned to a signer by position
  - `type` 'DOCUMENT' | 'EMAIL' — type of template
  - `tags` string[] — tags to organize the purpose of the template
  - `filename` string — document filename CQL
  - `fieldId` string — the field id that will be used to store documents generated by this template
  - `qesFilter` string — filter expression evaluated on each signer for whether to use qualified electronic signature (if it evalutes to true for any signer, QES will be used). If null, defaults to org `qesFilter` setting
  - `isSequential` boolean — whether signers must sign in sequential order; false (the default) means simultaneous signing

## Response `204`

template updated

## Other responses

- `400` — invalid data
- `401` — not authorized
- `403` — permission denied
- `404` — not found

---

[API](https://skmtc.net/charthop/apis/charthop-api.md) · [All operations](https://skmtc.net/charthop/apis/charthop-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/charthop/charthop-api/revisions/2de21f45f447/schema)
