AI-отчеты
GET /prompts и POST /transcriptions/{id}/reports — список шаблонов отчетов, доступных ключу, и генерация отчетов вместе с загрузкой или по готовой расшифровке.
Отчеты через API
AI-отчет — это шаблон (встроенный, как Саммари, или созданный вашей командой в приложении),
примененный к расшифровке. Через API шаблон адресуется идентификатором (slug) — стабильной
строкой вида summary или sales-call-analysis. Отчеты можно запросить вместе с загрузкой
(?reports= в Загрузке файла) или по любой уже загруженной
расшифровке. Результат приходит в prompt_results в
Получении расшифровки.
Обоим эндпоинтам нужен ключ с правом Разрешить AI-отчеты — см. Аутентификацию. Отчеты по API считаются в отдельной пакетной очереди и не замедляют приложение для вашей команды; при загруженной очереди ждите несколько минут.
Какие отчеты доступны
GET /prompts возвращает ровно те шаблоны, которые владелец ключа видит в выборе отчетов:
встроенный каталог, шаблоны, опубликованные на весь workspace, и его собственные опубликованные
личные шаблоны. Черновики не показываются и не запрашиваются.
curl "https://app.memoai.tech/api/v1/developer/prompts" \
-H "Authorization: Bearer mk_live_your_key_here"{
"prompts": [
{ "slug": "razbor-prodayushchego-zvonka", "name": "Разбор продающего звонка", "kind": "custom", "scope": "workspace", "description": null },
{ "slug": "summary", "name": "Summary", "kind": "builtin", "scope": null, "description": "General" },
{ "slug": "tasks", "name": "Action items", "kind": "builtin", "scope": null, "description": "For meetings" }
]
}| Поле | Тип | Описание |
|---|---|---|
slug | string | Идентификатор для параметра reports. У своих шаблонов он берется из названия и редактируется в приложении: Настройки → AI-отчеты. |
name | string | Отображаемое название. У встроенных всегда на английском; свои шаблоны сохраняют название из приложения. |
kind | string | builtin или custom. |
scope | string | null | У своих шаблонов: workspace (общий для команды) или personal (личный шаблон владельца ключа). У встроенных null. |
description | string | null | Категория встроенного шаблона, на английском, например For Sales. |
Идентификаторы стабильны — пока их не отредактируют
Идентификатор своего шаблона можно поменять в приложении, и это ломает интеграции со старым
значением. prompt_not_found на идентификаторе, который раньше работал, — сигнал перечитать
список. Идентификаторы встроенных шаблонов не меняются.
Отчеты вместе с загрузкой
Добавьте reports=slug1,slug2 к Загрузке файла. Идентификаторы
проверяются до чтения тела, так что опечатка ничего не стоит:
curl -X POST "https://app.memoai.tech/api/v1/developer/transcriptions?reports=summary,tasks" \
-H "Authorization: Bearer mk_live_your_key_here" \
-H "Content-Disposition: attachment; filename=\"call.mp3\"" \
--data-binary @call.mp3{
"uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "queued",
"reports": [
{ "id": "8d2f6a1e-0c4b-4f0e-9d3a-6b1c2e7f5a90", "slug": "summary", "status": "queued" },
{ "id": "1b7c0e9a-5f2d-4a63-8e41-2f9d0c3b6e75", "slug": "tasks", "status": "queued" }
]
}До 3 отчетов на загрузку. Генерация стартует сама, как только расшифровка готова, — больше ничего вызывать не нужно.
Запрос отчетов по расшифровке
POST /transcriptions/{id}/reports — для уже загруженной расшифровки, готовой или еще в
обработке. Возвращает 202 Accepted.
curl -X POST "https://app.memoai.tech/api/v1/developer/transcriptions/3fa85f64-5717-4562-b3fc-2c963f66afa6/reports" \
-H "Authorization: Bearer mk_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"reports": ["summary"]}'{
"reports": [
{ "id": "8d2f6a1e-0c4b-4f0e-9d3a-6b1c2e7f5a90", "slug": "summary", "status": "queued" }
]
}| Путь / тело | Тип | Описание |
|---|---|---|
id | UUID | Идентификатор расшифровки. |
reports | string[] | Идентификаторы отчетов, до 3 за запрос. |
Правила, благодаря которым запрос безопасно повторять:
- Идентификатор, чей отчет уже генерируется, возвращает этот отчет, а не дубль.
- Идентификатор, чей отчет уже готов, возвращает существующий отчет. Перегенерация через API недоступна — используйте приложение.
- Расшифровка в
queued/processingзапрос принимает; отчет стартует, когда текст будет готов. Проваленная расшифровка возвращает409 transcription_failed. - Лимит приложения — 30 генераций отчетов на расшифровку — действует и здесь.
Статусы отчетов и опрос
Отчеты живут в prompt_results в Получении расшифровки,
у каждого свой status:
status | Значение |
|---|---|
queued | Ждет расшифровку или слот генерации. |
processing | Генерируется. |
completed | Готово — text заполнен. Терминальный. |
failed | Не удалось сгенерировать — см. error_code. Терминальный. |
Сама расшифровка становится completed, как только готов текст; отчеты доезжают чуть позже.
Опрашивайте, пока все нужные отчеты не станут терминальными:
import time
def wait_reports(uuid: str, slugs: set[str], poll_seconds: int = 10) -> dict:
while True:
t = httpx.get(f"{BASE}/transcriptions/{uuid}", headers=HEADERS).json()
if t["status"] in ("failed", "insufficient_balance"):
raise RuntimeError(t["status"])
wanted = [r for r in t["prompt_results"] if r["slug"] in slugs]
if t["status"] == "completed" and all(r["status"] in ("completed", "failed") for r in wanted):
return {r["slug"]: r for r in wanted}
time.sleep(poll_seconds)Экспорт расшифровки включает только completed
отчеты.
Лимиты
| Лимит | Значение |
|---|---|
| Отчетов за запрос | 3 |
| Отчетов на workspace в сутки | 300 |
| Ожидающих отчетов на workspace | 200 |
| Генераций на расшифровку | 30 (общий с приложением) |
Актуальные значения для вашего workspace — в Получении workspace
в limits.reports_per_upload и limits.reports_per_day. Отчеты через API в этом релизе
отдельно не тарифицируются.
Ошибки
| Статус | Код | Когда |
|---|---|---|
403 | reports_scope_required | Ключ создан без права Разрешить AI-отчеты. Права потом не добавить — создайте новый ключ. |
404 | — | Расшифровки нет или она не видна этому ключу. |
409 | transcription_failed | Расшифровка провалилась; текста для отчета нет. |
422 | prompt_not_found | Идентификатор неизвестен или не виден владельцу ключа — detail.slug уточняет, какой. Черновики и личные шаблоны других участников не видны. |
422 | too_many_reports | Больше 3 идентификаторов в одном запросе. |
429 | report_generation_limit | По этой расшифровке уже сделано 30 генераций. |
429 | daily_reports_quota_exceeded | Суточный кап workspace. Уважайте Retry-After (полночь UTC). |
429 | too_many_queued_reports | В workspace ждет слишком много отчетов. Уважайте Retry-After. |
Полный справочник и советы по ретраям — в разделе Ошибки.