---
title: "Respond To Permission Requests Batch"
method: POST
path: "/api/permission-response/batch"
tags: ["Agent Chat"]
---

# Respond To Permission Requests Batch

`POST /api/permission-response/batch`

Resolve a whole approval SET in one round trip.

A turn that raises several approvals used to cost the client N sequential
round trips, each racing the others' expiry windows. This resolves them
together -- but ONLY as a transport convenience: every decision is
authorized individually through `_resolve_permission_response`, the same
function the single endpoint uses, so a set cannot be used to answer a
request the caller could not have answered on its own.

One bad item never fails the batch: each result reports its own outcome, so
a client can show "2 sent, 1 already expired" instead of retrying
everything.

## Query parameters

- `user_id` string
- `org_id` string

## Request body

- PermissionResponseBatchRequest — Resolve a whole approval set in one round trip. `thread_id` is per-batch, not per-decision, because a set belongs to one turn in one thread -- and because authorization is proven against the thread the CALLER named, exactly once per item, rather than against a thread each item claims for itself.
  - `thread_id` string, nullable
  - `decisions` PermissionDecision[]
    - `request_id` string, required
    - `approved` boolean, required
    - `message` string, nullable
    - `updated_input` object, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-17** `a7b2a47b4032` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/every/apis/every-api/changes/api/permission-response/batch/post.md)

---

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