---
title: "GET /v1/ai/workspaces/:wsId/voice-status"
method: GET
path: "/v1/ai/workspaces/:wsId/voice-status"
tags: ["AI Knowledge"]
---

# GET /v1/ai/workspaces/:wsId/voice-status

`GET /v1/ai/workspaces/:wsId/voice-status`

## Request

- Base URL: `https://api.quillhub.ai`
- URL: `https://api.quillhub.ai/v1/ai/workspaces/:wsId/voice-status`
- Auth: HTTP bearer

## Path parameters

- `wsId` integer, required

## Response `200`

Voice recognition queue state.

- object
  - `pending` number, required: Recordings the voice-recognition worker will actually claim next, counted with the worker's own predicate (entity_extractor/voice_queue.py CLAIM_SQL via the voice_queue_pending_count() RPC): not deleted, has audio, has an `utterances` ARRAY in assembly_raw_result (i.e. diarization exists), and voice_status is NULL / 'pending' / 'failed' with retries left AND past the retry cooldown — plus the ones being processed right now (voice_status='processing'). NOT a count of rows literally stamped voice_status='pending'.
  - `failed` number, required: Recordings with the literal voice_status='failed' (including ones that still have retries left).
  - `done` number, required: Recordings with the literal voice_status='done'.
  - `recent_errors` object[], required
    - `transcript_id` number, required
    - `title` string, nullable, required
    - `error` string, nullable, required
    - `attempts` number, required
    - `updated_at` string, nullable, required

## Other responses

- `401`: Unauthenticated.
- `403`: Forbidden.

---

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