---
title: "List approvals"
method: GET
path: "/v1/projects/{project_id}/approvals"
tags: ["approvals"]
---

# List approvals

`GET /v1/projects/{project_id}/approvals`

## Request

- Base URL: `https://api.connic.co`
- URL: `https://api.connic.co/v1/projects/{project_id}/approvals`
- Auth: HTTP bearer

List tool-call approval requests in an environment, pending requests first, then newest first.

Pending requests whose run has already ended are left out.

Required permission: `approvals.view`.

## Path parameters

- `project_id` string, uuid, required

## Query parameters

- `environment_id` string, uuid, required: Environment to list approval requests from.
- `run_id` string, uuid, nullable: Only requests from this agent run.
- `status` 'pending' | 'approved' | 'rejected' | 'timeout', nullable: Only requests with this status. `timeout` covers requests that expired or whose run ended first.
- `agent_name` string, nullable: Only requests from this agent.
- `limit` integer: Maximum number of requests to return.
- `offset` integer: Number of requests to skip.

## Response `200`

Successful Response

- PublicApprovalListResponse
  - `approvals` ApprovalResponse[], required: Approval requests on this page, pending ones first.
    - `id` string, uuid, required
    - `run_id` string, uuid, required: Run that is paused until the request is decided.
    - `environment_id` string, uuid, required: Environment of the run.
    - `agent_name` string, required: Agent that made the tool call.
    - `tool_name` string, required: Tool the agent wants to call.
    - `tool_params` object, nullable: Arguments of the pending tool call.
    - `message` string, nullable: Message for reviewers from the agent's approval settings.
    - `response_label` string, nullable: Label of the text a reviewer must provide when approving. Set for human input requests; null for plain approvals.
    - `response_sensitive` boolean: Whether the reviewer's response is redacted from recorded run data.
    - `timeout` integer, required: Seconds the request waits for a decision before it times out (30 to 604800).
    - `on_rejection` string: What happens on rejection or timeout: `fail` ends the run, `continue` resumes it and tells the agent the call was not approved.
    - `status` 'pending' | 'approved' | 'rejected' | 'timeout', required: `pending` until decided. `timeout` when no decision arrived in time or the run ended first.
    - `created_at` string, date-time, required
    - `resolved_at` string, date-time, nullable: When the request was resolved. null while pending.
    - `resolved_by_id` string, nullable: ID of the user who decided, or a system value such as `system` for automatic resolutions. null while pending.
    - `resolved_by` string, nullable: Email of the user who decided, or a system value for automatic resolutions. null while pending.
    - `reason` string, nullable: Note given with the decision, or why the request was closed automatically. null when none.
  - `total` integer, required: Approval requests matching the filters across all pages.

## Other responses

- `401`: Missing or invalid API key.
- `403`: The API key lacks the required permission or access to the environment.
- `422`: Validation Error
- `429`: Rate limit exceeded.

---

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