Memo AIDocs
API Reference

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" }
  ]
}
ПолеТипОписание
slugstringИдентификатор для параметра reports. У своих шаблонов он берется из названия и редактируется в приложении: Настройки → AI-отчеты.
namestringОтображаемое название. У встроенных всегда на английском; свои шаблоны сохраняют название из приложения.
kindstringbuiltin или custom.
scopestring | nullУ своих шаблонов: workspace (общий для команды) или personal (личный шаблон владельца ключа). У встроенных null.
descriptionstring | 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" }
  ]
}
Путь / телоТипОписание
idUUIDИдентификатор расшифровки.
reportsstring[]Идентификаторы отчетов, до 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
Ожидающих отчетов на workspace200
Генераций на расшифровку30 (общий с приложением)

Актуальные значения для вашего workspace — в Получении workspace в limits.reports_per_upload и limits.reports_per_day. Отчеты через API в этом релизе отдельно не тарифицируются.

Ошибки

СтатусКодКогда
403reports_scope_requiredКлюч создан без права Разрешить AI-отчеты. Права потом не добавить — создайте новый ключ.
404Расшифровки нет или она не видна этому ключу.
409transcription_failedРасшифровка провалилась; текста для отчета нет.
422prompt_not_foundИдентификатор неизвестен или не виден владельцу ключа — detail.slug уточняет, какой. Черновики и личные шаблоны других участников не видны.
422too_many_reportsБольше 3 идентификаторов в одном запросе.
429report_generation_limitПо этой расшифровке уже сделано 30 генераций.
429daily_reports_quota_exceededСуточный кап workspace. Уважайте Retry-After (полночь UTC).
429too_many_queued_reportsВ workspace ждет слишком много отчетов. Уважайте Retry-After.

Полный справочник и советы по ретраям — в разделе Ошибки.

На этой странице