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

# Update Task

> Edit task text, mark a task as completed, or reopen it

Update a task using its `id` from [List Tasks](/developers/api/tasks/list-tasks). Send `text` to edit the action item, `completed: true` to mark it done, or `completed: false` to reopen it. You can update text and completion together. Omitted fields remain unchanged, and repeating the same request is safe.

<Tabs>
  <Tab title="Workspace key">
    ```text theme={null}
    POST /v1/workspace/tasks.update
    ```

    Update tasks owned by current members of the key's workspace, matching workspace task listing.

    ```bash theme={null}
    curl -X POST -H "x-api-key: jk_your_workspace_key" \
      -H "Content-Type: application/json" \
      -d '{"json":{"taskId":"8901234567890123456","completed":true}}' \
      "https://beta-api.meetjamie.ai/v1/workspace/tasks.update"
    ```
  </Tab>

  <Tab title="Personal key">
    ```text theme={null}
    POST /v1/me/tasks.update
    ```

    Update tasks you own. Tasks visible through shared meetings or shared tags remain read-only.

    ```bash theme={null}
    curl -X POST -H "x-api-key: jk_your_personal_key" \
      -H "Content-Type: application/json" \
      -d '{"json":{"taskId":"8901234567890123456","completed":true}}' \
      "https://beta-api.meetjamie.ai/v1/me/tasks.update"
    ```
  </Tab>
</Tabs>

Existing keys work without an additional scope or a new key.

## Parameters

| Parameter   | Type    | Required | Description                                                              |
| ----------- | ------- | -------- | ------------------------------------------------------------------------ |
| `taskId`    | string  | Yes      | Task `id` returned by `tasks.list`                                       |
| `completed` | boolean | No       | `true` to complete the task; `false` to reopen it                        |
| `text`      | string  | No       | New task text, 1–10,000 characters after trimming surrounding whitespace |

Provide at least one of `completed` or `text`. Empty or whitespace-only text and unsupported fields are rejected.

## Edit Task Text

This request updates the text without changing completion status. Use `/v1/me/tasks.update` for a personal key.

```bash theme={null}
curl -X POST -H "x-api-key: jk_your_workspace_key" \
  -H "Content-Type: application/json" \
  -d '{"json":{"taskId":"8901234567890123456","text":"Send the revised proposal to the team"}}' \
  "https://beta-api.meetjamie.ai/v1/workspace/tasks.update"
```

To edit the text and reopen the task together, include both fields:

```json theme={null}
{
  "json": {
    "taskId": "8901234567890123456",
    "text": "Send the revised proposal to the team",
    "completed": false
  }
}
```

## Example Response

```json theme={null}
{
  "result": {
    "data": {
      "json": {
        "taskId": "8901234567890123456",
        "completed": true
      }
    }
  }
}
```

The response contains `taskId` and the fields you supplied. A text-only update returns `taskId` and `text`; an update of both fields returns all three. The update is reflected in Jamie and subsequent `tasks.list` responses.

## Error Responses

| Status | Cause                                                                                                 |
| ------ | ----------------------------------------------------------------------------------------------------- |
| `400`  | Missing or invalid `taskId`, invalid `completed` or `text`, no update fields, or an unsupported field |
| `403`  | API key scope does not match the route                                                                |
| `404`  | Task does not exist or is not writable with this key                                                  |

Missing tasks and tasks outside your write access both return `Task not found or not writable`.
