Улучшение промптов через API
Client API предоставляет две операции:
POST /apis/v1/client/prompt-enhance/image— улучшает один промпт для генерации изображенияPOST /apis/v1/client/prompt-enhance/video— улучшает один или несколько промптов для генерации видео
Обе операции выполняются синхронно: успешный ответ сразу содержит улучшенный
текст. В отличие от генерации изображения или видео, здесь нет taskId и не
нужно опрашивать endpoint статуса задачи.
Авторизация и базовый URL
Используйте API-токен из личного кабинета:
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
Базовый URL:
https://problembo.com/apis/v1/client
Цена и порядок выполнения
| Операция | Цена за запрос |
|---|---|
| Улучшение промпта изображения | $0.007 |
| Улучшение промптов видео | $0.016 |
Сервер сначала полностью проверяет payload, доступность модели и входные файлы, затем списывает стоимость и только после этого обращается к LLM.
Повтор одного и того же запроса считается новой платной операцией. У этих endpoints нет idempotency key, поэтому не запускайте автоматический retry без проверки результата предыдущего запроса.
Как выбрать modelId
Передавайте публичный идентификатор доступной модели из соответствующего каталога Problembo. Его можно взять из JSON-запроса в интерфейсе генерации изображений или генерации видео.
Недоступные, coming-soon, отключённые и admin-only модели отклоняются. Поле с
внутренним enhancement-профилем передавать не нужно: для модели автоматически
используется её специальный профиль, а если его нет — профиль по умолчанию.
Улучшение промпта изображения
Поля запроса
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
modelId | string | да | Публичный ID доступной image-generation модели |
originalPrompt | string | да | Исходный непустой промпт, не более 2000 символов |
Неизвестные поля не принимаются.
Пример запроса
curl 'https://problembo.com/apis/v1/client/prompt-enhance/image' \
-X POST \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"modelId": "image-gpt-v3",
"originalPrompt": "портрет девушки в ночном городе"
}'
Успешный ответ
{
"enhancedPrompt": "Кинематографичный портрет девушки в неоновом ночном городе..."
}
Улучшение промптов видео
Поля запроса
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
modelId | string | да | Публичный ID доступной video-generation модели |
originalPrompts | string[] | да | Минимум один исходный промпт, каждый не более 2000 символов |
targetPromptCount | integer | да | Положительное количество промптов в ответе |
segmentDurationSeconds | integer | для multi-segment | Поддерживаемая моделью положительная длительность сегмента |
imageInputs | PromptImageInput[] | нет | Входные кадры или референсные изображения |
Если в originalPrompts передано больше одного элемента, их количество должно
совпадать с targetPromptCount. Большинство video-моделей поддерживают только
сценарий 1 → 1; multi-segment запросы доступны только моделям, в каталоге
которых включена такая возможность.
Пример запроса 1 → 1
curl 'https://problembo.com/apis/v1/client/prompt-enhance/video' \
-X POST \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"modelId": "momentflow_v5",
"originalPrompts": [
"камера медленно приближается к автомобилю под дождём"
],
"targetPromptCount": 1,
"segmentDurationSeconds": 5,
"imageInputs": [
{
"role": "first_frame",
"file": {
"url": "https://example.com/car-first-frame.jpg"
}
}
]
}'
Успешный ответ
Ответ всегда содержит ровно targetPromptCount элементов:
{
"enhancedPrompts": [
"Кинематографичный дождливый ночной кадр: камера плавно приближается..."
]
}
Multi-segment пример
Модель wildclips_v3.6 поддерживает до пяти сегментов длительностью 5 секунд:
{
"modelId": "wildclips_v3.6",
"originalPrompts": ["серебристый автомобиль едет по горному серпантину"],
"targetPromptCount": 3,
"segmentDurationSeconds": 5,
"imageInputs": [
{
"role": "first_frame",
"file": {
"fileId": "910e1b85-4677-49d4-abd3-41218733ab60.jpg"
}
}
]
}
В этом сценарии сервер преобразует один исходный замысел в три последовательных промпта и вернёт массив из трёх строк.
Входные изображения для видео
Каждый элемент imageInputs имеет следующий формат:
{
"role": "first_frame",
"file": {
"fileId": "910e1b85-4677-49d4-abd3-41218733ab60.jpg"
}
}
Допустимые роли:
first_frame— первый кадрlast_frame— последний кадрreference— референсное изображение
Внутри file должно быть ровно одно поле:
fileId— активный файл, принадлежащий владельцу API-токенаurl— публичная прямая ссылкаhttp/https; сервер импортирует файл перед улучшением промпта
Не передавайте fileId и url одновременно. Чтобы заранее загрузить локальный
или приватный файл, используйте
Client API загрузки файлов.
Набор ролей и их количество дополнительно проверяются по выбранной модели:
- можно передать не более одного
first_frameи одногоlast_frame last_frameтребуетfirst_frame- кадры и
referenceнельзя смешивать в одном запросе - максимальное количество
referenceзависит от модели
Актуальные machine-readable контракты
Текущие описания полей можно получить непосредственно из Client API:
curl 'https://problembo.com/apis/v1/client/api-contracts/prompt-enhance-image'
curl 'https://problembo.com/apis/v1/client/api-contracts/prompt-enhance-video'
Contract IDs:
prompt-enhance-imageprompt-enhance-video
Для проверки собственного payload и получения нормализованного примера вызовите
POST /apis/v1/client/api-contracts/{contractId}/example с этим payload в body.
Ошибки
| HTTP | Когда возвращается |
|---|---|
400 | Невалидный payload, модель или файл; неподдерживаемая комбинация полей; недостаточный баланс |
401 | API-токен отсутствует, невалиден, отключён или истёк |
429 | Превышен общий лимит Client API |
500 | Инфраструктурная ошибка billing |
502 | Провайдер улучшения промптов не выполнил запрос |
Ошибки 400 используют стандартный Client API envelope. Например, при
недостаточном балансе проверяйте errorKey:
{
"type": "msgType_error",
"errorKey": "BILLING_ACCESS_DENIED",
"translationKey": "common:server.BILLING_ACCESS_DENIED",
"translationValues": {}
}
Rate limit общий для всех /apis/v1/client/** endpoints: 60 запросов в минуту
на API-токен и независимый лимит 120 запросов в минуту на IP. При 429
используйте заголовок Retry-After; тело ответа имеет вид:
{
"error": "rate_limit_exceeded"
}
Последнее обновление: 18 июля 2026