# NewTaskInput

input type

Create-input for a Task. The tenant is derived SERVER-SIDE; ⚠ the caption IS the task's title and is REQUIRED at the boundary (the CsCase stance — an unnamed task is meaningless). Assignees/teams/labels validate in-tenant + ACTIVE; refs validate in-tenant + non-doomed; linkedFromTaskId validates COMPLETED-only. The TASKBOOK inbox rows for the birth sets mint in the SAME transaction.

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `caption` | [String](/types/#scalars) | no | Optional: when omitted the per-type default applies — NONE — the CsCase divergence class: the caption IS the task title, and an omitted caption refuses VALIDATION/INVALID at the boundary instead of defaulting; when supplied it must be non-blank. |
| `description` | [String](/types/#scalars) | no | The task's brief (≤8192). |
| `priority` | [String](/types/#scalars) | no | Defaults 'normal' when omitted. |
| `reportTo` | [ID](/types/#scalars) | no | In-tenant + ACTIVE User at set. |
| `assigneeUserIds` | [ID](/types/#scalars) `[ID!]` | no | ≤8 distinct in-tenant ACTIVE Users; omit = unassigned (the inbox open state). |
| `teamIds` | [ID](/types/#scalars) `[ID!]` | no | ≤4 distinct in-tenant ACTIVE Teams. |
| `labelIds` | [ID](/types/#scalars) `[ID!]` | no | ≤16 distinct in-tenant ACTIVE TaskLabels. |
| `dueAt` | [String](/types/#scalars) | no | ISO-8601 instant. |
| `constructRefs` | [TaskConstructRefInput](/types/TaskConstructRefInput/) `[TaskConstructRefInput!]` | no | ≤16 distinct (type,id) refs — in-tenant + non-doomed at write (ref-only). |
| `linkedFromTaskId` | [ID](/types/#scalars) | no | The COMPLETED task this one reopens. IMMUTABLE. |

## Used by

- [createTask](/reference/task/createTask/)
