---
title: "Approve several review-queue items in one call"
method: POST
path: "/api/review-queue/bulk-approve"
tags: ["Review queue"]
---

# Approve several review-queue items in one call

`POST /api/review-queue/bulk-approve`

## Request

- Base URL: `https://api.setluca.com`
- URL: `https://api.setluca.com/api/review-queue/bulk-approve`
- Auth: one of:
  - API key in cookie `luca.session_token`
  - API key in header `x-api-key`
  - HTTP bearer

Approves each draft as `POST /api/review-queue/{id}/approve` does, with no edit, and returns one outcome per id. A draft already handled, or not in your queue, is skipped; the rest still run.

**API key scopes:** `review_queue:write`. You also need an `Idempotency-Key` header.

## Headers

- `Luca-API-Version` '1'

## Request body

- ReviewBulk
  - `ids` string[], required

## Response `200`

ok

- ReviewBulkResponse
  - `results` object[], required
    - `id` string, uuid, required
    - `outcome` 'approved' | 'rejected' | 'skipped' | 'failed', required
    - `reason` 'review_item_not_found' | 'review_media_not_found' | 'turn_not_found' | 'lead_not_found' | 'objection_variant_not_found' | 'objection_type_not_found' | 'already_resolved' | 'review_item_not_pending' | 'review_item_not_rejected' | 'draft_sending' | 'turn_finished' | 'auto_send_not_eligible' | 'booking_communication_not_restorable' | 'invalid_outbound_content' | 'no_source_turn' | 'turn_not_latest' | 'turn_not_restartable' | 'drafting_retry_limit' | 'cancelled' | 'retry_exhausted' | 'retry_active' | 'original_missing' | 'not_retryable'

## Other responses

- `400`: bad request
- `401`: unauthorized
- `429`: rate limited
- `500`: internal error
- `503`: service unavailable

---

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