---
title: "Record a task update"
method: POST
path: "/tasks/{taskId}/updates"
tags: ["Tasks"]
---

# Record a task update

`POST /tasks/{taskId}/updates`

Records a task update and optional task/resource changes.

## Path parameters

- `taskId` string, required — Task identifier.

## Headers

- `Idempotency-Key` string — Idempotency key.

## Request body

- RecordTaskUpdateBody — Record a task worklog/checkpoint update and optional task/resource changes.
  - `entry` object, required — Task update entry.
    - `author_kind` 'member' | 'managed_agent' | 'connected_agent' | 'local_agent' | 'system', required — Task entry author kind. The member value is a v1 compatibility spelling for a human workspace member author.
    - `author_label` string, required — Author display label.
    - `body_markdown` string, nullable — Entry markdown body.
    - `kind` 'memory' | 'note' | 'worklog' | 'checkpoint' | 'handoff', required — Task entry kind.
    - `run_id` string, nullable — Agent or local run identifier.
    - `source_message_id` string, nullable — Source message identifier.
  - `expected_state_version` integer — Optimistic task state version expected by the caller.
  - `resource_ops` TaskResourceOperation[] — Resource changes.
    - union — Task resource operation.
      - object — Add a task resource.
        - `label` string, required — Resource label.
        - `op` 'add', required — Operation.
        - `url` string, uri, required — Resource URL.
      - object — Update a task resource.
        - `label` string — Resource label.
        - `op` 'update', required — Operation.
        - `resource_id` string, required — Resource identifier.
        - `url` string, uri — Resource URL.
      - object — Archive a task resource.
        - `op` 'archive', required — Operation.
        - `resource_id` string, required — Resource identifier.
  - `task_patch` object — Task fields to update.
    - `phase` 'idea' | 'building' | 'review' | 'done' — Task phase.
    - `summary` string, nullable — Task summary.

## Response `200`

Recorded task update.

- RecordTaskUpdateResponse — Recorded task update response.
  - `changed_resources` TaskResourceResult[], required — Resources changed by this update.
    - `archived_at` string, date-time, nullable, required — Archive timestamp.
    - `created_at` string, date-time, required — Resource creation timestamp.
    - `created_by_entry_id` string, nullable, required — Creating entry identifier.
    - `id` string, required — Resource identifier.
    - `label` string, required — Resource label.
    - `task_id` string, required — Task identifier.
    - `updated_at` string, date-time, required — Resource update timestamp.
    - `url` string, uri, required — Resource URL.
    - `workspace_id` string, required — Workspace identifier.
  - `entry` TaskEntryResult, required — Task entry.
    - `author_kind` 'member' | 'managed_agent' | 'connected_agent' | 'local_agent' | 'system', required — Task entry author kind. The member value is a v1 compatibility spelling for a human workspace member author.
    - `author_label` string, required — Author display label.
    - `authorWorkspaceMembershipId` string, nullable, required — Canonical author workspace membership identifier. Matches legacy author_member_id during the compatibility window.
    - `author_member_id` string, nullable, required — Author workspace member identifier. Deprecated: read authorWorkspaceMembershipId instead.
    - `body_markdown` string, nullable, required — Entry markdown body.
    - `created_at` string, date-time, required — Entry creation timestamp.
    - `id` string, required — Entry identifier.
    - `kind` 'memory' | 'note' | 'worklog' | 'checkpoint' | 'handoff', required — Task entry kind.
    - `run_id` string, nullable, required — Run identifier.
    - `source_message_id` string, nullable, required — Source message identifier.
    - `task_id` string, required — Task identifier.
    - `updated_at` string, date-time, required — Entry update timestamp.
    - `workspace_id` string, required — Workspace identifier.
  - `task` TaskResult, required — Task result.
    - `conversation_id` string, nullable, required — Conversation identifier.
    - `conversation_name` string, nullable, required — Conversation name.
    - `created_at` string, date-time, required — Task creation timestamp.
    - `creatorWorkspaceMembershipId` string, nullable, required — Canonical creator workspace membership identifier. Matches legacy creator_member_id during the compatibility window.
    - `creator_member_id` string, nullable, required — Creator workspace member identifier. Deprecated: read creatorWorkspaceMembershipId instead.
    - `id` string, required — Task identifier.
    - `last_activity_at` string, date-time, required — Last activity timestamp.
    - `name` string, required — Task name.
    - `objective` string, required — Task objective.
    - `phase` 'idea' | 'building' | 'review' | 'done', required — Task phase.
    - `state_version` integer, required — Optimistic task state version.
    - `summary` string, nullable, required — Task summary.
    - `updated_at` string, date-time, required — Task update timestamp.

## Other responses

- `400` — Bad request.
- `401` — Missing or invalid API key.
- `403` — Forbidden.
- `404` — Not found.
- `409` — Conflict.
- `429` — Rate limit or quota exceeded.
- `500` — Internal server error.

---

[API](https://skmtc.net/ando/apis/ando-public-api.md) · [All operations](https://skmtc.net/ando/apis/ando-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ando/ando-public-api/revisions/0a94056fba48/schema)
