---
title: "List approval requests"
description: "What runs are waiting for a person to allow, newest first."
url: "https://openemail.uk/docs/api/tasks/approvals"
area: "API"
category: "Mailbox"
---

# List approval requests

What runs are waiting for a person to allow, newest first.

`GET /task-approvals`

**Also documents:** `GET /task-approvals/{id}`

## GET /task-approvals

What runs are waiting for a person to allow, newest first.

## Example

Needs `tasks:read`, `threads:read` and `emails:read`. Left alone, the list holds the requests still waiting. `status` asks for another state, and `taskId` or `runId` narrows it.

**curl**

```
curl "$OE/task-approvals" -H "$AUTH"
curl "$OE/task-approvals/apr_2f8c1a6e9b3d47c05e1a8f2c" -H "$AUTH"
```

**Response**

```
{
  "object": "list",
  "data": [{
      "object": "task_approval",
      "id": "apr_2f8c1a6e9b3d47c05e1a8f2c",
      "runId": "run_9d3a7e1c5b2f48a60c7e1d3b",
      "taskId": "tsk_4b9e2c7a1f3d86e05a9c2b7d",
      "taskName": "Morning summary",
      "tool": "replyToEmail",
      "summary": "Reply to ann@example.com: Re: Invoice 1042",
      "args": {
        "threadId": "thr_7c1e4a90",
        "to": ["ann@example.com"],
        "subject": "Re: Invoice 1042",
        "body": "Hi Ann, the invoice went out again this morning."
      },
      "status": "pending",
      "createdAt": "2026-10-13T07:00:41.220Z",
      "expiresAt": "2026-10-20T07:00:41.220Z",
      "decidedAt": null
    }],
  "hasMore": false,
  "nextCursor": null
}
```

> `status` is `pending`, `approved`, `denied`, `expired` or `cancelled`.

> `args` is exactly what the tool would be called with. Read it before you approve.

## Reference

- [`GET /task-approvals`](https://openemail.uk/docs/api/reference/tasks#get-task-approvals): full reference
- [`GET /task-approvals/{id}`](https://openemail.uk/docs/api/reference/tasks#get-task-approvals-id): full reference
