Skip to content
Lumean API

Descriptions are in English

The section interface is translated into your language, but descriptions of operations, schemas and errors exist only in Russian and English — the English version is shown here.
GET/voices/library

Voice Library

Your personal library — everything you can narrate with right now: your own finished voices plus the ones you added from the public catalogue.

Spec fixes · 1

  • Pagination does not live in data.meta

    Four per_page descriptions promise pagination metadata in data.meta. No public API response contains that key: a page arrives flat — data.items[] plus data.current_page, data.last_page, data.per_page, data.total. Code reading data.meta.total gets undefined.

This is the practical list for picking a voice_id: unlike GET /voices, it never contains unfinished or rejected voices. Each entry has your local nickname (nickname) and an availability flag, filterable through available.

Required key permission: voices.read.

On this page(3)

Parameters

The inputs live inside the request line: fill in a value and you get a ready URL. Below are the type, whether it is required and the allowed values of every parameter.

GEThttps://api.lumean.app/api/public/voices/library
  • booleanin queryoptional

    Only voices usable for generation right now (true), or only unusable ones (false).

  • stringin queryoptional

    Language filter, ISO-639-1 (ru, en, de, …).

  • stringin queryoptional

    Sort field. Defaults to added_at.

    Allowed values
  • stringin queryoptional

    Sort direction.

    Allowed values
  • integerin queryoptional

    How many records to return per page. Pagination metadata sits next to items: current_page, last_page, per_page, total.

Possible responses

200

Success. The payload is in data.

Body example
{
  "success": true,
  "message": "Success",
  "data": {
    "items": [
      {
        "id": 12,
        "voice_id": "k3nH9vRt2Lw7ZpXb",
        "nickname": null,
        "added_at": "2026-06-05T10:00:00+00:00",
        "available": true,
        "unavailable_reason": null,
        "origin": "own",
        "voice": {
          "id": "k3nH9vRt2Lw7ZpXb",
          "display_name": "Ava Narrator (EN)",
          "description": "Warm, measured narration voice cloned from a 45-second studio reference — ideal for long-form audiobook and e-learning narration.",
          "gender": "female",
          "accent": "us",
          "default_language_code": "en",
          "voice_status": "ready",
          "publication_status": "public",
          "allow_usage_in_orders": true,
          "preview_generated_at": "2026-06-02T09:15:00+00:00",
          "created_at": "2026-06-01T10:00:00+00:00",
          "updated_at": "2026-06-02T09:15:00+00:00",
          "tags": [
            {
              "id": 8,
              "code": "narration",
              "name": "Narration",
              "description": null,
              "color": null,
              "sort_order": 80
            },
            {
              "id": 4,
              "code": "calm",
              "name": "Calm",
              "description": null,
              "color": null,
              "sort_order": 40
            }
          ],
          "languages": [
            {
              "id": 1,
              "language_code": "en",
              "status": "ready",
              "reference_duration_ms": 47000,
              "model_version": 1,
              "failure_reason": null,
              "clone_started_at": "2026-06-01T10:05:00+00:00",
              "clone_completed_at": "2026-06-01T10:22:00+00:00",
              "updated_at": "2026-06-01T10:22:00+00:00"
            }
          ],
          "preview_urls": {
            "en": "https://s3.lumean.app/lumean/storage/lumvoice/voices/k3nH9vRt2Lw7ZpXb/previews/en.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAEXAMPLE1234567%2F20260602%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260602T091500Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=3f9c2b0a1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a"
          }
        }
      },
      {
        "id": 13,
        "voice_id": "Xh7Nc2Rt9BqZm4Wv",
        "nickname": "Ad voice backup",
        "added_at": "2026-05-25T14:00:00+00:00",
        "available": false,
        "unavailable_reason": "admin_force_removed",
        "origin": "library",
        "voice": {
          "id": "Xh7Nc2Rt9BqZm4Wv",
          "display_name": "Owen Commercial (EN)",
          "description": "Confident male voice tuned for commercial and advertisement reads.",
          "gender": "male",
          "accent": "uk",
          "default_language_code": "en",
          "voice_status": "ready",
          "publication_status": "rejected",
          "allow_usage_in_orders": false,
          "preview_generated_at": "2026-05-20T12:00:00+00:00",
          "created_at": "2026-05-18T09:00:00+00:00",
          "updated_at": "2026-07-10T11:00:00+00:00",
          "tags": [
            {
              "id": 5,
              "code": "energetic",
              "name": "Energetic",
              "description": null,
              "color": null,
              "sort_order": 50
            }
          ],
          "languages": [
            {
              "id": 3,
              "language_code": "en",
              "status": "ready",
              "reference_duration_ms": 51000,
              "model_version": 1,
              "failure_reason": null,
              "clone_started_at": "2026-05-18T09:05:00+00:00",
              "clone_completed_at": "2026-05-18T09:25:00+00:00",
              "updated_at": "2026-05-18T09:25:00+00:00"
            }
          ],
          "preview_urls": {
            "en": "https://s3.lumean.app/lumean/storage/lumvoice/voices/Xh7Nc2Rt9BqZm4Wv/previews/en.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAEXAMPLE1234567%2F20260520%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260520T120000Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=7a1c9e3f5b2d4a86c0f7e9d1b3a5c8e2f4b6d0a2c4e6f8b1d3a5c7e9f0b2d4a6"
          }
        }
      }
    ],
    "current_page": 1,
    "last_page": 1,
    "per_page": 20,
    "total": 2
  }
}
Response fields
successrequired

Success flag. Branch on the HTTP status code instead: any 2xx response carries true here, while an error comes back in a different shape that need not contain this field at all.

boolean
messagerequired

A human-readable note in the account language. Fine to show to a user; do not parse it — the wording changes without notice and is not an error code.

string
datarequired

Voices you have added to your personal library.

UserLibraryListUserLibraryList
itemsrequired

Records on the current page, in the list’s sort order.

array<object>
current_pagerequired

Current page number, starting from one.

integer
last_pagerequired

Number of the last page. The walk is over once current_page equals last_page.

integer
per_pagerequired

Page size the server applied.

integer
totalrequired

Total number of records matching the filter.

integer
401

The key is missing, unknown, disabled or expired.

Analyse this response
Body example
{
  "success": false,
  "message": "API key is missing. Provide it in the X-API-KEY header.",
  "data": null
}
Response fields
successrequired

Always false in error responses.

boolean
messagerequired

Error text in the key's language (set through the X-Locale header).

string
datarequired

Always null when the request is rejected before processing.

nullable
null
403

The key lacks the required permission, or the object belongs to another user.

Analyse this response
Body example
{
  "success": false,
  "message": "This API key does not have permission to perform this action."
}
Response fields
successrequired

Always false in error responses.

boolean
messagerequired

Error text in the key's language (set through the X-Locale header).

string
422

Validation error. Offending fields are listed in errors.

Analyse this response
Body example
{
  "message": "string",
  "errors": {}
}
Response fields
messagerequired

Errors overview.

string
errorsrequired

A detailed description of each field that failed validation.

object
*optional
claves arbitrarias
array<string>

Feed this page to an AI

Open .mdllm.md

spec 0.0.1