GET /voices /fishaudio /clones
Клоны голоса Fish Audio владельца ключа, новые сверху. Архивные в список не входят —
только с status=archived.
У клона в статусе ready есть voice_id — его кладут в tts_settings.voice_id
шаблона Fish Audio. Пока клон pending/cloning, voice_id равен null.
Список работает без проверки подписки: истёкшая подписка созданные клоны не прячет.
Требуемое право ключа: voices.read.
На этой странице(3)
Параметры
Поля ввода живут прямо в строке запроса: подставьте значение — и получите готовый URL. Ниже — тип, обязательность и допустимые значения каждого параметра.
- FishAudioVoiceCloneStatusв queryнеобязательный
Только клоны в этом статусе. Без параметра — все, кроме
archived; архивные видны только сstatus=archived.Допустимые значения - stringв queryнеобязательный≤ 255 симв.
Поиск по названию клона (
display_name). - integerв queryнеобязательный≥ 1
Номер страницы, начиная с
1. - integerв queryнеобязательный1..100
Сколько записей вернуть на странице. Метаданные пагинации лежат рядом с
items:current_page,last_page,per_page,total.
Возможные ответы
200Успех. Полезная нагрузка — в поле data.
Успех. Полезная нагрузка — в поле data.
{
"success": true,
"message": "Success",
"data": {
"items": [
{
"id": "01a10e08-2ee3-73c2-88b2-8df2bcef9d1e",
"provider": "fishaudio",
"display_name": "Narrator (my voice)",
"language": "ru",
"description": null,
"status": "ready",
"voice_id": "b3f1c9a07e5d4a2c8d6e1f0a9b7c5d34",
"attempts": 1,
"error": null,
"created_at": "2026-10-14T08:02:11+00:00",
"completed_at": "2026-10-14T08:03:40+00:00",
"failed_at": null,
"banned_at": null,
"ban_reason": null
},
{
"id": "01a10e08-2ee5-702c-b492-243c88fd9670",
"provider": "fishaudio",
"display_name": "Noisy sample",
"language": "ru",
"description": null,
"status": "failed",
"voice_id": null,
"attempts": 1,
"error": {
"reason": "processing_error",
"message": "The provider rejected the sample."
},
"created_at": "2026-10-14T07:40:02+00:00",
"completed_at": null,
"failed_at": "2026-10-14T07:41:15+00:00",
"banned_at": null,
"ban_reason": null
}
],
"current_page": 1,
"last_page": 1,
"per_page": 20,
"total": 2
}
}Признак успеха. Решение принимайте по HTTP-коду: у любого ответа 2xx здесь true, а ошибка приходит телом другой формы, где этого поля может не быть вовсе.
Пояснение для человека, на языке аккаунта. Показать пользователю можно; разбирать программно — нет: формулировки меняются без предупреждения и кодом ошибки не являются.
dataобязательноеПолезная нагрузка ответа.
object
Полезная нагрузка ответа.
itemsобязательноеВаши клоны голоса Fish Audio на этой странице, новые сверху.
array<FishAudioVoiceClone>FishAudioVoiceClone
Ваши клоны голоса Fish Audio на этой странице, новые сверху.
UUID клона. Его подставляют в пути /voices/fishaudio/clones/{voiceClone}/…; в шаблон он НЕ идёт — туда идёт voice_id.
Провайдер клона — всегда fishaudio.
Название клона, заданное при создании.
Справочная метка языка (ISO 639-1) либо null, если не передавалась. На клонирование не влияет.
Ваше описание клона либо null.
Статус: pending → cloning → ready либо failed; archived — снят владельцем; banned — заблокирован модератором. Озвучивать можно только ready.
Идентификатор голоса Fish Audio (строка из 32 hex-символов, не UUID) — значение для tts_settings.voice_id шаблона с service_key: fishaudio. Есть только у ready, иначе null.
Номер попытки клонирования: 1 при создании, +1 за каждый повтор.
errorобязательноеПричина отказа последней попытки; null, пока отказа не было.
может быть nullobject
Причина отказа последней попытки; null, пока отказа не было.
Машинный код отказа: processing_error, max_retries, network, timeout, dispatch_failed, unbanned (клон разбанен, но голоса у него не было). Повторить попытку — POST /voices/fishaudio/clones/{voiceClone}/retry; если processing_error повторяется, смените образец.
Пояснение к отказу для человека либо null. Ветвитесь по reason, а не по тексту.
Когда клон создан.
Когда клон стал ready; null до этого.
Когда последняя попытка завершилась отказом; null, если отказа нет.
Когда клон заблокирован модератором (status = banned); null, если блокировки нет.
Причина блокировки от модератора либо null. Заблокированный клон нельзя ни использовать, ни архивировать.
Номер текущей страницы, с единицы.
Номер последней страницы.
Размер страницы, применённый сервером.
Сколько записей всего по фильтру.
401Невалидный или отсутствующий X-API-KEY
Невалидный или отсутствующий X-API-KEY
{
"success": false,
"message": "API key is missing. Provide it in the X-API-KEY header.",
"data": null
}Всегда false в ответах об ошибке.
Текст ошибки на языке ключа (задаётся заголовком X-Locale).
Всегда null, когда запрос отклонён до обработки.
403У ключа нет права voices.read
У ключа нет права voices.read
{
"success": false,
"message": "This API key does not have permission to perform this action."
}Всегда false в ответах об ошибке.
Текст ошибки на языке ключа (задаётся заголовком X-Locale).
422Ошибка валидации. Поля с ошибками перечислены в errors.
Ошибка валидации. Поля с ошибками перечислены в errors.
{
"message": "string",
"errors": {}
}Errors overview.
errorsобязательноеA detailed description of each field that failed validation.
object
A detailed description of each field that failed validation.
Рядом
Скормить страницу ИИ
спека 0.0.1