> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ando.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Record a task update

> Records a task update and optional task/resource changes.



## OpenAPI

````yaml /api-reference/openapi.json post /tasks/{taskId}/updates
openapi: 3.0.3
info:
  description: >-
    Generated from Ando's accepted public API v1 contract metadata. Current
    routes preserve legacy /api/v1 response envelopes while converging on the
    public https://api.ando.so/v1 shape.
  title: Ando Public API
  version: v1
servers:
  - description: Canonical public API host.
    url: https://api.ando.so/v1
security: []
tags:
  - description: Call detail and transcript routes.
    name: Calls
  - description: Clipboard detail routes.
    name: Clipboards
  - description: >-
      Workspace member detail routes. Existing v1 paths keep member
      compatibility spellings.
    name: Members
  - description: Message and conversation message routes.
    name: Messages
  - description: Public realtime connection and protocol routes.
    name: Realtime
  - description: Search routes.
    name: Search
  - description: Task routes.
    name: Tasks
  - description: Outbound webhook endpoint and delivery routes.
    name: Webhooks
paths:
  /tasks/{taskId}/updates:
    post:
      tags:
        - Tasks
      summary: Record a task update
      description: Records a task update and optional task/resource changes.
      operationId: recordTaskUpdate
      parameters:
        - description: Task identifier.
          in: path
          name: taskId
          required: true
          schema:
            description: Task identifier.
            type: string
        - description: Idempotency key for safely retrying this write.
          in: header
          name: Idempotency-Key
          required: false
          schema:
            description: Idempotency key.
            type: string
            maxLength: 255
      requestBody:
        content:
          application/json:
            examples:
              worklog:
                summary: Record a worklog and move a task to review.
                value:
                  entry:
                    kind: worklog
                    author_kind: local_agent
                    author_label: Local agent
                    body_markdown: Validated the route migration.
                  task_patch:
                    phase: review
                    summary: Ready for validation.
                  resource_ops:
                    - op: add
                      label: Pull request
                      url: https://github.com/Ando-Corporation/ando/pull/3628
            schema:
              $ref: '#/components/schemas/RecordTaskUpdateBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordTaskUpdateResponse'
          description: Recorded task update.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - AndoApiKey: []
        - BearerApiKey: []
