---
title: "Use Template"
method: POST
path: "/api/v1/templates/{template_id}/use"
tags: ["Templates"]
---

# Use Template

`POST /api/v1/templates/{template_id}/use`

## Request

- Base URL: `https://api.todoist.com`
- URL: `https://api.todoist.com/api/v1/templates/{template_id}/use`
- Auth: none declared

Create a project or a complete setup from a template. Requires `data:read_write`.

Saved workspace templates can only be used in their associated workspace.
Returns the created sync-style graph, with tasks in `items` and comments in `notes`.

## Path parameters

- `template_id` string, required: Curated template slug or saved template ID with a `UT_` prefix.

## Request body

- Body37d1a6e4
  - `locale` string: Locale for curated template content, with the template's English fallback.
  - `workspace_id` string, nullable: Destination workspace ID. Omit to create personal projects.
  - `folder_id` string, nullable: Destination folder for a project template. Requires workspace_id. Unsupported for setups.

## Response `200`

Successful Response

- CreateFromTemplateIdResponse
  - `template_type` 'project' | 'setup', required: Template type: project or setup.
  - `projects` union[], required: Projects in the template's sync-style graph.
    - union
      - PersonalProjectSyncView: A representation of a Personal Project Sync View, extending the base ProjectSync View, to be returned to clients in a sync (or sync-like) response.
        - `id` string, required: String ID of the project.
        - `can_assign_tasks` boolean, required: Whether the current user can assign tasks in the project.
        - `can_comment` boolean, required: Whether the current user can comment in the project.
        - `child_order` integer, required: Position of the project among sibling projects.
        - `order_key` string, nullable, required: Fractional-indexing order key among sibling projects, or `null` until assigned (backfill in progress). Always `null` for workspace projects, which are ordered via folders instead.
        - `is_collapsed` boolean, required: Whether the project is collapsed in the user's view.
        - `color` string, required: Project color name.
        - `icon` string, nullable: Project icon name, or `null` for the default icon. More icons will be added over time, so clients should fall back to the default icon for names they don't recognize.
        - `creator_uid` string, nullable, required: String ID of the user who created the project.
        - `created_at` string, date-time, nullable, required: Date and time when the project was created, or `null` if unknown.
        - `is_archived` boolean, required: Whether the project is archived.
        - `is_deleted` boolean, required: Whether the project is deleted.
        - `is_favorite` boolean, required: Whether the project is marked as a favorite.
        - `is_frozen` boolean, required: Whether the project is frozen and cannot be modified.
        - `name` string, required: Project name.
        - `is_shared` boolean, required: Whether the project is shared with other users.
        - `updated_at` string, date-time, nullable, required: Date and time when the project was last updated, or `null` if unknown.
        - `view_style` string, required: Project view style.
        - `default_order` integer, required: Default order of the project in team views.
        - `default_order_key` string, nullable, required: Fractional-indexing key for the workspace's shared default-ordering scope (folders and workspace projects together). `null` for personal projects, and for workspace projects not yet assigned one (backfill pending).
        - `description` string, required: Project description.
        - `public_key` string, required: Public access key for the project, or an empty string when public access is disabled.
        - `access` ProjectAccessView, required: Contains the details on who can view a project.
          - `visibility` 'restricted' | 'team' | 'public', required: Indicates who can see a project
          - `configuration` union, required: Configuration for the selected visibility level.
            - RestrictedProjectConfiguration: Configuration specific to restricted projects.
            - TeamProjectConfiguration: Configuration specific to team projects.
            - PublicProjectConfiguration: Configuration specific to public projects.
              - …
        - `role` string, nullable, required: Current user's role in the project.
        - `parent_id` string, nullable, required: String ID of the parent project, or `null` for root projects.
        - `inbox_project` boolean, required: Whether this project is the user's Inbox project.
      - WorkspaceProjectSyncView: A representation of a Workspace Project Sync View, extending the base ProjectSync View, to be returned to clients in a sync (or sync-like) response.
        - `id` string, required: String ID of the project.
        - `can_assign_tasks` boolean, required: Whether the current user can assign tasks in the project.
        - `can_comment` boolean, required: Whether the current user can comment in the project.
        - `child_order` integer, required: Position of the project among sibling projects.
        - `order_key` string, nullable, required: Fractional-indexing order key among sibling projects, or `null` until assigned (backfill in progress). Always `null` for workspace projects, which are ordered via folders instead.
        - `is_collapsed` boolean, required: Whether the project is collapsed in the user's view.
        - `color` string, required: Project color name.
        - `icon` string, nullable: Project icon name, or `null` for the default icon. More icons will be added over time, so clients should fall back to the default icon for names they don't recognize.
        - `creator_uid` string, nullable, required: String ID of the user who created the project.
        - `created_at` string, date-time, nullable, required: Date and time when the project was created, or `null` if unknown.
        - `is_archived` boolean, required: Whether the project is archived.
        - `is_deleted` boolean, required: Whether the project is deleted.
        - `is_favorite` boolean, required: Whether the project is marked as a favorite.
        - `is_frozen` boolean, required: Whether the project is frozen and cannot be modified.
        - `name` string, required: Project name.
        - `is_shared` boolean, required: Whether the project is shared with other users.
        - `updated_at` string, date-time, nullable, required: Date and time when the project was last updated, or `null` if unknown.
        - `view_style` string, required: Project view style.
        - `default_order` integer, required: Default order of the project in team views.
        - `default_order_key` string, nullable, required: Fractional-indexing key for the workspace's shared default-ordering scope (folders and workspace projects together). `null` for personal projects, and for workspace projects not yet assigned one (backfill pending).
        - `description` string, required: Project description.
        - `public_key` string, required: Public access key for the project, or an empty string when public access is disabled.
        - `access` ProjectAccessView, required: Contains the details on who can view a project.
          - `visibility` 'restricted' | 'team' | 'public', required: Indicates who can see a project
          - `configuration` union, required: Configuration for the selected visibility level.
            - RestrictedProjectConfiguration: Configuration specific to restricted projects.
            - TeamProjectConfiguration: Configuration specific to team projects.
            - PublicProjectConfiguration: Configuration specific to public projects.
              - …
        - `role` string, nullable, required: Current user's role in the project.
        - `collaborator_role_default` string, required: Default collaborator role for the workspace project.
        - `folder_id` string, nullable, required: String ID of the folder that contains the project, or `null`.
        - `is_invite_only` boolean, nullable, required: Whether joining the workspace project requires an invitation.
        - `is_link_sharing_enabled` boolean, required: Whether invitation links are enabled for the project.
        - `status` 'PLANNED' | 'IN_PROGRESS' | 'PAUSED' | 'COMPLETED' | 'CANCELED', required: Project status. At the moment, this is for workspace projects only.
        - `workspace_id` string, required: String ID of the workspace that contains the project.
        - `is_pending_default_collaborator_invites` boolean, required: Whether default collaborator invitations are still being created in the background.
        - `is_project_insights_enabled` boolean, required: Whether project insights are enabled for the project.
        - `parent_id` unknown
  - `sections` SectionSyncView[], required: Sections in the template's sync-style graph.
    - `id` string, required: String ID of the section.
    - `user_id` string, required: String ID of the user who owns the section.
    - `project_id` string, required: String ID of the project that contains the section.
    - `added_at` string, date-time, required: Date and time when the section was created.
    - `updated_at` string, date-time, nullable, required: Date and time when the section was last updated, or `null` if unknown.
    - `archived_at` string, date-time, nullable, required: Date and time when the section was archived, or `null` if it is active.
    - `name` string, required: Section name.
    - `description` string, nullable, required: Section description, or `null` if it has none.
    - `section_order` integer, required: Position of the section in the project.
    - `order_key` string, nullable, required: Fractional-indexing order key: sections sort by comparing keys lexicographically within a project. May be `null` for projects not yet migrated.
    - `is_collapsed` boolean, required: Whether the section is collapsed in the user's view.
    - `is_archived` boolean, required: Whether the section is archived.
    - `is_deleted` boolean, required: Whether the section is deleted.
  - `items` ItemSyncView[], required: Tasks in the graph. Uses the existing sync-style `items` name.
    - `user_id` string, required: String ID of the user who owns the task.
    - `id` string, required: String ID of the task.
    - `project_id` string, required: String ID of the project that contains the task.
    - `section_id` string, nullable, required: String ID of the section that contains the task, or `null` if the task is not in a section.
    - `parent_id` string, nullable, required: String ID of the parent task, or `null` if this is a top-level task.
    - `added_by_uid` string, nullable, required: String ID of the user who created the task, or `null` if unknown.
    - `assigned_by_uid` string, nullable, required: String ID of the user who assigned the task, or `null` if unassigned.
    - `responsible_uid` string, nullable, required: String ID of the user responsible for the task, or `null` if unassigned.
    - `labels` string[], required: Names of labels attached to the task.
    - `deadline` object, nullable, required: Deadline details for the task, or `null` when the task has no deadline.
    - `duration` object, nullable, required: Task duration details, or `null` when the task has no duration.
    - `is_collapsed` boolean, required: Whether the task is collapsed in the user's view.
    - `checked` boolean, required: Whether the task is completed.
    - `is_deleted` boolean, required: Whether the task is deleted.
    - `added_at` string, date-time, nullable, required: Date and time when the task was created, or `null` if unknown.
    - `completed_at` string, date-time, nullable, required: Date and time when the task was completed, or `null` if active.
    - `completed_by_uid` string, nullable, required: String ID of the user who completed the task, or `null` if active.
    - `updated_at` string, date-time, nullable, required: Date and time when the task was last updated, or `null` if unknown.
    - `due` object, nullable, required: Due date details for the task, or `null` when the task has no due date.
    - `priority` integer, required: Task priority from 1 (normal) to 4 (urgent).
    - `child_order` integer, required: Position of the task among sibling tasks.
    - `order_key` string, nullable, required: Fractional-indexing order key: tasks sort by comparing keys lexicographically among siblings sharing the same project, section and parent task. May be `null` for tasks not yet migrated.
    - `content` string, required: Task content.
    - `description` string, required: Task description.
    - `note_count` integer, required: **Deprecated**: only returns 0 and is marked for removal.
    - `day_order` integer, required: Task order for day-based views.
    - `completed_count` integer, required: Number of times the task has been marked as completed. Increments on every completion, including recurring occurrences and re-completions of a previously reopened task. Decremented when a recurring completion is undone.
    - `postponed_count` integer, required: Number of times the task's due date has been rescheduled by the user. Increments on any due-date change between two set dates (forward or backward); recurring completions and undos are not counted.
  - `notes` ItemNoteSyncView[], required: Task comments in the graph. Uses the existing sync-style `notes` name.
    - `id` string, required: String ID of the comment.
    - `posted_uid` string, nullable, required: String ID of the user who posted the comment.
    - `content` string: Comment content.
    - `file_attachment` object, nullable, required: File attachment metadata, or `null` when the comment has no attachment.
    - `uids_to_notify` string[], nullable, required: String IDs of users notified by the comment.
    - `is_deleted` boolean, required: Whether the comment is deleted.
    - `posted_at` string, date-time, nullable, required: Date and time when the comment was posted, or `null` if unknown.
    - `reactions` object, nullable, required: Reaction emoji mapped to user IDs that reacted.
    - `item_id` string, nullable, required
  - `project_notes` ProjectNoteSyncView[], required: Project comments in the graph.
    - `id` string, required: String ID of the comment.
    - `posted_uid` string, nullable, required: String ID of the user who posted the comment.
    - `content` string: Comment content.
    - `file_attachment` object, nullable, required: File attachment metadata, or `null` when the comment has no attachment.
    - `uids_to_notify` string[], nullable, required: String IDs of users notified by the comment.
    - `is_deleted` boolean, required: Whether the comment is deleted.
    - `posted_at` string, date-time, nullable, required: Date and time when the comment was posted, or `null` if unknown.
    - `reactions` object, nullable, required: Reaction emoji mapped to user IDs that reacted.
    - `project_id` string, nullable, required
  - `labels` LabelSyncView[], required: Labels in a setup, or an empty list for project use.
    - `id` string, required
    - `name` string, required
    - `color` string, required
    - `item_order` integer, required
    - `order_key` string, nullable, required
    - `is_favorite` boolean, required
    - `is_deleted` boolean, required
  - `filters` Filter[], required: Filters in a setup, or an empty list for project use.
    - `id` string, required
    - `name` string, required
    - `query` string, required
    - `description` string, required
    - `item_order` integer, required
    - `order_key` string, nullable, required
    - `is_deleted` boolean, required
    - `color` string, required
    - `is_favorite` boolean, required
    - `is_frozen` boolean, required
  - `view_options` UserViewOptionsSyncView[], required: User view options in the template graph.
    - `id` string, required: String ID of the view options.
    - `view_type` 'FILTER' | 'LABEL' | 'PROJECT' | 'TODAY' | 'UPCOMING' | 'WORKSPACE_FILTER' | 'ASSIGNED_TO_ME', required
    - `object_id` string, nullable, required: String ID of the object the options apply to (a project, label, or filter ID, depending on `view_type`), or `null` for the TODAY, UPCOMING, and ASSIGNED_TO_ME views.
    - `filtered_by` string, nullable, required: Filter query applied to the view.
    - `grouped_by` 'ASSIGNEE' | 'ADDED_DATE' | 'DUE_DATE' | 'LABEL' | 'PRIORITY' | 'PROJECT' | 'WORKSPACE' | 'DEADLINE', required
    - `sorted_by` 'ALPHABETICALLY' | 'ASSIGNEE' | 'ADDED_DATE' | 'DUE_DATE' | 'LABEL' | 'PRIORITY' | 'PROJECT' | 'WORKSPACE' | 'MANUAL' | 'DEADLINE', required
    - `sort_order` 'ASC' | 'DESC', required
    - `is_deleted` false: Whether the view options are deleted.
    - `view_mode` 'LIST' | 'BOARD' | 'CALENDAR' | 'TABLE', required
    - `show_completed_tasks` boolean, required: Whether completed tasks are shown in the view.
    - `calendar_settings` CalendarSettings, required
      - `layout` 'WEEK' | 'MONTH'
      - `visible_day_count` 1 | 3 | 7, nullable: Number of consecutive days shown in the week calendar layout.
      - `color` 'PRIORITY' | 'LABEL' | 'PROJECT'
    - `property_settings` PropertySettings, required: How views show task properties, such as the due date or labels, holding only what the user changed. Every layout reads the same settings: `width` applies where a layout shows the property in a column. Property IDs are opaque strings, so clients can add properties, like custom fields, without a backend change, and keep the ones they don't know, as well as keys and attributes the backend doesn't know.
      - `order` string[], nullable: Property IDs in display order.
      - `properties` object, nullable: How each property shows, by property ID.
  - `status` 'ok', required: Always ok on success.
  - `label_ids` string[], required: Created label IDs.
  - `filter_ids` string[], required: Created filter IDs.
  - `project_ids` ProjectResponse[], required: Created project IDs, each wrapped in a project_id object.
    - `project_id` string, required: ID of a created project.
  - `reminders` NotificationSyncView[], required: Reminders created by the import.
    - `id` string, required: String ID of the reminder.
    - `item_id` string, required: String ID of the task that owns the reminder.
    - `notify_uid` string, required: String ID of the user who receives the reminder.
    - `is_deleted` boolean, required: Whether the reminder is deleted.
    - `is_urgent` boolean, required: Whether the reminder should be delivered urgently.
    - `type` string, required: Reminder type.
    - `minute_offset` integer, nullable, required: Minutes before the task due time for relative reminders.
    - `due` object, nullable, required: Datetime when the reminder fires, or `null` if unset.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `429`: Request rate limit exceeded
- `503`: Rate limiter temporarily unavailable

## Changes

- **2026-10-29** `7c004345eb57`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/todoist/apis/todoist-api/changes/api/v1/templates/:template_id/use/post.md)

---

[API](https://skmtc.dev/todoist/apis/todoist-api.md) - [All operations](https://skmtc.dev/todoist/apis/todoist-api/llms.txt) - [OpenAPI document](https://skmtc.dev/todoist/apis/todoist-api/revisions/3c8cae93e5cc?raw)
