Документы и презентации через API

Презентация, документ, пост или веб-страница по теме или из готового текста. Результат приходит файлом PDF, цена зависит от числа карточек и картинок.

Обновлено: 3 мин чтения

Создайте документ

Документы делает модель с типом document, её идентификатор в каталоге gamma. Она запускается задачей, prompt у неё обязателен.

curl https://epicai.ru/v1/tasks \
  -H "Authorization: Bearer $EPICAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gamma",
    "prompt": "Презентация о солнечной энергетике для школьников",
    "parameters": {"text_mode": "generate", "format": "presentation", "num_cards": 8, "language": "ru"}
  }'
{
  "id": "task_4b1c9d0e2f3a4b5c6d7e8f90",
  "object": "task",
  "type": "document",
  "model": "gamma",
  "status": "in_progress",
  "created_at": 1793114499,
  "started_at": 1793114499,
  "finished_at": null,
  "price": {"tokens": 23680, "charged": 0},
  "parameters": {"text_mode": "generate", "format": "presentation", "num_cards": 8, "language": "ru", "amount": "medium", "image_source": "noImages"}
}

В parameters вернулись и значения по умолчанию, которых вы не указывали. Задача идёт, пока документ не будет готов и выгружен. Опрашивайте её или укажите webhook_url. Опрос разобран в Задачах, вебхук в статье Вебхуки.

import os
import time
import requests

base = "https://epicai.ru/v1"
headers = {"Authorization": "Bearer " + os.environ["EPICAI_API_KEY"]}

reply = requests.post(base + "/tasks", headers=headers, json={
    "model": "gamma",
    "prompt": "Презентация о солнечной энергетике для школьников",
    "parameters": {"num_cards": 8},
})
reply.raise_for_status()
task = reply.json()

while task["status"] in ("queued", "in_progress"):
    time.sleep(5)
    task = requests.get(base + "/tasks/" + task["id"], headers=headers).json()

if task["status"] != "succeeded":
    raise SystemExit(task["error"]["message"])

with open("document.pdf", "wb") as out:
    out.write(requests.get(task["output"][0]["url"]).content)

Выберите способ

Способ задаёт parameters.text_mode, от него зависит смысл prompt.

text_modeЧто в promptЧто делает модель
generateТема или заданиеПишет документ по теме. Значение по умолчанию
preserveГотовый текстОформляет ваш текст и сохраняет его слова. Разбить текст на карточки можно строкой --- между блоками

Режима по шаблону в API нет. Значение template и поля шаблона и темы оформления дают 400 invalid_parameter, потому что шаблоны и темы хранятся в библиотеке сайта.

Настройте результат

ПараметрЗначения
formatpresentation (по умолчанию), document, social для поста, webpage для веб-страницы
num_cardsСлайдов, страниц или блоков, от 1 до 20, по умолчанию 5
languageЯзык документа кодом из схемы модели, по умолчанию ru
amountОбъём текста на карточке: brief, medium, detailed или extensive. Только в режиме generate
tone, audienceТон и аудитория свободным текстом до 200 знаков. Только в режиме generate
additional_instructionsДополнительные требования до 1500 знаков
card_splitauto или inputTextBreaks, делить ли текст по строкам ---. Только в режиме preserve
image_sourcenoImages без картинок (по умолчанию), pexels стоковые фото, aiGenerated картинки нейросети
image_tiereconomy, advanced или premium, только вместе с aiGenerated

Параметр, который при выбранных значениях не действует, отбрасывается без ошибки. Предельная длина prompt указана в поле prompt_max модели, больше даёт 400 prompt_too_long. Полную схему отдаёт GET /v1/models/gamma.

Заберите результат

Готовый документ лежит в output одним файлом PDF, независимо от format. Ссылка открывается без ключа и живёт 7 суток.

"output": [
  {"type": "document", "url": "https://epicai.ru/storage/api/4b1c9d0e2f3a4b5c6d7e8f90/1.pdf", "mime": "application/pdf", "bytes": 1523481}
]

Ссылки на редактор документа API не выдаёт, доступ к документу у вендора закрыт. Править документ после создания через API нельзя.

Цена

Цену задают число карточек и картинки. Каждая карточка добавляет одну и ту же сумму. Режим без картинок и стоковые фото стоят одинаково, а картинки нейросети дороже и растут в цене с каждым уровнем image_tier. Формат, язык и объём текста на цену не влияют. Точную сумму для ваших параметров даёт POST /v1/quote с тем же телом, что и у задачи.

{"model": "gamma", "parameters": {"num_cards": 10, "image_source": "aiGenerated", "image_tier": "economy"}}

Цена фиксируется при создании задачи, целиком резервируется и после завершения не меняется. Если документ не создан, токены не списываются. Как это устроено, объясняет статья Цена задачи.

Не нашли ответ?

Посмотрите частые вопросы или напишите в поддержку.

Войти или создать аккаунт

20 000 токенов в подарок новым пользователям. Без карты и без VPN.

или через сервис

Продолжая, вы получаете сервисные письма.

Для защиты от роботов используется Yandex SmartCaptcha. Условия обработки данных.