---
title: API: tasks
description: REST endpoints tagged tasks — generated from the platform's OpenAPI contract (5 operations).
locale: en
version: 0.2.0
canonical: https://enterium-developer-docs.pages.dev/developers/api/tasks/
---

> Documentation index: https://enterium-developer-docs.pages.dev/developers/llms.txt — every page of this portal has a Markdown twin at <route>.md; the frozen API contract is at https://enterium-developer-docs.pages.dev/developers/api/openapi.json.

:::note
Generated from the OpenAPI contract — do not edit by hand. Interactive explorer with full schemas: [https://entherium.duckdns.org:8443/reference](https://entherium.duckdns.org:8443/reference); frozen spec for this build: [openapi.json](/developers/api/openapi.json).
:::

## `GET /api/v1/tasks`

List Tasks Endpoint

[Open as a page →](./get-tasks/)

The read-only task board — paginated, filterable by assignee / status / area.
Team-only (owner + team members); an agent or non-team token gets 403.

**Auth:** `Authorization: Bearer <token>` required

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `assignee_id` | query | no | `integer \| null` |  |
| `status` | query | no | `string \| null` |  |
| `area` | query | no | `string \| null` | platform\|pipelines\|instances\|other |
| `limit` | query | no | `integer` |  |
| `offset` | query | no | `integer` |  |

**Responses:**

| Code | Meaning | Body |
| --- | --- | --- |
| `200` | Successful Response | `TaskListResponse` |
| `401` | Missing or invalid authentication credentials | `ErrorResponse` |
| `422` | Validation Error | `HTTPValidationError` |

## `POST /api/v1/tasks`

Create

[Open as a page →](./post-tasks/)

Create a task (agent needs ``manage_task``; owner/humans no-op the gate).

**Auth:** `Authorization: Bearer <token>` required

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `Idempotency-Key` | header | no | `string` | Optional. |

**Request body:** `application/json` — schema `TaskCreate`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `area` | `string \| null` | no |  |
| `assignee_id` | `integer \| null` | no |  |
| `description` | `string \| null` | no |  |
| `spec_ref` | `string \| null` | no |  |
| `title` | `string` | yes |  |

_Example:_

```json
{
  "area": "platform",
  "assignee_id": 2,
  "description": "Ten key schemas, one example each",
  "spec_ref": "SPEC-NNN",
  "title": "Add request examples to the public contract"
}
```

**Responses:**

| Code | Meaning | Body |
| --- | --- | --- |
| `201` | Successful Response | `TaskRead` |
| `401` | Missing or invalid authentication credentials | `ErrorResponse` |
| `422` | Validation Error | `HTTPValidationError` |
| `429` | Task intake rate exceeded; retry after the Retry-After seconds | `ErrorResponse` |

_Example response (201):_

```json
{
  "area": "platform",
  "assignee_id": 2,
  "assignee_name": "Owner",
  "createtime": "2026-09-03T08:00:00Z",
  "description": "Ten key schemas, one example each",
  "guid": 118,
  "owner": 5,
  "spec_ref": "SPEC-NNN",
  "status": "open",
  "title": "Add request examples to the public contract",
  "updatetime": "2026-09-03T08:00:00Z"
}
```

## `GET /api/v1/tasks/{guid}`

Get Task Endpoint

[Open as a page →](./get-tasks-guid/)

One task + its merged change-log (agent actions and notes, time-ordered). Team-only; 404 if absent.

**Auth:** `Authorization: Bearer <token>` required

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `guid` | path | yes | `integer` |  |

**Responses:**

| Code | Meaning | Body |
| --- | --- | --- |
| `200` | Successful Response | `TaskDetailRead` |
| `401` | Missing or invalid authentication credentials | `ErrorResponse` |
| `422` | Validation Error | `HTTPValidationError` |

_Example response (200):_

```json
{
  "area": "platform",
  "assignee_id": 2,
  "assignee_name": "Owner",
  "createtime": "2026-09-03T08:00:00Z",
  "description": "Ten key schemas, one example each",
  "guid": 118,
  "owner": 5,
  "spec_ref": "SPEC-NNN",
  "status": "open",
  "title": "Add request examples to the public contract",
  "updatetime": "2026-09-03T08:00:00Z"
}
```

## `PATCH /api/v1/tasks/{guid}`

Patch

[Open as a page →](./patch-tasks-guid/)

Change status (open↔closed) / reassign / edit; logs each field change.

**Auth:** `Authorization: Bearer <token>` required

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `guid` | path | yes | `integer` |  |
| `Idempotency-Key` | header | no | `string` | Optional. |

**Request body:** `application/json` — schema `TaskPatch`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `area` | `string \| null` | no |  |
| `assignee_id` | `integer \| null` | no |  |
| `description` | `string \| null` | no |  |
| `spec_ref` | `string \| null` | no |  |
| `status` | `"open" \| "closed" \| null` | no |  |
| `title` | `string \| null` | no |  |

_Example:_

```json
{
  "description": "Done: examples added to 17 request schemas",
  "status": "closed"
}
```

**Responses:**

| Code | Meaning | Body |
| --- | --- | --- |
| `200` | Successful Response | `TaskRead` |
| `401` | Missing or invalid authentication credentials | `ErrorResponse` |
| `409` | Illegal status transition (e.g. closing an already-closed task) | `ErrorResponse` |
| `422` | Validation Error | `HTTPValidationError` |

_Example response (200):_

```json
{
  "area": "platform",
  "assignee_id": 2,
  "assignee_name": "Owner",
  "createtime": "2026-09-03T08:00:00Z",
  "description": "Ten key schemas, one example each",
  "guid": 118,
  "owner": 5,
  "spec_ref": "SPEC-NNN",
  "status": "open",
  "title": "Add request examples to the public contract",
  "updatetime": "2026-09-03T08:00:00Z"
}
```

## `POST /api/v1/tasks/{guid}/notes`

Add Task Note

[Open as a page →](./post-tasks-guid-notes/)

Append a free-text note to the task's log (stored as a comment).

**Auth:** `Authorization: Bearer <token>` required

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `guid` | path | yes | `integer` |  |
| `Idempotency-Key` | header | no | `string` | Optional. |

**Request body:** `application/json` — schema `TaskNoteIn`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `body_markdown` | `string` | yes |  |

_Example:_

```json
{
  "body_markdown": "Verified live: `/api/` answers with the machine map."
}
```

**Responses:**

| Code | Meaning | Body |
| --- | --- | --- |
| `201` | Successful Response | `object` |
| `401` | Missing or invalid authentication credentials | `ErrorResponse` |
| `422` | Validation Error | `HTTPValidationError` |
| `429` | Task intake rate exceeded; retry after the Retry-After seconds | `ErrorResponse` |
