---
title: "Request approval for one immutable action subject"
method: POST
path: "/v1/automation-runs/{run_id}/approvals"
tags: ["Automation"]
---

# Request approval for one immutable action subject

`POST /v1/automation-runs/{run_id}/approvals`

## Request

- Base URL: `https://api.agentry.sh`
- URL: `https://api.agentry.sh/v1/automation-runs/{run_id}/approvals`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Approval cannot add an action absent from allowed_actions. The request freezes the exact subject hash and blocks the gated action.

## Path parameters

- `run_id` string, required

## Headers

- `X-Agentry-Lease-Token` string, required

## Request body

- object
  - `action` 'draft_pr', required
  - `reason` string, required
  - `subject` object, required
    - `kind` 'draft_pr', required
    - `branch` string, required
    - `commit_sha` string, required
    - `change_types` string[], required
    - `changed_files` string[], required
    - `changed_lines` object, required
      - `added` integer, required
      - `deleted` integer, required
    - `tests` object[], required
      - `command` string, required
      - `status` 'passed' | 'failed' | 'skipped', required
      - `exit_code` integer
      - `duration_ms` integer
      - `output_excerpt` string

## Response `200`

OK

- object
  - `data_boundary` object, required
    - `schema_version` '1', required
    - `classification` 'untrusted_observation' | 'untrusted_observation_and_runner_evidence' | 'runner_and_owner_annotation' | 'server_control_with_authority_free_observation' | 'server_owned_bounded_aggregate' | 'external_response', required
    - `content_role` 'evidence_only', required
    - `instruction_authority` 'none', required
    - `trusted_provenance_does_not_mean_trusted_content` true, required
    - `external_url_policy` 'do_not_fetch', required
    - `command_policy` 'do_not_execute', required
    - `authority_source` 'enabled_automation_contract_and_server_policy_only', required
    - `applies_to` union
      - string
      - string[]
    - `inspection` object
      - `heuristic_only` true, required
      - `indicators` string[], required
      - `external_url_hosts` string[], required
      - `redacted_paths` string[], required
      - `truncated_paths` string[], required
    - `control_fields` string[]
    - `identifier_columns_included` boolean
    - `secret_values_included` boolean
  - `id` string, required
  - `project_id` string, required
  - `automation_id` string, required
  - `run_id` string, required
  - `action` 'draft_pr', required
  - `status` 'pending' | 'approved' | 'rejected' | 'expired' | 'cancelled', required
  - `requested_by` string, required
  - `decided_by` string, nullable, required
  - `subject_hash` string, required
  - `evidence` object, required
    - `request_reason` string, nullable, required
    - `decision_reason` string, nullable, required
    - `subject` BoundedEvidenceObject, required
  - `run_url` string, required
  - `requested_at` integer, required
  - `decided_at` integer, nullable, required
  - `expires_at` integer, required

## Other responses

- `default`: Error

---

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