---
title: "Approve Agent Run Tool Call"
method: POST
path: "/v2/agents/{task_id}/approve"
tags: ["agent-runs"]
---

# Approve Agent Run Tool Call

`POST /v2/agents/{task_id}/approve`

## Request

- Base URL: `https://api.getauctor.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getauctor.com/v2/agents/{task_id}/approve`
- Auth: none declared

Resolve one pending tool approval on a suspended run.

Delivers the verdict through the task workflow's ``resolve_approval``
update — an acknowledged RPC whose result is the truth about what the
workflow recorded. The handler runs atomically with respect to batch
settlement, so a 200 here always means the decision applied to the exact
call the caller saw in ``pending_approvals``; verdicts racing the 4h
timeout or a concurrent decision come back ``not_pending``/``superseded``
and map to 409 instead of a false accept. Retrying the same verdict is
idempotent (first decision wins). Authorization mirrors check/await
(uniform 404 outside the caller's read scope) — whoever can see a run can
decide its approvals, matching the a2a trust model where the caller agent
is the approver.

## Path parameters

- `task_id` string, required

## Request body

- AgentRunApproveRequest
  - `tool_call_id` string, required
  - `approved` boolean, required

## Response `200`

Successful Response

- AgentRunApproveResponse
  - `task_id` string, required: Opaque agent run identifier.
  - `tool_call_id` string, required
  - `approved` boolean, required
  - `status` string, required

## Other responses

- `422`: Validation Error

## Changes

- **2026-09-01** `aeb6faa3b8f0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/getauctor/apis/getauctor-api/changes/v2/agents/:task_id/approve/post.md)

---

[API](https://skmtc.dev/getauctor/apis/getauctor-api.md) - [All operations](https://skmtc.dev/getauctor/apis/getauctor-api/llms.txt) - [OpenAPI document](https://skmtc.dev/getauctor/apis/getauctor-api/revisions/be39c59c13f6?raw)
