Templates
Templates in smenso provide reusable structures and predefined content for projects, tasks, and status reports. They help reduce repetitive setup work, standardize recurring processes, and ensure that important configuration is applied consistently.
smenso supports three main template types:
- Project templates
- Task templates
- Status report templates
Template Types
Project Templates
Project templates define a reusable baseline for projects. Depending on their configuration, they can contain:
- master data such as dates, status, and classifications
- default flavors and metadata
- structural elements such as tasks, phases, and folders
- standard configurations such as permissions or access settings
Project templates can be used to:
- create new projects with a predefined structure
- apply selected template master data to existing projects
They can be applied manually in the smenso UI or programmatically through the Integration API - see Creating an Object from a Template and Applying a Project Template to an Existing Project below.
For detailed information about creating and updating projects with templates, see the Projects guide.
Task Templates
Task templates provide a reusable baseline for recurring tasks and task structures.
Depending on the template configuration, a task template can contain information such as:
- start and due dates
- status and workflow
- files
- labels
- flavors
- participants
- observers
- subtasks
- description
- priority
- time recording settings
- automatic effort and cost update settings
Task templates are useful when the same type of work occurs repeatedly across projects and should follow a consistent structure. They can be applied manually in the smenso UI or programmatically through the Integration API - see Creating an Object from a Template and Applying a Task Template to an Existing Task below.
Observers from project rolesIf a task template has a project role assigned as an observer, the project role itself is added as the observer on the created or updated task - not a snapshot of the individual people currently assigned to it. This means the resulting observer assignment stays in sync automatically if the project role's membership changes later. This applies both to tasks created from a template and to tasks updated via the template-apply endpoint, regardless of the
observersoption. Project roles are an Enterprise feature. There is currently no dedicated API for managing project roles themselves, and none is planned in the near term - project roles can only be referenced here as observers on a task template, the same way they can be assigned as observers in the smenso UI.
"Observer" vs. "watcher"The API field is named
observers, matching the smenso UI's German term ("Beobachter"). The English Help Center articles use "watcher" for the same concept (e.g. the 🔔 icon's "Add watcher" action). Both terms refer to the identical feature - this article uses "observer" throughout to match the actual API field name.
Status Report Templates
Status report templates define a reusable structure for reports. Depending on their configuration, they can contain:
- report sections and structure
- default values for supported fields
- predefined RichText content such as headings, placeholders, or standard text
- optional default flavors or metadata
They can be used to create reports with a consistent structure, for example:
- weekly status reports
- monthly steering committee reports
- customer status reports
API support is currently limited to creating new reportsThrough the Integration API, status report templates can currently only be used to create a new status report - see Create Status Report from a Template below. There is currently no API endpoint to apply a template to an already existing status report draft; this is only possible through the smenso UI.
Applying a template always overwrites report contentUnlike task and project templates, status report templates do not offer selectable sections. Applying a status report template in the smenso UI - whether by creating a new report from it or by applying it to an existing draft - always overwrites the
DescriptionandNext stepsfields with the template's content. There is nooverwriteValues-style option for status report templates. A template can only be applied to a report that is still a draft; it cannot be applied to an already published report.
Creating an Object from a Template
The Integration API can create a new task, status report, or project directly from an existing template. This corresponds to the "create new [object] from a template" flow in the smenso UI.
Defaults differ per endpoint - do not assume consistencyThe three "create from template" endpoints below do not share the same default behavior as each other, and none of them share the same default behavior as the "apply template to an existing task" endpoint documented further down this page. Always check the option defaults of the specific endpoint you are calling. A summary table is provided at the end of this section.
Create Task from a Template
POST /api/integration/task/json/{templateId}
Content-Type: application/json
Authorization: Basic {YOUR_TOKEN}The complete endpoint reference is available here: Create task from a template
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
templateId | string | ✅ | The id of the template to use. |
Body Parameters
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
projectId | string | ✅ | null | Id of the project the task should be created in. |
title | string | ✅ | null | Title for the task. |
overrideStatus | boolean | - | true | Use the status defined in the template instead of the project's default. |
overridePriority | boolean | - | true | Use the priority defined in the template. |
overrideWorkflow | boolean | - | true | Use the workflow defined in the template. |
overrideWorkflowStatus | boolean | - | true | Use the workflow status defined in the template. |
Unlike the fields on the "apply template to an existing task" endpoint (see below), there are no separate flavors, labels, files, subTasks, participants, or observers options here: creating a task from a template takes over these directly from the template by default, in line with the smenso UI's "create new task from template" behavior, where a new task is populated in full. The four override* fields only let you choose whether specific, potentially project-dependent fields (status, priority, workflow, workflow status) are taken from the template or left at the project's own defaults.
Response
{
"id": "25f7b780-d7e4-4c99-ad8b-7075f1ef18f8"
}Create Status Report from a Template
POST /api/integration/statusreport/json/{templateId}
Content-Type: application/json
Authorization: Basic {YOUR_TOKEN}The complete endpoint reference is available here: Create status report from a template
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
templateId | string | ✅ | The id of the template to use. |
Body Parameters
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
projectId | string | ✅ | null | Id of the project the status report should be created in. |
title | string | ✅ | null | Title for the status report. |
progressManual | double | ✅ | null | Manual progress, 0 to 100. |
There are no selectable template sections for status reports (see the callout under Status Report Templates above) - the template's Description and Next steps content is always applied.
Response
{
"id": "08465a20-2d37-472e-bb02-eb7e9836d6c1"
}Errors: 400 Bad Request, 401 Unauthorized, 403 Forbidden, 500 Internal Server Error
Create Project from a Template
POST /api/integration/project/json/{templateId}
Content-Type: application/json
Authorization: Basic {YOUR_TOKEN}The complete endpoint reference is available here: Create project from a template
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
templateId | string | ✅ | The id of the template to use. |
Body Parameters
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
title | string | ✅ | - | Title for the project. |
folder | string | ✅ | - | The project folder. |
projectType | string | ✅ | - | The project type to use. |
isPrivate | boolean | - | - | Whether the project should be created as private. |
startDate | date-time | - | - | New start date, if not taken from the template. |
statusId | int32 | - | - | The status id. |
code | string | null | - | - | The project id (code). |
options | object | - | - | See the options object below. |
options object
All fields default to true:
| Field | Type | Default | Description |
|---|---|---|---|
startDate | boolean | true | Use the start date from the template. |
adjustTaskDates | boolean | true | Adjust task dates. |
tasks | boolean | true | Import tasks. |
flavors | boolean | true | Import flavors. |
labels | boolean | true | Import labels. |
manager | boolean | true | Import manager. |
tasksWorkflow | boolean | true | Import tasks workflow. |
tasksTemplate | boolean | true | Import tasks template. |
folderTasksTemplate | boolean | true | Import folder tasks template. |
viewSettings | boolean | true | Import view settings. |
budget | boolean | true | Import budget. |
location | boolean | true | Import location. |
description | boolean | true | Import description. |
hourlyRate | boolean | true | Import hourly rate. |
goal | boolean | true | Import goal. |
benefit | boolean | true | Import benefit. |
observers | boolean | true | Import observers. |
permissions | boolean | true | Import permissions. |
blockTimeRecording | boolean | true | Import block time recording. |
markedColumns | boolean | true | Import marked columns. |
columnDescriptions | boolean | true | Import column descriptions. |
This endpoint defaults to including everything (opt-out), unlike the task-update endpointEvery field in the
optionsobject defaults totrue. If You omit theoptionsobject entirely, the project is created with the full template applied - this is the opposite default behavior of the "apply template to an existing task" endpoint below, where omitted fields default tofalse. Set individual fields tofalseto exclude specific sections from an otherwise complete template import.
Response
{
"id": "4c7c7b38-80bf-4d85-8677-43f7227e299f"
}Errors: 400 Bad Request, 401 Unauthorized, 403 Forbidden, 500 Internal Server Error
Default Behavior Summary
| Endpoint | Default for options | Behavior when a field/option is omitted |
|---|---|---|
| Create task from a template | true | Template value is applied (opt-out). |
| Create status report from a template | - | No optional sections; content is always applied. |
| Create project from a template | true (in options) | Template value is applied (opt-out). |
| Apply template to an existing project | false | Template value is not applied (opt-in). |
| Apply template to an existing task (below) | false | Template value is not applied (opt-in). |
Applying a Project Template to an Existing Project
The Integration API can also apply an existing project template to an already existing project. Unlike creating a new project from a template, this only updates the project's master data - tasks and other structures from the project template are not applied. This matches the smenso UI behavior for applying a project template to an existing project.
Endpoint
PUT /api/integration/project/json/{templateId}
Content-Type: application/json
Authorization: Basic {YOUR_TOKEN}The complete endpoint reference, including all request and response fields, is available here:
Update master data of a project
projectIdis a body parameter, not a path parameterUnlike the task-update endpoint below (
PUT /api/integration/task/json/{taskId}/{templateId}), this endpoint does not take the target project's id as a path parameter. Instead, onlytemplateIdis part of the path, and the target project is identified via the requiredprojectIdfield in the request body.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
templateId | string | ✅ | The id of the template to use. |
Body Parameters
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
projectId | string | ✅ | - | The id of the project. |
overwriteValues | boolean | - | false | Overwrite values. |
startDate | boolean | - | false | Import start date. |
endDate | boolean | - | false | Import end date. |
flavors | boolean | - | false | Import flavors. |
flavorGroupsLockStatus | boolean | - | false | Import flavor groups lock status. |
labels | boolean | - | false | Import labels. |
manager | boolean | - | false | Import manager. |
budget | boolean | - | false | Import budget. |
location | boolean | - | false | Import location. |
description | boolean | - | false | Import description. |
goal | boolean | - | false | Import goal. |
benefit | boolean | - | false | Import benefit. |
icon | boolean | - | false | Import icon. |
files | boolean | - | false | Import files. |
This endpoint defaults tofalse, unlike the two "create" endpoints aboveEvery optional field on this endpoint defaults to
false- the same opt-in behavior as the task-update endpoint below, and the opposite of the "create project from a template" and "create task from a template" endpoints, which default their options totrue. See Default Behavior Summary below for a full comparison.
There is no option to import tasks, folders, or other project structures through this endpoint - only the master-data-related fields listed above are available, matching the "master data only" scope of applying a project template to an existing project in the smenso UI.
Response: 200 OK on success. Errors: 400 Bad Request, 401 Unauthorized, 403 Forbidden, 500 Internal Server Error
Applying a Task Template to an Existing Task
The Integration API can apply an existing task template to an existing task.
Endpoint
PUT /api/integration/task/json/{taskId}/{templateId}
Content-Type: application/json
Authorization: Basic {YOUR_TOKEN}The complete endpoint reference, including all request and response fields, is available here:
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
taskId | string | ✅ | ID of the existing task to which the template should be applied. |
templateId | string | ✅ | ID of the task template that should be applied. |
Both IDs are GUIDs identifying existing objects in smenso.
UI and API Behave Differently
Template options are opt-in when using the APIApplying a task template through the API does not use the same defaults as applying it through the smenso UI. When a task template is applied in the smenso UI, the available options are selected by default; a user can deselect individual options before confirming. The API works differently: every option in the request body defaults to
false. An option that is omitted from the request is therefore not automatically taken from the template - the integration must explicitly set each option it wants applied totrue.
| Behavior | smenso UI | Integration API |
|---|---|---|
| Template options selected by default | ✅ Yes | ❌ No |
| Omitted option is automatically applied | ✅ Usually selected in the UI | ❌ No |
| Explicit selection required | Only when changing the default selection | ✅ Set the property to true |
| Default for boolean options | - | false |
This difference matters most when an integration is meant to reproduce the behavior a user sees when applying a template manually - see Apply All Available Template Sections below.
This opt-in default also applies to the project-update endpointThe
false-by-default behavior described in this section is not unique to tasks - the "apply template to an existing project" endpoint documented above follows the same opt-in logic. The "create from template" endpoints (task, status report, project), however, do not - see Default Behavior Summary.
Available Task Template Options
The API provides the following options when applying a task template to an existing task via the PUT endpoint above.
| Field | Type | Default | Description |
|---|---|---|---|
overwriteValues | boolean | false | Allows the template to overwrite fields that already have a value. Fields that are empty on the task are always filled from the template when the corresponding section is enabled, regardless of this setting. |
startDate | boolean | false | Include the start date from the template. |
dueDate | boolean | false | Include the due date from the template. |
statusAndWorkflow | boolean | false | Include status and workflow configuration. |
files | boolean | false | Include files from the template. |
labels | boolean | false | Include labels. |
flavors | boolean | false | Include flavors. |
participants | boolean | false | Include participants. |
observers | boolean | false | Include observers. |
subTasks | boolean | false | Include subtasks. |
description | boolean | false | Include the task description. |
priority | boolean | false | Include priority. |
blockTimeRecording | boolean | false | Include the setting for blocking time recording. |
autoUpdateFields | boolean | false | Include automatic effort / cost update settings. |
Explicit selectionEvery option that should be taken from the task template must explicitly be set to
true. Do not rely on the default selections of the smenso UI when implementing template-based task updates through the API.
Flavor group behavior matches the UIWhen
flavorsandoverwriteValuesare both set totrue, flavor groups that don't exist in the template are removed, and flavors from removed groups are moved into the first remaining group - the same behavior described for the smenso UI'sOverwrite valuestoggle. See the Help Center article on Applying Task Templates for the full explanation and worked examples of this behavior, including what happens to fields that exist in both the task and the (empty) template.
Example: Apply Selected Template Values
In many integrations, only specific parts of a template should be applied. The following request applies the start date, due date, status and workflow, labels, description, and priority:
PUT /api/integration/task/json/{taskId}/{templateId}
Content-Type: application/json
Authorization: Basic {YOUR_TOKEN}{
"startDate": true,
"dueDate": true,
"statusAndWorkflow": true,
"labels": true,
"description": true,
"priority": true
}All other options remain disabled because they were not explicitly set to true. For example, a request body of:
{
"labels": true,
"flavors": true
}only enables labels and flavors. It does not implicitly enable dates, workflow, description, priority, subtasks, or any other option.
Example: Apply All Available Template Sections
If an integration should reproduce the default selection users typically see when opening the template dialog in the smenso UI, all relevant options need to be explicitly enabled:
{
"overwriteValues": true,
"startDate": true,
"dueDate": true,
"statusAndWorkflow": true,
"files": true,
"labels": true,
"flavors": true,
"participants": true,
"observers": true,
"subTasks": true,
"description": true,
"priority": true,
"blockTimeRecording": true,
"autoUpdateFields": true
}
ReviewoverwriteValuesbefore enabling itEnabling all options also allows existing task information to be overwritten. Only set
overwriteValuestotruewhen replacing existing values is intended. In production integrations, it is usually preferable to explicitly enable only the sections the integration is responsible for, rather than applying the full template.
Example: Empty Request Body
An empty request body does not mean "apply everything from the template":
{}Since every option defaults to false, no template section has been enabled - this call has no effect on the task. If the integration expects template data to be transferred, the required options must be included explicitly:
{
"statusAndWorkflow": true,
"labels": true,
"flavors": true,
"description": true
}This is the most common source of confusion when migrating template logic from the UI to the API: a request that "just calls the endpoint" without setting any options will silently apply nothing, rather than falling back to the UI's default selection.
Important Notes
Template IDs
Template operations require the ID/GUID of the template that should be used. Do not confuse a templateId with temporary or external identifiers used by other API operations.
Template Behavior Depends on the Endpoint
Template-related endpoints do not necessarily use the same request options or defaults. Always check the API reference of the specific operation before assuming that omitted properties are automatically applied - see Default Behavior Summary above for a side-by-side comparison of all four template endpoints documented on this page.
In particular, the false-by-default behavior applies to:
Apply template to task - PUT /api/integration/task/json/{taskId}/{templateId}
Update master data of a project - PUT /api/integration/project/json/{templateId}
The two "create from template" endpoints for tasks and projects, plus the status-report-from-template endpoint, each have their own, different default behavior - do not apply the same assumptions to them.
FAQ
Does an omitted property use the template value?
It depends on the endpoint. For the task-update-from-template endpoint (PUT .../task/json/{taskId}/{templateId}) and the project-update-from-template endpoint (PUT .../project/json/{templateId}), an omitted boolean option remains false - it does not use the template value. For example, { "priority": true } on the task endpoint enables priority but does not automatically enable status, workflow, labels, description, or any other section.
For the task-create-from-template and project-create-from-template endpoints (POST), the opposite is true: omitted options default to true and are applied from the template, unless explicitly set to false.
How can I reproduce the default UI selection through the API?
For the task-update endpoint, explicitly enable all template sections that would be selected in the UI (see Apply All Available Template Sections). Calling that endpoint without body parameters does not apply the entire template. For the create-from-template endpoints, omitting the options already reproduces the "select everything" default.
Do I have to apply the complete task template?
No - one advantage of the API is that individual sections can be selected independently, for example:
{
"statusAndWorkflow": true,
"labels": true,
"priority": true
}Does the false default also apply to project templates?
false default also apply to project templates?It depends which project-template endpoint You use. The "create project from a template" endpoint defaults every field in its options object to true - see Create Project from a Template above. The "apply template to an existing project" endpoint, however, defaults every option to false, just like the task-update endpoint - see Applying a Project Template to an Existing Project above.
Does the false default also apply to status report templates?
false default also apply to status report templates?Not applicable - the "create status report from a template" endpoint has no optional sections at all. The template's content is always applied in full.
Can I apply a status report template to an already existing report through the API?
Not currently. The Integration API only supports creating a new status report from a template - see Create Status Report from a Template. Applying a template to an existing draft report is only available through the smenso UI at this time.
Summary
Templates standardize recurring structures and configuration across projects, tasks, and status reports. Project templates provide reusable project structures, task templates standardize recurring task configuration, and status report templates provide consistent report layouts and content.
Two different flows exist for each object type: creating a new object from a template, and (for tasks only, via the API) applying a template to an already existing object. These flows use different endpoints with different default behaviors:
Creating a task or project from a template defaults included sections to
true. Applying a template to an existing task defaults every option tofalse.
Always check the specific endpoint reference before assuming a consistent default across smenso's template APIs - see the Default Behavior Summary table for a quick comparison.
Updated about 1 month ago
