---
title: "Retrieve a run"
description: "One run with its transcript and every approval request it made."
url: "https://openemail.uk/docs/api/tasks/run-detail"
area: "API"
category: "Mailbox"
---

# Retrieve a run

One run with its transcript and every approval request it made.

`GET /task-runs/{id}`

## GET /task-runs/{id}

One run with its transcript and every approval request it made.

## Example

Needs `tasks:read`, `threads:read` and `emails:read`. It also needs the read scopes of every toolkit the run used.

**curl**

```
curl "$OE/task-runs/run_9d3a7e1c5b2f48a60c7e1d3b" -H "$AUTH"
```

**Response**

```
{
  "object": "task_run",
  "id": "run_9d3a7e1c5b2f48a60c7e1d3b",
  "taskId": "tsk_4b9e2c7a1f3d86e05a9c2b7d",
  "taskName": "Morning summary",
  "trigger": "schedule",
  "threadId": null,
  "status": "waiting",
  "instruction": "Go through the mail that arrived since yesterday. Tell me which conversations need a reply from me, most urgent first, and draft a short reply for each.",
  "autonomy": "organize",
  "model": "standard",
  "steps": 4,
  "toolCalls": 6,
  "actions": 1,
  "result": null,
  "error": null,
  "errorDetail": null,
  "pendingApprovals": 1,
  "createdAt": "2026-10-13T07:00:04.112Z",
  "startedAt": "2026-10-13T07:00:05.870Z",
  "finishedAt": null,
  "transcript": [
    { "role": "user", "text": "Go through the mail that arrived since yesterday. …", "at": "2026-10-13T07:00:05.870Z", "calls": [] },
    {
      "role": "assistant",
      "text": "",
      "at": "2026-10-13T07:00:09.402Z",
      "calls": [
        { "id": "call_1", "tool": "listThreads", "args": { "folder": "inbox", "maxResults": 20 }, "done": true, "result": "…" }
      ]
    }
  ],
  "approvals": [{
      "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
    }]
}
```

> The first entry of `transcript` is the instruction, with `role` `user`. Every entry after it is a step the run took, with `role` `assistant`.

> A call with `done` false has not run yet, most often because it waits for approval.

> `error` says why a failed run failed: `ai_limit` when the workspace ran out of AI actions for the day, `ai_unavailable` when AI is not set up, and `attempts` or `no_progress` when it kept failing or stood still. A run that used all its steps is `done`, and its report says what is left.

> A run that does not exist, or is older than 90 days, answers 404 `task_run_not_found`.

## Reference

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