---
title: "Approve an action"
method: POST
path: "/approvals/{id}/approve"
tags: ["Approvals"]
---

# Approve an action

`POST /approvals/{id}/approve`

## Request

- Base URL: `https://api.crevio.co/v1`
- URL: `https://api.crevio.co/v1/approvals/{id}/approve`
- Auth: API key in header `Authorization`

Approves and replays the exact frozen action through the shared executor. A 200 means the approval was resolved; the returned object is `executed` (with `result`) or `failed` (with `error`). The Crevio agent can never approve: its calls are refused with 403 `approval_requires_user`.

## Path parameters

- `id` string, required

## Headers

- `Idempotency-Key` string

## Response `200`

Success

- Approval
  - `object` string, required
  - `id` string, required
  - `approval_id` string, required
  - `status` string, required
  - `kind` string, required
  - `action_type` string, nullable, required
  - `title` string, nullable, required
  - `app_slug` string, nullable, required
  - `tool_name` string, nullable, required
  - `result` object, nullable, required
  - `error` string, nullable, required
  - `reason` string, nullable, required
  - `chat_id` string, nullable, required
  - `created_at` string, required
  - `resolved_at` string, nullable, required

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `403`: Forbidden
- `404`: Resource not found
- `422`: Validation error
- `429`: Rate limit exceeded — 600 requests per minute per credential. Retry after the number of seconds in `Retry-After`.
- `500`: Internal server error

---

[API](https://skmtc.dev/crevio/apis/crevio-api-v1.md) · [All operations](https://skmtc.dev/crevio/apis/crevio-api-v1/llms.txt) · [OpenAPI document](https://skmtc.dev/crevio/apis/crevio-api-v1/revisions/2219f18ad651?raw)
