---
title: "Preview User Template"
method: POST
path: "/api/v1/templates/user/preview"
tags: ["Templates"]
---

# Preview User Template

`POST /api/v1/templates/user/preview`

## Request

- Base URL: `https://api.todoist.com`
- URL: `https://api.todoist.com/api/v1/templates/user/preview`
- Auth: none declared

Stages and previews a project CSV sent as multipart `file` or a raw CSV body.

Requires `data:read_write` because the upload is stored. The response includes
the filename for a subsequent import and the graph for editing; project names
come from the filename or the `X-File-Name` header for raw bodies.

## Query parameters

- `resolve_dates` boolean: Resolve due dates and deadlines. Use false for an editor to receive raw date strings for the supported content graph projection. On v1.6+, raw typed dues also include date_type, time and timezone to preserve their meaning when saved.

## Request body `multipart/form-data`

- BodyPreviewUserTemplateApiV1TemplatesUserPreviewPost
  - `resolve_dates` boolean: Resolve due dates and deadlines. Use false for an editor to receive raw date strings for the supported content graph projection. On v1.6+, raw typed dues also include date_type, time and timezone to preserve their meaning when saved.
  - `file` string, binary, required

## Response `200`

Successful Response

- PreviewFromFileResponse
  - `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
  - `project_view_options_defaults` TemplateProjectViewOptionsDefaultsSnapshot[], required: Calendar settings stored by the project template, implicitly associated with its sole project.
    - `calendar_settings` TemplateCalendarSettings, required: Calendar settings representable by a persisted project template.
      - `layout` 'WEEK' | 'MONTH'
      - `visible_day_count` 1 | 3 | 7, nullable: Number of consecutive days shown in the week calendar layout.
      - `color` 'PRIORITY' | 'LABEL' | 'PROJECT'
  - `uploaded_file_name` string, required: Staged CSV filename owned by the caller. Pass it to /templates/user/import to save the template.
  - `reminders` NotificationSyncView[], required: Always empty: templates don't carry reminders.
    - `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`: 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/user/preview/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)
