Делает текстовый разбор аудиозаписи по вашему вопросу: может помочь понять, о чём говорят в записи, какие темы обсуждаются и кто что сказал. Цена - 0,3 ₽ за 1 секунду аудио.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
«Анализ аудио» слушает запись и отвечает текстом на ваш вопрос о ней. Можно попросить расшифровку, краткий пересказ созвона, список договорённостей и сроков, разбор песни (жанр, инструменты, настроение, текст) или описание голоса. Ответ приходит обычным текстом, файлов в результате нет.
Как это устроено:
prompt;Каждый вызов создаёт асинхронную операцию: запрос сразу возвращает id, а ответ нужно забрать проверкой статуса.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус queued.Режимов у нейросети нет: один запрос - одна запись и один вопрос. Переключатель detailed_analysis просит более подробный ответ и на цену не влияет.
{
"tool": "analyze-audio",
"input": {
"prompt": "...",
"audio_url": "https://cdn.example.com/source-audio-1.mp3"
}
}
tool - slug нейросети, всегда "analyze-audio".input - параметры запуска. Поля передаются прямо внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
prompt | string | Да | Вопрос или задание к записи, от 3 до 2000 символов. Например: «Перечисли договорённости и сроки», «Сделай дословную расшифровку», «Опиши жанр, темп и инструменты». |
audio_url | string (url) | Да | Ссылка на аудио http/https с расширением .mp3, .wav, .m4a, .aac, .flac, .ogg или .opus. Размер файла до 128 МБ. Ссылка должна открываться без авторизации. |
detailed_analysis | boolean | Нет | true - более подробный разбор содержания записи. false - обычный ответ. Если не передать, будет false. На цену не влияет. |
Короткий список договорённостей из записи рабочей встречи.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "analyze-audio",
"input": {
"prompt": "Какие договорённости и сроки назвали участники созвона? Кто что должен сделать? Ответь коротким списком.",
"audio_url": "https://cdn.example.com/source-audio-1.mp3",
"detailed_analysis": false
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'analyze-audio',
input: {
prompt: 'Какие договорённости и сроки назвали участники созвона? Кто что должен сделать? Ответь коротким списком.',
audio_url: 'https://cdn.example.com/source-audio-1.mp3',
detailed_analysis: false,
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'analyze-audio',
'input': {
'prompt': 'Какие договорённости и сроки назвали участники созвона? Кто что должен сделать? Ответь коротким списком.',
'audio_url': 'https://cdn.example.com/source-audio-1.mp3',
'detailed_analysis': False,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Запись в WAV и включённый detailed_analysis, чтобы получить развёрнутый ответ.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "analyze-audio",
"input": {
"prompt": "Опиши эту песню: жанр, темп, инструменты, кто поёт и с каким настроением. Перескажи текст.",
"audio_url": "https://cdn.example.com/source-audio-2.wav",
"detailed_analysis": true
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'analyze-audio',
input: {
prompt: 'Опиши эту песню: жанр, темп, инструменты, кто поёт и с каким настроением. Перескажи текст.',
audio_url: 'https://cdn.example.com/source-audio-2.wav',
detailed_analysis: true,
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'analyze-audio',
'input': {
'prompt': 'Опиши эту песню: жанр, темп, инструменты, кто поёт и с каким настроением. Перескажи текст.',
'audio_url': 'https://cdn.example.com/source-audio-2.wav',
'detailed_analysis': True,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Для записи длиной 9,2 секунды (считается как 10 секунд):
{
"id": "op_uuid-123",
"status": "queued",
"tool": "analyze-audio",
"cost": 3,
"balance_after": 497,
"created_at": "2026-09-30T21:31:01.071289+00:00"
}
cost - сколько списано за операцию, в рублях.balance_after - баланс после списания.Вопрос был: «Что говорится в записи? Приведи текст дословно и опиши голос: пол, примерный возраст, интонация».
{
"id": "op_uuid-123",
"status": "completed",
"tool": "analyze-audio",
"cost": 3,
"created_at": "2026-09-30T21:31:01.071289+00:00",
"completed_at": "2026-09-30T21:31:53.913069+00:00",
"result": {
"type": "text",
"text": "Конечно, вот дословный текст и описание голоса.\n\n**Дословный текст:**\n«Привет. Я Марина. Сегодня покажу, как разобрать рабочий стол за 15 минут. Думаете, не успеть? Засекайте время, начинаем».\n\n**Описание голоса:**\n* **Пол:** Женский.\n* **Примерный возраст:** 25-40 лет.\n* **Интонация:** Бодрая, уверенная и дружелюбная."
},
"error_message": null
}
Пока запись разбирается, status будет queued или processing, а result - null. При ошибке придёт status: "failed", result: null и текст причины в error_message, списанная сумма вернётся на баланс.
Сохраните id из ответа на создание и запрашивайте операцию по нему:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
Пример ожидания ответа на JavaScript / TypeScript:
async function waitForAnswer(id: string): Promise<string> {
while (true) {
const res = await fetch(`https://bratuha.ru/api/v1/operations/${id}`, {
headers: { Authorization: 'Bearer brth_ваш_ключ' },
})
const op = await res.json()
if (op.status === 'completed') return op.result.text
if (op.status === 'failed') throw new Error(op.error_message)
await new Promise((r) => setTimeout(r, 5000))
}
}
Короткая запись разбирается меньше минуты, песня на 4-5 минут - около двух. Одну операцию можно опрашивать не чаще раза в секунду, иначе придёт 429. Проверки раз в 5 секунд хватает.
{
"type": "text",
"text": "Конечно, вот дословный текст и описание голоса..."
}
type - всегда "text".text - ответ нейросети одной строкой. Абзацы разделены \n\n, внутри встречается разметка Markdown: жирный текст **...**, списки со строками на *, заголовки ###.Ссылок и файлов в результате нет. Если показываете ответ на сайте, прогоните его через Markdown-рендерер.
Цена - 0,3 ₽ за секунду аудио. Длительность берётся из самого файла и округляется вверх до целой секунды: запись 9,2 секунды стоит как 10 секунд. Минимум - 1 секунда (0,3 ₽).
Длина вопроса и detailed_analysis на цену не влияют.
| Длительность записи | Цена |
|---|---|
| 5 секунд | 1,5 ₽ |
| 10 секунд | 3 ₽ |
| 1 минута | 18 ₽ |
| 61 секунда | 18,3 ₽ |
| 10 минут | 180 ₽ |
| 1 час | 1080 ₽ |
Сумма списывается при создании операции и приходит в поле cost.
POST /api/v1/operations не идемпотентен: повторный запрос создаёт новую операцию и списывает деньги ещё раз. Если ответ на POST потерялся, не повторяйте его вслепую.queued, ответ забирайте через GET /api/v1/operations/{id}.audio_url принимаются только внешние http/https ссылки на .mp3, .wav, .m4a, .aac, .flac, .ogg или .opus, доступные без авторизации. Файл до 128 МБ.validation_error, операция не создастся и деньги не спишутся.prompt.