---
title: "List voice ids for the OpenAI-compatible endpoint"
method: GET
path: "/api/v1/audio/voices"
tags: ["Public API v1"]
---

# List voice ids for the OpenAI-compatible endpoint

`GET /api/v1/audio/voices`

The companion to POST /v1/audio/speech. OpenAI has no such endpoint — its six voice names are a constant — but a VieNeu voice id is not guessable, so the OpenAI-compatible clients that support a custom base URL look for this route to populate their voice picker. Returns a bare `{ voices: [...] }` list of ids, which is the shape those clients expect. GET /v1/voices is the richer version (names, gender, region, your own cloned voices).

## Query parameters

- `engine` 'v3' | 'v4'

## Response `200`

Bare voice ids, in the shape OpenAI-compatible clients expect.

- PublicOpenAiVoiceListResponseDto
  - `voices` string[], required — Bare voice ids, the shape OpenAI-compatible clients expect.

## Other responses

- `400` — `engine` is not a known engine.
- `401` — API key missing, malformed, or revoked.
- `429` — Rate limit or token quota exceeded. When the limit came from the application the response carries `Retry-After` (seconds) and the `X-RateLimit-*` headers and is counted against your API key; a 429 with none of those headers came from the edge proxy and is counted against your source address, shared with every other key calling from it. Back off on either.

---

[API](https://skmtc.dev/vieneu/apis/vieneu-api.md) · [All operations](https://skmtc.dev/vieneu/apis/vieneu-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/vieneu/vieneu-api/revisions/11c8166a6c4d/schema)