components:
  schemas:
    RecordTaskUpdateBody:
      additionalProperties: false
      description: >-
        Record a task worklog/checkpoint update and optional task/resource
        changes.
      properties:
        entry:
          additionalProperties: false
          description: Task update entry.
          properties:
            author_kind:
              $ref: '#/components/schemas/TaskEntryAuthorKind'
            author_label:
              description: Author display label.
              type: string
            body_markdown:
              description: Entry markdown body.
              type: string
              nullable: true
            kind:
              $ref: '#/components/schemas/TaskEntryKind'
            run_id:
              description: Agent or local run identifier.
              type: string
              nullable: true
            source_message_id:
              description: Source message identifier.
              type: string
              nullable: true
          required:
            - kind
            - author_kind
            - author_label
          type: object
        expected_state_version:
          description: Optimistic task state version expected by the caller.
          type: integer
          minimum: 0
        resource_ops:
          description: Resource changes.
          items:
            $ref: '#/components/schemas/TaskResourceOperation'
          type: array
        task_patch:
          additionalProperties: false
          description: Task fields to update.
          properties:
            phase:
              $ref: '#/components/schemas/TaskPhase'
            summary:
              description: Task summary.
              type: string
              nullable: true
          type: object
      required:
        - entry
      type: object
    RecordTaskUpdateResponse:
      additionalProperties: false
      description: Recorded task update response.
      properties:
        changed_resources:
          description: Resources changed by this update.
          items:
            $ref: '#/components/schemas/TaskResourceResult'
          type: array
        entry:
          $ref: '#/components/schemas/TaskEntryResult'
        task:
          $ref: '#/components/schemas/TaskResult'
      required:
        - task
        - entry
        - changed_resources
      type: object
    TaskEntryAuthorKind:
      description: >-
        Task entry author kind. The member value is a v1 compatibility spelling
        for a human workspace member author.
      enum:
        - member
        - managed_agent
        - connected_agent
        - local_agent
        - system
      type: string
    TaskEntryKind:
      description: Task entry kind.
      enum:
        - memory
        - note
        - worklog
        - checkpoint
        - handoff
      type: string
    TaskResourceOperation:
      description: Task resource operation.
      oneOf:
        - additionalProperties: false
          description: Add a task resource.
          properties:
            label:
              description: Resource label.
              type: string
            op:
              description: Operation.
              enum:
                - add
              type: string
            url:
              description: Resource URL.
              type: string
              format: uri
          required:
            - op
            - label
            - url
          type: object
        - additionalProperties: false
          description: Update a task resource.
          properties:
            label:
              description: Resource label.
              type: string
            op:
              description: Operation.
              enum:
                - update
              type: string
            resource_id:
              description: Resource identifier.
              type: string
              example: 01jzn7e61x3a7v9h2r7t2m3q4p
            url:
              description: Resource URL.
              type: string
              format: uri
          required:
            - op
            - resource_id
          type: object
        - additionalProperties: false
          description: Archive a task resource.
          properties:
            op:
              description: Operation.
              enum:
                - archive
              type: string
            resource_id:
              description: Resource identifier.
              type: string
              example: 01jzn7e61x3a7v9h2r7t2m3q4p
          required:
            - op
            - resource_id
          type: object
    TaskPhase:
      description: Task phase.
      enum:
        - idea
        - building
        - review
        - done
      type: string
    TaskResourceResult:
      additionalProperties: false
      description: Task resource.
      properties:
        archived_at:
          description: Archive timestamp.
          type: string
          format: date-time
          nullable: true
        created_at:
          description: Resource creation timestamp.
          type: string
          example: '2026-05-14T08:00:00.000Z'
          format: date-time
        created_by_entry_id:
          description: Creating entry identifier.
          type: string
          nullable: true
        id:
          description: Resource identifier.
          type: string
          example: 01jzn7e61x3a7v9h2r7t2m3q4p
        label:
          description: Resource label.
          type: string
        task_id:
          description: Task identifier.
          type: string
          example: 01jzn7e61x3a7v9h2r7t2m3q4p
        updated_at:
          description: Resource update timestamp.
          type: string
          example: '2026-05-14T08:00:00.000Z'
          format: date-time
        url:
          description: Resource URL.
          type: string
          format: uri
        workspace_id:
          description: Workspace identifier.
          type: string
          example: 01jzn7e61x3a7v9h2r7t2m3q4p
      required:
        - id
        - task_id
        - workspace_id
        - label
        - url
        - created_by_entry_id
        - archived_at
        - created_at
        - updated_at
      type: object
    TaskEntryResult:
      additionalProperties: false
      description: Task entry.
      properties:
        author_kind:
          $ref: '#/components/schemas/TaskEntryAuthorKind'
        author_label:
          description: Author display label.
          type: string
        authorWorkspaceMembershipId:
          description: >-
            Canonical author workspace membership identifier. Matches legacy
            author_member_id during the compatibility window.
          type: string
          nullable: true
        author_member_id:
          description: >-
            Author workspace member identifier. Deprecated: read
            authorWorkspaceMembershipId instead.
          type: string
          nullable: true
          deprecated: true
        body_markdown:
          description: Entry markdown body.
          type: string
          nullable: true
        created_at:
          description: Entry creation timestamp.
          type: string
          example: '2026-05-14T08:00:00.000Z'
          format: date-time
        id:
          description: Entry identifier.
          type: string
          example: 01jzn7e61x3a7v9h2r7t2m3q4p
        kind:
          $ref: '#/components/schemas/TaskEntryKind'
        run_id:
          description: Run identifier.
          type: string
          nullable: true
        source_message_id:
          description: Source message identifier.
          type: string
          nullable: true
        task_id:
          description: Task identifier.
          type: string
          example: 01jzn7e61x3a7v9h2r7t2m3q4p
        updated_at:
          description: Entry update timestamp.
          type: string
          example: '2026-05-14T08:00:00.000Z'
          format: date-time
        workspace_id:
          description: Workspace identifier.
          type: string
          example: 01jzn7e61x3a7v9h2r7t2m3q4p
      required:
        - id
        - task_id
        - workspace_id
        - kind
        - author_kind
        - authorWorkspaceMembershipId
        - author_member_id
        - author_label
        - run_id
        - source_message_id
        - body_markdown
        - created_at
        - updated_at
      type: object
    TaskResult:
      additionalProperties: false
      description: Task result.
      properties:
        conversation_id:
          description: Conversation identifier.
          type: string
          nullable: true
        conversation_name:
          description: Conversation name.
          type: string
          nullable: true
        created_at:
          description: Task creation timestamp.
          type: string
          example: '2026-05-14T08:00:00.000Z'
          format: date-time
        creatorWorkspaceMembershipId:
          description: >-
            Canonical creator workspace membership identifier. Matches legacy
            creator_member_id during the compatibility window.
          type: string
          nullable: true
        creator_member_id:
          description: >-
            Creator workspace member identifier. Deprecated: read
            creatorWorkspaceMembershipId instead.
          type: string
          nullable: true
          deprecated: true
        id:
          description: Task identifier.
          type: string
          example: 01jzn7e61x3a7v9h2r7t2m3q4p
        last_activity_at:
          description: Last activity timestamp.
          type: string
          example: '2026-05-14T08:00:00.000Z'
          format: date-time
        name:
          description: Task name.
          type: string
        objective:
          description: Task objective.
          type: string
        phase:
          $ref: '#/components/schemas/TaskPhase'
        state_version:
          description: Optimistic task state version.
          type: integer
        summary:
          description: Task summary.
          type: string
          nullable: true
        updated_at:
          description: Task update timestamp.
          type: string
          example: '2026-05-14T08:00:00.000Z'
          format: date-time
      required:
        - id
        - name
        - objective
        - phase
        - summary
        - conversation_id
        - conversation_name
        - creatorWorkspaceMembershipId
        - creator_member_id
        - state_version
        - last_activity_at
        - created_at
        - updated_at
      type: object
    LegacyErrorResponse:
      additionalProperties: false
      description: Current compatibility error envelope used by legacy /api/v1 routes.
      properties:
        error:
          description: Error message.
          type: string
        error_code:
          description: Optional machine-readable error code.
          type: string
          nullable: true
        missing_scopes:
          description: Missing scopes.
          items:
            description: Scope.
            type: string
          type: array
      required:
        - error
      type: object
    PublicApiErrorResponse:
      additionalProperties: false
      description: Target public API error envelope.
      properties:
        error:
          additionalProperties: false
          description: Error details.
          properties:
            code:
              description: Machine-readable error code.
              type: string
            message:
              description: Human-readable error message.
              type: string
            request_id:
              description: Request identifier.
              type: string
              nullable: true
          required:
            - code
            - message
          type: object
      required:
        - error
      type: object
  responses:
    BadRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LegacyErrorResponse'
      description: Bad request.
    Unauthorized:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LegacyErrorResponse'
      description: Missing or invalid API key.
    Forbidden:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LegacyErrorResponse'
      description: Forbidden.
    NotFound:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LegacyErrorResponse'
      description: Not found.
    Conflict:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LegacyErrorResponse'
      description: Conflict.
    RateLimited:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PublicApiErrorResponse'
      description: Rate limit or quota exceeded.
    InternalError:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LegacyErrorResponse'
      description: Internal server error.
  securitySchemes:
    AndoApiKey:
      description: Workspace API key. Current accepted keys use the ando_sk_ prefix.
      in: header
      name: x-api-key
      type: apiKey
    BearerApiKey:
      bearerFormat: ando_sk
      description: Compatibility transport for workspace API keys.
      scheme: bearer
      type: http

````