Skip to the documentation
API

Update a task

Changes a task. Send only the fields that change.

PATCH/tasks/{id}

Runs the real call on your workspace.

PATCH /tasks/{id}

Changes a task. Send only the fields that change.

Example

Needs the same scopes as creating, counted against the toolkits the task will have afterwards.

curl
curl -X PATCH "$OE/tasks/tsk_4b9e2c7a1f3d86e05a9c2b7d" -H "$AUTH" -H 'content-type: application/json' -d '{  "autonomy": "reply",  "toolkits": ["drafts", "notes", "knowledge", "calendar"]}'
Response
{  "object": "task",  "id": "tsk_4b9e2c7a1f3d86e05a9c2b7d",  "name": "Morning summary",  "instruction": "Go through the mail that arrived since yesterday. Tell me which conversations need a reply from me, most urgent first, and draft a short reply for each.",  "status": "active",  "pausedReason": null,  "trigger": {    "kind": "schedule",    "schedule": {      "cadence": "daily",      "everyHours": 1,      "hour": 8,      "minute": 0,      "weekdays": [1, 2, 3, 4, 5],      "monthDay": 1,      "timezone": "Europe/London"    },    "mail": null  },  "autonomy": "organize",  "toolkits": ["notes", "drafts", "knowledge"],  "model": "standard",  "notify": "attention",  "maxRunsPerDay": 50,  "maxSteps": 20,  "nextRunAt": "2026-10-14T07:00:00.000Z",  "heldUntil": null,  "lastRunAt": "2026-10-13T07:00:04.112Z",  "lastRunStatus": "done",  "runCount": 12,  "pendingApprovals": 0,  "createdAt": "2026-10-01T09:12:44.000Z",  "updatedAt": "2026-10-13T07:01:10.530Z"}

A trigger replaces the old one whole, and a new schedule works out nextRunAt again.

A run that is already going keeps the instruction and the settings it started with.

Pausing and resuming have their own endpoints, so status is not a field here.

Reference