# Tasks & messages

Source: https://docs.elnora.ai/docs/api/reference/tasks
Last modified: 2026-09-08T22:34:42-06:00

> Tasks & messages endpoints of the Elnora REST API.

Base URL `https://platform.elnora.ai/api/v1`. Authenticate every request with the `X-API-Key` header — see [Authentication](https://docs.elnora.ai/docs/get-started/authentication).

## `GET` /tasks

List all user's tasks across projects.

```bash
curl https://platform.elnora.ai/api/v1/tasks \
  -H "X-API-Key: $ELNORA_API_KEY"
```

**Parameters**

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `Page` | query | int32 | no |
| `PageSize` | query | int32 | no |
| `SortBy` | query | string | no |
| `SortDirection` | query | string | no |
| `status` | query | string | no |

**Responses**: `200` · `400`

## `POST` /tasks

Create a new task.

```bash
curl -X POST https://platform.elnora.ai/api/v1/tasks \
  -H "X-API-Key: $ELNORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ ... }'
```

**Request body**

| Field | Type | Required |
| --- | --- | --- |
| `title` | string | no |
| `initialMessage` | string | no |
| `contextFileIds` | uuid[] | no |
| `referencedFileIds` | uuid[] | no |

**Responses**: `201` · `400`

## `GET` /tasks/&#123;id&#125;

Get task with messages.

```bash
curl https://platform.elnora.ai/api/v1/tasks/{id} \
  -H "X-API-Key: $ELNORA_API_KEY"
```

**Parameters**

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `id` | path | uuid | yes |

**Responses**: `200`

## `PUT` /tasks/&#123;id&#125;

Update task (title, status).

```bash
curl -X PUT https://platform.elnora.ai/api/v1/tasks/{id} \
  -H "X-API-Key: $ELNORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ ... }'
```

**Parameters**

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `id` | path | uuid | yes |

**Request body**

| Field | Type | Required |
| --- | --- | --- |
| `title` | string | no |
| `status` | string | no |

**Responses**: `200`

## `DELETE` /tasks/&#123;id&#125;

Archive a task.

```bash
curl -X DELETE https://platform.elnora.ai/api/v1/tasks/{id} \
  -H "X-API-Key: $ELNORA_API_KEY"
```

**Parameters**

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `id` | path | uuid | yes |

**Responses**: `204`

## `GET` /tasks/&#123;id&#125;/messages

Get messages for a task with cursor pagination.

```bash
curl https://platform.elnora.ai/api/v1/tasks/{id}/messages \
  -H "X-API-Key: $ELNORA_API_KEY"
```

**Parameters**

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `id` | path | uuid | yes |
| `Cursor` | query | string | no |
| `Limit` | query | int32 | no |

**Responses**: `200`

## `POST` /tasks/&#123;id&#125;/messages

Send a message in a task.

```bash
curl -X POST https://platform.elnora.ai/api/v1/tasks/{id}/messages \
  -H "X-API-Key: $ELNORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "content": "..." }'
```

**Parameters**

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `id` | path | uuid | yes |

**Request body**

| Field | Type | Required |
| --- | --- | --- |
| `content` | string | yes |
| `attachmentIds` | uuid[] | no |
| `contextFileIds` | uuid[] | no |
| `referencedFileIds` | uuid[] | no |
| `openFileReference` | OpenFileReference | no |

**Responses**: `201`

## `POST` /tasks/&#123;id&#125;/unarchive

Unarchive a task — flips status back to `Active` so it reappears in default listings.

```bash
curl -X POST https://platform.elnora.ai/api/v1/tasks/{id}/unarchive \
  -H "X-API-Key: $ELNORA_API_KEY" \
  -H "Content-Type: application/json"
```

**Parameters**

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `id` | path | uuid | yes |

**Responses**: `204`

## `GET` /tasks/&#123;taskId&#125;/attachments

List a task's attachments (agent-generated deliverables + chat attachments).

```bash
curl https://platform.elnora.ai/api/v1/tasks/{taskId}/attachments \
  -H "X-API-Key: $ELNORA_API_KEY"
```

**Parameters**

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `taskId` | path | uuid | yes |

**Responses**: `200`

## `DELETE` /tasks/&#123;taskId&#125;/attachments/&#123;attachmentId&#125;

Delete a task attachment (removes the S3 object + DB row).

```bash
curl -X DELETE https://platform.elnora.ai/api/v1/tasks/{taskId}/attachments/{attachmentId} \
  -H "X-API-Key: $ELNORA_API_KEY"
```

**Parameters**

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `taskId` | path | uuid | yes |
| `attachmentId` | path | uuid | yes |

**Responses**: `204` · `404`

## `GET` /tasks/&#123;taskId&#125;/attachments/&#123;attachmentId&#125;/content

Get a presigned download URL for a task attachment.

```bash
curl https://platform.elnora.ai/api/v1/tasks/{taskId}/attachments/{attachmentId}/content \
  -H "X-API-Key: $ELNORA_API_KEY"
```

**Parameters**

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `taskId` | path | uuid | yes |
| `attachmentId` | path | uuid | yes |

**Responses**: `200` · `404`
