---
title: "List review-queue items"
method: GET
path: "/api/review-queue"
tags: ["Review queue"]
---

# List review-queue items

`GET /api/review-queue`

## Request

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

**API key scopes:** `review_queue:read`.

## Query parameters

- `limit` integer
- `cursor` string
- `status` 'pending' | 'approved' | 'rejected' | 'sent' | 'superseded' | 'stale'
- `category` 'faq' | 'qualification' | 'objection' | 'scheduling' | 'pricing-adjacent' | 'other'
- `leadId` string, uuid
- `order` 'priority' | 'fifo'

## Headers

- `Luca-API-Version` '1'

## Response `200`

ok

- ReviewListResponse
  - `items` object[], required
    - `id` string, uuid, required
    - `conversationId` string, uuid, required
    - `origin` 'ai_dm_reply' | 'manual_reply' | 'booking_notice' | 'other'
    - `sourceMessageId` string, uuid, nullable
    - `sourceTurnId` string, uuid, nullable
    - `sourceCommentId` string, nullable
    - `restartsLeft` integer, nullable, required
    - `channelAccountId` string, uuid, required
    - `draftBody` string, required
    - `draftParts` string[], nullable
    - `draftContent` object, nullable
      - `version` 1, required
      - `parts` union[], required
        - union
          - object
            - `id` string, uuid, required
            - `type` 'text', required
            - `text` string, required
            - `textGroupId` string, uuid
          - object
            - `id` string, uuid, required
            - `type` 'media', required
            - `uploadId` string, uuid, required
            - `mediaKind` 'image' | 'video' | 'audio' | 'voice' | 'document', required
            - `fileName` string
            - `caption` string
            - `altText` string
          - object
            - `id` string, uuid, required
            - `type` 'interactive', required
            - `interactionKind` 'buttons' | 'list' | 'quick_replies' | 'inline_buttons', required
            - `prompt` string, required
            - `options` object[], required
              - …
            - `expiresAt` string, date-time
          - object
            - `id` string, uuid, required
            - `type` 'template', required
            - `templateId` string, required
            - `name` string, required
            - `language` string, required
            - `versionHash` string, required
            - `parameters` union[], required
              - …
            - `renderedPreview` string, required
            - `providerMetadata` object
    - `qualification` unknown, required
    - `confidence` number, required
    - `voiceMatchScore` number, required
    - `criticIssues` unknown, required
    - `status` 'pending' | 'approved' | 'rejected' | 'sent' | 'superseded' | 'stale', required
    - `priority` 'urgent' | 'normal'
    - `signals` string[], nullable
    - `category` string, required
    - `isHotLead` boolean, required
    - `isDemo` boolean
    - `whatsappFreeformOpen` boolean, nullable, required
    - `createdAt` string, required
    - `leadId` string, uuid, required
    - `leadDisplayName` string, nullable, required
    - `leadPaused` boolean
    - `leadPausedUntil` string, nullable
    - `leadChannel` 'telegram' | 'instagram' | 'messenger' | 'whatsapp', required
    - `safetyReasons` string[]
    - `mediaContext` string, nullable
    - `safetyFindings` unknown[]
      - unknown
    - `media` object[]
      - `id` string, required
      - `mediaType` 'audio' | 'image' | 'file', required
      - `url` string, required
      - `status` 'pending' | 'completed' | 'failed' | 'skipped' | 'blocked' | 'cancelled', required
      - `safetyStatus` 'safe' | 'needs_review' | 'blocked', required
      - `transcript` string, nullable
      - `processingReason` string, nullable
      - `retry` object, nullable
        - `eligible` boolean, required
        - `active` boolean, required
        - `attemptsUsed` integer, required
        - `attemptsRemaining` integer, required
        - `unavailableReason` 'retry_active' | 'retry_exhausted' | 'original_missing' | 'cancelled' | 'not_retryable' | 'null', nullable, required
    - `objectionVariants` object[], nullable
      - `label` string, required
      - `body` string, required
      - `rationale` string, required
  - `nextCursor` string, nullable, required
  - `asOf` string, date-time

## 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)
