Skip to content
REST API

Add a subtask

POST
/tasks/{taskId}/subtasks

Adds a checklist item to a top-level task. The subtask takes the parent's type and subject. A task can have at most 50 subtasks, and subtasks cannot have their own.

Required scopes: tasks:create

Authorization

AuthorizationBearer <token>

In: header

Path Parameters

taskId*string

Task id, scoped to the key's user.

Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid

Header Parameters

Idempotency-Key?string

A client-generated key (1 to 255 visible ASCII characters) that makes this POST safe to retry. A retry with the same key and body replays the original response; the same key with a different body returns 409 idempotency_conflict. Stored for 24 hours.

Match^[\x21-\x7E]{1,255}$
Length1 <= length <= 255

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/tasks/497f6eca-6276-4993-bfeb-53cbbbba6f08/subtasks" \  -H "Content-Type: application/json" \  -d '{    "name": "string"  }'
{  "data": {    "id": "8b7a6f5e-4d3c-4b2a-9f1e-0d9c8b7a6f5e",    "name": "Plot the titration curve",    "description": null,    "type": "Generic",    "subjectId": "5f0c1d2e-3a4b-4c5d-8e6f-7a8b9c0d1e2f",    "dueDate": "2026-02-10T17:00:00.000Z",    "completed": false,    "parentId": "4d3c2b1a-0f9e-4d8c-9b7a-6f5e4d3c2b1a",    "createdAt": "2026-01-15T09:30:00.000Z",    "updatedAt": "2026-02-01T12:00:00.000Z"  }}