---
title: "List recurring approval groups"
method: GET
path: "/v1/projects/{project_id}/approvals/recurrences"
tags: ["Approvals"]
---

# List recurring approval groups

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

## Request

- Base URL: `https://api.naturali.ai`
- URL: `https://api.naturali.ai/v1/projects/{project_id}/approvals/recurrences`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.naturali.ai/authorize`, token URL `https://api.naturali.ai/token`, scopes: `mcp:access`)

Read-only rollup answering "what keeps coming back?" — groups items by `dedup_key` and returns those recurring at least `min_count` times, most-recurrent first. Each group carries the ordered item chain (via `previous_item_id`) and the resolution reasons in order, so a human can read recurring rejections side by side and graduate the pattern into a guardrail `deny`. Exact-key grouping only; no cluster state is stored.

## Query parameters

- `status` string[]
- `min_count` integer
- `limit` integer
- `offset` integer

## Response `200`

List of recurrence groups

- object
  - `data` ApprovalRecurrenceGroup[], required
    - `dedup_key` string: The shared dedup key that defines the group
    - `agent_id` string, nullable: Proposing agent (shared across the group)
    - `tool_id` string, nullable: Proposed tool (shared across the group)
    - `count` integer: Number of items in the group
    - `chain` object[]: The items oldest → newest (the `previous_item_id` chain)
      - `id` string
      - `status` 'pending' | 'approved' | 'rejected' | 'expired'
      - `resolution_reason` string, nullable
      - `created_at` string, date-time
    - `reasons` string[]: The chain's resolution reasons in order (empty entries omitted)
  - `total` integer, required
  - `limit` integer, required
  - `offset` integer, required

## Other responses

- `400`: Invalid `status` filter value
- `401`: Unauthorized
- `403`: Forbidden
- `500`: Internal server error

---

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