---
title: "Read bounded automation operations and recent reports"
method: GET
path: "/v1/projects/{project_id}/automation-control"
tags: ["Automation"]
---

# Read bounded automation operations and recent reports

`GET /v1/projects/{project_id}/automation-control`

## Request

- Base URL: `https://api.agentry.sh`
- URL: `https://api.agentry.sh/v1/projects/{project_id}/automation-control`
- Auth: HTTP bearer

Returns contract state, budgets, credentials, live operational exceptions, recent private reports, safe controls, bounds, and truncation metadata at one server timestamp. Attention is not an unread or acknowledgement queue; GitHub owns draft-PR review.

## Path parameters

- `project_id` string, required

## Response `200`

OK

- object
  - `kind` 'automation_control', required
  - `project_id` string, required
  - `as_of` integer, required
  - `consistency` object, required
    - `model` 'eventual_read', required
    - `clock_math_uses_single_as_of` true, required
    - `cross_table_transaction` false, required
  - `control_boundary` object, required
    - `source` 'agentry_control_plane', required
    - `telemetry_evidence_included` false, required
    - `raw_runner_output_included` false, required
    - `runner_attested_control_metadata` string[], required
    - `bounded_human_authored_descriptions` string[], required
    - `secret_columns_included` false, required
    - `free_text_authority` 'none', required
  - `viewer` object, required
    - `user_id` string, required
    - `role` 'owner' | 'member', required
    - `capabilities` object, required
      - `read_control` true, required
      - `update_contract` boolean, required
      - `enable_contract` boolean, required
      - `pause_contract` boolean, required
      - `toggle_automation` boolean, required
      - `manage_credentials` boolean, required
      - `decide_approvals` boolean, required
      - `cancel_runs` boolean, required
  - `contract` object, required
    - `configured` boolean, required
    - `valid` boolean, nullable, required
    - `state` 'not_configured' | 'inconsistent' | 'enabled' | 'paused' | 'disabled', required
    - `schema_version` '2', nullable, required
    - `revision` integer, nullable, required
    - `etag` string, nullable, required
    - `stored_enabled` boolean, required
    - `document_enabled` boolean, required
    - `effective_enabled` boolean, required
    - `paused_at` integer, nullable, required
    - `summary` string, nullable, required
    - `summary_authority` 'description_only', required
    - `created_at` integer, nullable, required
    - `updated_at` integer, nullable, required
  - `summary` object, required
    - `configured_automations` integer, required
    - `effective_enabled_automations` integer, required
    - `active_runs` integer, required
    - `pending_approval_records` integer, required
    - `actionable_pending_approvals` integer, required
    - `ready_trigger_receipts` integer, required
    - `active_case_claims` integer, required
    - `attention_items` integer, required
    - `recent_reports` integer, required
  - `attention` object[], required
    - `id` string, required
    - `kind` 'contract_inconsistent' | 'contract_not_configured' | 'contract_disabled' | 'contract_paused' | 'runner_credential_missing' | 'runner_credential_inactive' | 'new_run_budget_unavailable' | 'live_pr_budget_inconsistent' | 'live_pr_budget_mixed_policy' | 'approval_expired' | 'approval_pending' | 'global_kill_switch_active_run' | 'automation_kill_switch_active_run' | 'runner_credential_binding_invalid' | 'case_revision_or_state_changed' | 'case_claim_not_active' | 'draft_pr_grant_expired' | 'draft_pr_grant_ready' | 'run_deadline_exceeded' | 'approval_record_missing' | 'provider_wait_deadline_exceeded' | 'draft_pr_awaiting_ci_proof' | 'proven_pr_awaiting_deploy' | 'deploy_binding_state_inconsistent' | 'verification_clock_inconsistent' | 'verification_overdue' | 'verification_ready' | 'verification_observation_pending' | 'run_escalated' | 'run_failed', required
    - `severity` 'critical' | 'warning' | 'info', required
    - `href` string, required
    - `automation_id` string
    - `run_id` string
    - `approval_id` string
    - `action` 'draft_pr'
    - `grant_id` string
    - `case_id` string
    - `case_revision` integer
    - `expires_at` integer
    - `deadline_at` integer
    - `proof_recorded_at` integer
    - `verification_ready_at` integer
    - `verification_max_wait_at` integer
    - `secondary_reasons` string[]
    - `message` string, required
    - `next_action` string, required
    - `operator_remediation_required` boolean, required
    - `operation` object, required
      - `operation_id` 'get_automation_contract' | 'list_automation_runs' | 'list_automation_approvals' | 'validate_automation_contract' | 'put_automation_contract' | 'enable_automation_contract' | 'pause_automation_contract' | 'set_automation_enabled' | 'decide_automation_approval' | 'cancel_automation_run' | 'list_project_credentials' | 'create_project_credential' | 'verify_automation_run' | 'record_automation_pr_proof' | 'record_deploy', required
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH', required
      - `href` string
      - `href_template` string
      - `allowed` boolean, required
      - `required_principal` 'human_owner_or_member' | 'human_owner' | 'ci_deploy', required
      - `required_headers` string[], required
      - `required_fields` string[], required
      - `conditional_fields` object
        - `automation_runner` string[]
      - `etag` string, nullable
  - `attention_semantics` object, required
    - `kind` 'operational_exceptions', required
    - `acknowledgement_required` false, required
    - `item_ids_stable` true, required
    - `note` string, required
  - `recent_reports` object[], required
    - `run_id` string, required
    - `automation_id` string, required
    - `kind` 'scheduled_report', required
    - `finished_at` integer, required
    - `href` string, required
  - `automations` object[], required
    - `id` string, required
    - `name` string, required
    - `template_ref` object, nullable, required
      - `id` string, required
      - `version` string, required
      - `bindings_sha256` string, required
    - `template_ref_authority` 'descriptive_provenance', required
    - `configured_enabled` boolean, required
    - `effective_enabled` boolean, required
    - `trigger` union, required
      - object
        - `kind` 'alert', required
        - `alert_id` string, required
        - `cooldown_seconds` integer
        - `min_consecutive_breaches` integer
        - `required_trust` 'server_evaluated'
      - object
        - `kind` 'unhandled_cases', required
        - `max_cases_per_sweep` integer
        - `cooldown_seconds` integer
        - `required_trust` 'any' | 'customer_posthog'
        - `materiality` object
          - `minimum_event_count` integer, required
          - `maximum_last_seen_age_seconds` integer, required
      - object
        - `kind` 'schedule', required
        - `cron` string, required
        - `timezone` string
        - `report_kind` 'funnel_review' | 'reliability_review' | 'custom', required
        - `start_window_seconds` integer
    - `activity` object, required
      - `runs_by_status` object, required
        - `queued` integer, required
        - `claimed` integer, required
        - `running` integer, required
        - `awaiting_approval` integer, required
        - `draft_pr_opened` integer, required
        - `verifying` integer, required
        - `succeeded` integer, required
        - `failed` integer, required
        - `escalated` integer, required
        - `cancelled` integer, required
      - `active_runs` integer, required
      - `ready_trigger_receipts` integer, required
      - `claimed_trigger_receipts` integer, required
      - `active_case_claims` integer, required
      - `pending_approvals` integer, required
      - `blocked_pending_approvals` integer, required
      - `expired_pending_approvals` integer, required
    - `rolling_24h_budgets` object, required
      - `window_start` integer, required
      - `window_end` integer, required
      - `new_run_current_policy` object, required
        - `kind` 'run' | 'draft_pr', required
        - `policy_source` 'current_contract_for_new_runs' | 'current_contract_for_future_run_snapshots' | 'immutable_run_snapshot', required
        - `limit` integer, required
        - `used` integer, required
        - `remaining` integer, required
        - `available` boolean, required
        - `policy_blocked` boolean, required
        - `available_at` integer, nullable, required
        - `inconsistent` true
      - `draft_pr_current_policy_for_future_runs` object, required
        - `kind` 'run' | 'draft_pr', required
        - `policy_source` 'current_contract_for_new_runs' | 'current_contract_for_future_run_snapshots' | 'immutable_run_snapshot', required
        - `limit` integer, required
        - `used` integer, required
        - `remaining` integer, required
        - `available` boolean, required
        - `policy_blocked` boolean, required
        - `available_at` integer, nullable, required
        - `inconsistent` true
      - `draft_pr_live_run_policies` object, required
        - `status` 'inconsistent' | 'no_pr_capable_live_runs' | 'single_policy' | 'mixed_policy', required
        - `can_assume_available` boolean, required
        - `live_run_count` integer, required
        - `invalid_snapshot_count` integer, required
        - `policy_source` 'immutable_run_snapshots', required
        - `query_truncated` boolean, required
        - `capacities` object[], required
          - `kind` 'run' | 'draft_pr', required
          - `policy_source` 'current_contract_for_new_runs' | 'current_contract_for_future_run_snapshots' | 'immutable_run_snapshot', required
          - `limit` integer, required
          - `used` integer, required
          - `remaining` integer, required
          - `available` boolean, required
          - `policy_blocked` boolean, required
          - `available_at` integer, nullable, required
          - `inconsistent` true
      - `per_run_limits` object, required
        - `max_attempts_per_case_revision` integer, required
        - `max_turns` integer, required
        - `max_runtime_seconds` integer, required
        - `max_cost_usd` number, nullable, required
    - `runner_credentials` object, required
      - `status` 'missing' | 'inactive' | 'expiring' | 'healthy', required
      - `total` integer, required
      - `active` integer, required
      - `expiring` integer, required
      - `expired` integer, required
      - `revoked` integer, required
      - `next_expiry_at` integer, nullable, required
      - `last_used_at` integer, nullable, required
    - `latest_run` object, nullable, required
      - `id` string, required
      - `status` 'queued' | 'claimed' | 'running' | 'draft_pr_opened' | 'awaiting_approval' | 'verifying' | 'succeeded' | 'failed' | 'escalated' | 'cancelled', required
      - `trigger_kind` 'alert' | 'unhandled_cases' | 'schedule', required
      - `created_at` integer, required
      - `started_at` integer, nullable, required
      - `updated_at` integer, required
      - `finished_at` integer, nullable, required
      - `deadline_at` integer, required
      - `turns_used` integer, required
      - `cost_usd` number, required
      - `usage_source` 'runner_attested_unverified', required
      - `href` string, required
    - `latest_report` object, nullable, required
      - `run_id` string, required
      - `automation_id` string, required
      - `kind` 'scheduled_report', required
      - `finished_at` integer, required
      - `href` string, required
    - `links` object, required
      - `runs` string, required
      - `toggle` string, required
  - `controls` object, required
    - `read_contract` object, required
      - `operation_id` 'get_automation_contract' | 'list_automation_runs' | 'list_automation_approvals' | 'validate_automation_contract' | 'put_automation_contract' | 'enable_automation_contract' | 'pause_automation_contract' | 'set_automation_enabled' | 'decide_automation_approval' | 'cancel_automation_run' | 'list_project_credentials' | 'create_project_credential' | 'verify_automation_run' | 'record_automation_pr_proof' | 'record_deploy', required
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH', required
      - `href` string
      - `href_template` string
      - `allowed` boolean, required
      - `required_principal` 'human_owner_or_member' | 'human_owner' | 'ci_deploy', required
      - `required_headers` string[], required
      - `required_fields` string[], required
      - `conditional_fields` object
        - `automation_runner` string[]
      - `etag` string, nullable
    - `list_runs` object, required
      - `operation_id` 'get_automation_contract' | 'list_automation_runs' | 'list_automation_approvals' | 'validate_automation_contract' | 'put_automation_contract' | 'enable_automation_contract' | 'pause_automation_contract' | 'set_automation_enabled' | 'decide_automation_approval' | 'cancel_automation_run' | 'list_project_credentials' | 'create_project_credential' | 'verify_automation_run' | 'record_automation_pr_proof' | 'record_deploy', required
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH', required
      - `href` string
      - `href_template` string
      - `allowed` boolean, required
      - `required_principal` 'human_owner_or_member' | 'human_owner' | 'ci_deploy', required
      - `required_headers` string[], required
      - `required_fields` string[], required
      - `conditional_fields` object
        - `automation_runner` string[]
      - `etag` string, nullable
    - `list_approvals` object, required
      - `operation_id` 'get_automation_contract' | 'list_automation_runs' | 'list_automation_approvals' | 'validate_automation_contract' | 'put_automation_contract' | 'enable_automation_contract' | 'pause_automation_contract' | 'set_automation_enabled' | 'decide_automation_approval' | 'cancel_automation_run' | 'list_project_credentials' | 'create_project_credential' | 'verify_automation_run' | 'record_automation_pr_proof' | 'record_deploy', required
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH', required
      - `href` string
      - `href_template` string
      - `allowed` boolean, required
      - `required_principal` 'human_owner_or_member' | 'human_owner' | 'ci_deploy', required
      - `required_headers` string[], required
      - `required_fields` string[], required
      - `conditional_fields` object
        - `automation_runner` string[]
      - `etag` string, nullable
    - `validate_contract` object, required
      - `operation_id` 'get_automation_contract' | 'list_automation_runs' | 'list_automation_approvals' | 'validate_automation_contract' | 'put_automation_contract' | 'enable_automation_contract' | 'pause_automation_contract' | 'set_automation_enabled' | 'decide_automation_approval' | 'cancel_automation_run' | 'list_project_credentials' | 'create_project_credential' | 'verify_automation_run' | 'record_automation_pr_proof' | 'record_deploy', required
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH', required
      - `href` string
      - `href_template` string
      - `allowed` boolean, required
      - `required_principal` 'human_owner_or_member' | 'human_owner' | 'ci_deploy', required
      - `required_headers` string[], required
      - `required_fields` string[], required
      - `conditional_fields` object
        - `automation_runner` string[]
      - `etag` string, nullable
    - `save_contract` object, required
      - `operation_id` 'get_automation_contract' | 'list_automation_runs' | 'list_automation_approvals' | 'validate_automation_contract' | 'put_automation_contract' | 'enable_automation_contract' | 'pause_automation_contract' | 'set_automation_enabled' | 'decide_automation_approval' | 'cancel_automation_run' | 'list_project_credentials' | 'create_project_credential' | 'verify_automation_run' | 'record_automation_pr_proof' | 'record_deploy', required
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH', required
      - `href` string
      - `href_template` string
      - `allowed` boolean, required
      - `required_principal` 'human_owner_or_member' | 'human_owner' | 'ci_deploy', required
      - `required_headers` string[], required
      - `required_fields` string[], required
      - `conditional_fields` object
        - `automation_runner` string[]
      - `etag` string, nullable
    - `enable_contract` object, required
      - `operation_id` 'get_automation_contract' | 'list_automation_runs' | 'list_automation_approvals' | 'validate_automation_contract' | 'put_automation_contract' | 'enable_automation_contract' | 'pause_automation_contract' | 'set_automation_enabled' | 'decide_automation_approval' | 'cancel_automation_run' | 'list_project_credentials' | 'create_project_credential' | 'verify_automation_run' | 'record_automation_pr_proof' | 'record_deploy', required
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH', required
      - `href` string
      - `href_template` string
      - `allowed` boolean, required
      - `required_principal` 'human_owner_or_member' | 'human_owner' | 'ci_deploy', required
      - `required_headers` string[], required
      - `required_fields` string[], required
      - `conditional_fields` object
        - `automation_runner` string[]
      - `etag` string, nullable
    - `pause_contract` object, required
      - `operation_id` 'get_automation_contract' | 'list_automation_runs' | 'list_automation_approvals' | 'validate_automation_contract' | 'put_automation_contract' | 'enable_automation_contract' | 'pause_automation_contract' | 'set_automation_enabled' | 'decide_automation_approval' | 'cancel_automation_run' | 'list_project_credentials' | 'create_project_credential' | 'verify_automation_run' | 'record_automation_pr_proof' | 'record_deploy', required
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH', required
      - `href` string
      - `href_template` string
      - `allowed` boolean, required
      - `required_principal` 'human_owner_or_member' | 'human_owner' | 'ci_deploy', required
      - `required_headers` string[], required
      - `required_fields` string[], required
      - `conditional_fields` object
        - `automation_runner` string[]
      - `etag` string, nullable
    - `toggle_automation` object, required
      - `operation_id` 'get_automation_contract' | 'list_automation_runs' | 'list_automation_approvals' | 'validate_automation_contract' | 'put_automation_contract' | 'enable_automation_contract' | 'pause_automation_contract' | 'set_automation_enabled' | 'decide_automation_approval' | 'cancel_automation_run' | 'list_project_credentials' | 'create_project_credential' | 'verify_automation_run' | 'record_automation_pr_proof' | 'record_deploy', required
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH', required
      - `href` string
      - `href_template` string
      - `allowed` boolean, required
      - `required_principal` 'human_owner_or_member' | 'human_owner' | 'ci_deploy', required
      - `required_headers` string[], required
      - `required_fields` string[], required
      - `conditional_fields` object
        - `automation_runner` string[]
      - `etag` string, nullable
    - `decide_approval` object, required
      - `operation_id` 'get_automation_contract' | 'list_automation_runs' | 'list_automation_approvals' | 'validate_automation_contract' | 'put_automation_contract' | 'enable_automation_contract' | 'pause_automation_contract' | 'set_automation_enabled' | 'decide_automation_approval' | 'cancel_automation_run' | 'list_project_credentials' | 'create_project_credential' | 'verify_automation_run' | 'record_automation_pr_proof' | 'record_deploy', required
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH', required
      - `href` string
      - `href_template` string
      - `allowed` boolean, required
      - `required_principal` 'human_owner_or_member' | 'human_owner' | 'ci_deploy', required
      - `required_headers` string[], required
      - `required_fields` string[], required
      - `conditional_fields` object
        - `automation_runner` string[]
      - `etag` string, nullable
    - `cancel_run` object, required
      - `operation_id` 'get_automation_contract' | 'list_automation_runs' | 'list_automation_approvals' | 'validate_automation_contract' | 'put_automation_contract' | 'enable_automation_contract' | 'pause_automation_contract' | 'set_automation_enabled' | 'decide_automation_approval' | 'cancel_automation_run' | 'list_project_credentials' | 'create_project_credential' | 'verify_automation_run' | 'record_automation_pr_proof' | 'record_deploy', required
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH', required
      - `href` string
      - `href_template` string
      - `allowed` boolean, required
      - `required_principal` 'human_owner_or_member' | 'human_owner' | 'ci_deploy', required
      - `required_headers` string[], required
      - `required_fields` string[], required
      - `conditional_fields` object
        - `automation_runner` string[]
      - `etag` string, nullable
    - `list_credentials` object, required
      - `operation_id` 'list_project_credentials', required
      - `method` 'GET', required
      - `href` string
      - `href_template` string
      - `allowed` boolean, required
      - `required_principal` 'human_owner', required
      - `required_headers` string[], required
      - `required_fields` string[], required
      - `conditional_fields` object
        - `automation_runner` string[]
      - `etag` string, nullable
    - `create_credential` object, required
      - `operation_id` 'create_project_credential', required
      - `method` 'POST', required
      - `href` string
      - `href_template` string
      - `allowed` boolean, required
      - `required_principal` 'human_owner', required
      - `required_headers` string[], required
      - `conditional_fields` object
        - `automation_runner` string[]
      - `etag` string, nullable
  - `bounds` object, required
    - `max_automations` 50, required
    - `max_latest_runs_per_automation` 1, required
    - `max_attention_items` 100, required
    - `max_recent_reports` 100, required
    - `max_live_policy_rows` 500, required
  - `truncation` object, required
    - `attention` object, required
      - `candidate_count` integer, required
      - `candidate_count_exact` boolean, required
      - `returned` integer, required
      - `truncated` boolean, required
      - `source_query_truncated` boolean, required
      - `query_priority_applied_before_limit` true, required
      - `continuation` object, nullable, required
        - `mode` 'restart_each_source_with_keyset_pagination', required
        - `complete_when` string, required
        - `operations` object[], required
          - `operation_id` 'list_automation_runs' | 'list_automation_approvals', required
          - `method` 'GET', required
          - `href` string, required
          - `cursor_response_path` 'pagination.next_cursor', required
          - `follow_up_response_path` 'pagination.follow_up', required
          - `note` string
    - `live_run_policy_rows` object, required
      - `returned` integer, required
      - `truncated` boolean, required
      - `continuation` object, nullable, required
        - `operation_id` 'list_automation_runs' | 'list_automation_approvals', required
        - `method` 'GET', required
        - `href` string, required
        - `cursor_response_path` 'pagination.next_cursor', required
        - `follow_up_response_path` 'pagination.follow_up', required
        - `note` string
    - `recent_reports` object, required
      - `returned` integer, required
      - `truncated` boolean, required
      - `continuation` object, nullable, required
        - `operation_id` 'list_automation_runs' | 'list_automation_approvals', required
        - `method` 'GET', required
        - `href` string, required
        - `cursor_response_path` 'pagination.next_cursor', required
        - `follow_up_response_path` 'pagination.follow_up', required
        - `note` string
  - `next_action` string, 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)
