Skip to content
Developers

Archive or delete template

There are two ways to remove a template via the API:

  1. Archive (soft delete): Hides the template but keeps its data. Processes already launched from it keep running. Archived templates can be restored, and restoring brings back the template’s steps, form fields, automations and folder. If other templates or steps embedded this one in their text, archiving takes those embedded blocks out, and restoring puts them back. Templates archived before mid-September 2026 are the exception: Tallyfy didn’t save a copy of the removed text then, so those embeds need adding again by hand.
  2. Delete (permanent): Permanently removes the template and its associated data. This can’t be undone. The template must be archived first before it can be permanently deleted.

DELETE /organizations/{org_id}/checklists/{checklist_id}

This archives the specified template (soft delete).

Replace {org_id} with your Organization ID and {checklist_id} with the template ID.

  • Authorization: Bearer {your_access_token}
  • Accept: application/json
  • X-Tallyfy-Client: APIClient

No request body is needed.

const accessToken = 'YOUR_PERSONAL_ACCESS_TOKEN';
const orgId = 'YOUR_ORGANIZATION_ID';
const checklistId = 'TEMPLATE_ID_TO_ARCHIVE';
const apiUrl = `https://go.tallyfy.com/api/organizations/${orgId}/checklists/${checklistId}`;
const headers = new Headers();
headers.append('Authorization', `Bearer ${accessToken}`);
headers.append('Accept', 'application/json');
headers.append('X-Tallyfy-Client', 'APIClient');
fetch(apiUrl, {
method: 'DELETE',
headers: headers
})
.then(response => {
if (!response.ok) {
return response.json().then(errData => {
throw new Error(`HTTP error! status: ${response.status}, message: ${JSON.stringify(errData)}`);
}).catch(() => {
throw new Error(`HTTP error! status: ${response.status}`);
});
}
console.log(`Successfully archived template ${checklistId}. Status: ${response.status}`);
return response.json();
})
.then(data => {
if (data) {
console.log('Response:', JSON.stringify(data, null, 2));
}
})
.catch(error => {
console.error('Error archiving template:', error);
});

A successful archive returns 200 OK with a confirmation message and deleted_references. That’s a list of the templates and steps whose descriptions had an embed of this template taken out. Each entry has a type (Blueprint for a template, Step for a step), a title and an id. The list is empty when nothing embedded the template.

{
"message": "The Template was deleted, and references were also deleted from:",
"deleted_references": []
}

The message says “deleted”, but this call only archives the template.

PUT /organizations/{org_id}/checklists/{checklist_id}/restore

This brings the template back and puts its embeds back into the templates and steps they were taken from. The response returns the template in data, plus two lists in meta:

  • restored_references - the embeds that went back.
  • unrestored_references - the embeds that couldn’t, each with a resolution and a reason. Most often that’s because the template or step that held the embed was edited or deleted after the archive.

DELETE /organizations/{org_id}/checklists/{checklist_id}/delete

Note the extra /delete path segment compared to the archive endpoint.

Replace {org_id} and {checklist_id} as appropriate.

  • Authorization: Bearer {your_access_token}
  • Accept: application/json
  • X-Tallyfy-Client: APIClient

No request body is needed.

const accessToken = 'YOUR_PERSONAL_ACCESS_TOKEN';
const orgId = 'YOUR_ORGANIZATION_ID';
const checklistId = 'TEMPLATE_ID_TO_DELETE';
// Template must already be archived before permanent deletion
const apiUrl = `https://go.tallyfy.com/api/organizations/${orgId}/checklists/${checklistId}/delete`;
const headers = new Headers();
headers.append('Authorization', `Bearer ${accessToken}`);
headers.append('Accept', 'application/json');
headers.append('X-Tallyfy-Client', 'APIClient');
fetch(apiUrl, {
method: 'DELETE',
headers: headers
})
.then(response => {
if (!response.ok) {
return response.json()
.catch(() => response.text())
.then(errData => {
console.error(`Failed to delete template. Status: ${response.status}`, errData);
throw new Error(`HTTP error! status: ${response.status}`);
});
}
console.log(`Successfully deleted template ${checklistId}. Status: ${response.status}`);
return response.json();
})
.then(data => {
if (data) {
console.log('Response:', JSON.stringify(data, null, 2));
}
})
.catch(error => {
console.error(`Error deleting template ${checklistId}:`, error.message);
});

A successful permanent deletion returns 200 OK. The response body contains a confirmation message and a list of deleted references, in the same shape as the archive response. If the template isn’t archived yet, you’ll get an error - you must archive it first.

Permanent deletion also throws away the saved copies of any embeds that archiving took out, so those embeds can’t be restored after this.

{
"message": "The Template was deleted, and references were also deleted from:",
"deleted_references": []
}

Tasks > Archive task

Tallyfy’s API lets you soft-delete (archive) a standalone one-off task by sending a DELETE…

Tags > Delete tag

Tallyfy’s DELETE API endpoint at /organizations/[org_id]/tags/[tag_id] permanently removes a…