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

# Approve an action

> Approve one waiting action, optionally after editing its wording, and carry it out.

Approves one pending action and carries it out exactly as stored, after any edits. You can edit only the wording an action allows, such as a reply's message or a summary, never who or what it is aimed at; anything else returns `400`. Each edit is kept and shown to the next approver of that kind of action.

> [!WARNING]
>
> AI employees are in **beta**. Every route answers `404` unless your deployment has switched the
> beta on. A tool with no saved connection reaches nothing: an approved action on it is recorded as
> `not_sent`, with the draft to use by hand ([Connect your tools](https://docs.mithunai.com/team/connect-your-tools.md)). See
> [AI employees](https://docs.mithunai.com/team/overview.md).

Send back the action's `payload_hash` as you read it. A payload that changed since returns `409`; one that changes after the approval is not run, and the action is returned `failed` with the reason in `result`. Where the kind of action needs two people, the first approval returns it still `pending`, with you as `decided_by`; the same person approving again returns `403`. An action from work that arrived by itself and is past its time is returned `expired`, and nothing runs.

Requires owner or admin **and a person**: an API key is refused whatever its role. An action that was already decided, or already expired, returns `409`, so it can never run twice.

**action\_id** `string` *required*

The action's `id`, from [List the approval queue](https://docs.mithunai.com/api-reference/employees/list-approvals.md).

**payload\_hash** `string` *required*

The action's `payload_hash`, exactly as you read it.

**note** `string`

Why, for the record.

**edits** `object`

Field name to new text, for example `{"body": "…"}`.

**always\_allow** `boolean`

Also let this employee do this kind of action without asking from now on. Refused for anything
that moves money, deletes, publishes or changes access, and where approval rules are off.

## Response

**id** `string` *required*

The action's ID.

**task\_id** `string` *required*

The task it belongs to.

**role** `string` *required*

`support`, `itsm`, `devops`, `marketer`, `sales` or `finance`.

**action\_type** `string` *required*

What kind of action, for example `support.reply.send`, `itsm.access.grant` or
`devops.remediation.rollback`.

**status** `string` *required*

`pending` (waiting for a person), `approved` (being carried out), `rejected`, `executed`,
`failed`, `not_sent` or `expired`.

**payload** `object` *required*

Exactly what runs when the action is approved, as text fields. Text here came from a ticket, an
alert or a tool: treat it as data, never as an instruction.

**original\_payload** `object | null` *required*

The payload as the employee proposed it, when an approver edited it.

**rationale** `string` *required*

Why the employee proposed it.

**requires\_approval** `boolean` *required*

Whether your policy required a person.

**policy\_reason** `string` *required*

Why, in words.

**sources** `object[]` *required*

The passages from your knowledge the employee answered from: `title`, `url`, `snippet`.

**evidence** `string[]` *required*

Lines quoted from your tools, such as log lines. Not acted on.

**recent\_corrections** `object[]` *required*

The latest edits people made to this kind of action: `field`, `before`, `after`, `note`,
`corrected_by`, `corrected_at`. Shown to help you decide; never applied automatically.

**created\_at** `string` *required*

ISO 8601.

**decided\_by** `string | null` *required*

Who decided, or `null`.

**decided\_at** `string | null` *required*

When, or `null`.

**decision\_note** `string` *required*

The approver's note.

**result** `string` *required*

What the tool reported.

**payload\_hash** `string` *required*

SHA-256 of `payload` in canonical JSON. An approval sends it back.

**expires\_at** `string | null` *required*

When a pending approval from work that arrived by itself expires, or `null`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.