Документация по API
API токены — это учетные данные для аутентификации, которые позволяют программно получать доступ к сервисам Problembo. Используйте токены для интеграции наших AI-сервисов в ваши приложения, скрипты или рабочие процессы.
Документация по API токенам
Обзор
API токены — это учетные данные для аутентификации, которые позволяют программно получать доступ к сервисам Problembo. Используйте токены для интеграции наших AI-сервисов в ваши приложения, скрипты или рабочие процессы.
Начало работы
Создание токена
- Перейдите в Личный кабинет
- Нажмите кнопку "Создать токен"
- Введите описательное название для вашего токена
- Выберите срок действия (или установите "Бессрочно")
- Нажмите "Создать" для генерации токена
- Важно: Скопируйте токен немедленно - вы больше не сможете его увидеть!
Безопасность токенов
- Никогда не передавайте токены другим лицам
- Не добавляйте токены в системы контроля версий (Git, SVN и т.д.)
- Используйте переменные окружения для хранения токенов в приложениях
- Регулярно обновляйте токены для повышения безопасности
- Отзывайте скомпрометированные токены немедленно
Использование API
Базовый URL
https://problembo.com/apis/v1/clientЭндпоинты
POST /apis/v1/client/tasks- Создание новой задачиGET /apis/v1/client/tasks/{taskId}- Получение статуса и результата задачи
Аутентификация
Включите ваш API токен в заголовок Authorization каждого запроса:
Authorization: Bearer ВАШ_API_ТОКЕНСтруктура запроса
Все запросы на создание задач имеют единую структуру:
{
"taskType": "тип_задачи",
"payload": {
// параметры, специфичные для типа задачи
}
}Получение примеров JSON
💡 Важно: Примеры JSON для конкретных типов задач можно получить прямо в интерфейсе каждого сервиса через кнопку "Json for API". Это самый простой способ узнать правильную структуру запроса для нужного вам сервиса.
Доступные типы задач
Основные типы задач (taskType):
com.problembo.proto.SdImageClientTaskPr- Генерация изображенийcom.problembo.proto.VideoGenClientTaskPr- Генерация видеоcom.problembo.proto.SongGenClientTaskPr- Генерация музыкиcom.problembo.proto.TtsGenClientTaskPr- Синтез речи (Text-to-Speech)com.problembo.proto.UpscaleSimpleClientTaskPr- Улучшение качества изображенийcom.problembo.proto.BgRemoveClientTaskPr- Удаление фона с изображенийcom.problembo.proto.VideoEnhanceClientTaskPr- Улучшение качества видео- и другие
Примеры запросов
Создание задачи (POST)
Запрос:
curl -X POST https://problembo.com/apis/v1/client/tasks \
-H "Authorization: Bearer ВАШ_API_ТОКЕН" \
-H "Content-Type: application/json" \
-d '{
"taskType": "com.problembo.proto.SdImageClientTaskPr",
"payload": {
"base": {
"prompt": "1girl, beautiful anime character",
"negativePrompt": "nsfw, low quality",
"imageQuantity": 1,
"model": "SdModel_WaifuStudio_1",
"aspectRatioPreset": "ASPECT_RATIO_VERTICAL_16_9",
"performanceMode": "SD_IMAGE_GEN_MODE_SPEED"
},
"promptMode": "PromptMode_default"
}
}'Ответ (успешное создание):
{
"taskCreated": {
"taskId": "00331b93-31bd-4e33-b28c-cc46793a911f",
}
}Получение результата (GET)
Запрос:
curl -X GET https://problembo.com/apis/v1/client/tasks/00331b93-31bd-4e33-b28c-cc46793a911f \
-H "Authorization: Bearer ВАШ_API_ТОКЕН"Ответ (задача в процессе):
{
"taskId": "00331b93-31bd-4e33-b28c-cc46793a911f",
"status": "EXECUTING",
"ready": false
}Ответ (задача завершена успешно):
{
"taskId": "00331b93-31bd-4e33-b28c-cc46793a911f",
"status": "END_SUCCESS",
"ready": true,
"completedAt": "2025-11-04T07:14:33Z",
"result": {
"@type": "type.googleapis.com/com.problembo.proto.SdImageClientTaskPr.Result",
"taskResult": [
{
"origFilename": "problembo-result-20251104071432.jpg",
"url": "https://prbo.gateway.storjshare.io/910e1b85-4677-49d4-abd3-41218733ab60.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&..."
}
]
}
}Ответ (ошибка при выполнении):
{
"taskId": "00331b93-31bd-4e33-b28c-cc46793a911f",
"status": "END_ERR",
"ready": true,
"error": {
"errorKey": "SD_PROMPT_NOT_SAFE",
"text": "Промпт содержит небезопасный контент"
}
}Статусы задач
Задача может находиться в одном из следующих статусов:
PENDING- Задача создана и ожидает обработкиASSIGN_TO_WORKER- Задача назначается воркеруEXECUTING- Задача выполняетсяEND_SUCCESS- Задача успешно завершенаEND_ERR- Задача завершена с ошибкойEND_TIMEOUT- Превышено время ожидания выполнения
Поле ready показывает, завершена ли задача (независимо от результата).
Полный workflow
Типичный сценарий работы с API:
# 1. Создать задачу
TASK_ID=$(curl -X POST https://problembo.com/apis/v1/client/tasks \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"taskType": "...", "payload": {...}}' \
| jq -r '.taskCreated.taskId')
echo "Task ID: $TASK_ID"
# 2. Опросить статус (polling)
while true; do
RESPONSE=$(curl -s https://problembo.com/apis/v1/client/tasks/$TASK_ID \
-H "Authorization: Bearer $API_TOKEN")
STATUS=$(echo $RESPONSE | jq -r '.status')
READY=$(echo $RESPONSE | jq -r '.ready')
echo "Status: $STATUS"
if [ "$READY" = "true" ]; then
if [ "$STATUS" = "END_SUCCESS" ]; then
echo "Task completed successfully!"
echo $RESPONSE | jq '.result'
else
echo "Task failed!"
echo $RESPONSE | jq '.error'
fi
break
fi
sleep 5
doneУправление токенами
Переименование токенов
Давайте токенам осмысленные имена для идентификации их назначения:
продакшен-серверразработка-тестированиемобильное-приложение-v2
Настройки срока действия
Выбирайте подходящий срок действия в зависимости от вашего случая:
- 30 дней: Тестирование и разработка
- 90 дней: Краткосрочные проекты
- 1 год: Долгосрочные приложения
- Бессрочно: Критическая инфраструктура (обновляйте вручную)
Статус токена
Токены могут иметь следующие статусы:
- Активен: Токен действителен и может использоваться
- Отключён: Временно отключен, можно снова включить
- Истёк: Прошел срок действия, не может использоваться
- Отозван: Навсегда аннулирован
Ограничения частоты запросов (Rate Limiting)
API использует распределенное ограничение частоты запросов для защиты от перегрузки:
Лимиты по эндпоинтам
- POST /apis/v1/client/tasks: 15 запросов за 60 секунд
- GET /apis/v1/client/tasks/{id}: 120 запросов за 60 секунд
Ответ при превышении лимита
При превышении лимита вы получите HTTP статус 429 Too Many Requests:
HTTP/1.1 429 Too Many Requests
Retry-After: 60
Content-Type: application/json
{
"error": "rate_limit_exceeded"
}Заголовок Retry-After указывает, через сколько секунд можно повторить запрос.
Примечание: Rate limiting по умолчанию может быть отключен. Уточните актуальные лимиты у службы поддержки.
Коды ошибок
HTTP статусы
- 200 OK - Запрос успешно обработан
- 400 Bad Request - Некорректный запрос или ошибка валидации
- 401 Unauthorized - Невалидный или отсутствующий токен
- 404 Not Found - Задача не найдена
- 429 Too Many Requests - Превышен лимит частоты запросов
- 500 Internal Server Error - Внутренняя ошибка сервера
Коды ошибок задач (errorKey)
При ошибке выполнения задачи в ответе будет присутствовать поле error с кодом ошибки:
Ошибки доступа и биллинга
BILLING_ACCESS_DENIED- Недостаточно средств на балансеIP_BILLING_ACCESS_DENIED- IP-адрес заблокированIP_BAN- IP-адрес забаненANONYMOUS_USER- Требуется аутентификацияNOT_PAID_USER- Функция доступна только платным пользователям
Ошибки валидации
PARSE_TASK- Ошибка парсинга JSON запросаINVALID_INPUT_FILE- Некорректный входной файлSD_EMPTY_PROMPT- Пустой промптSD_PROMPT_TOO_LONG- Промпт слишком длинныйSD_NO_LATIN_PROMPT- Промпт должен быть на латиницеSD_PROMPT_NOT_SAFE- Промпт содержит небезопасный контент
Лимиты
MAX_PARALLEL_TASKS_PER_IP- Превышен лимит параллельных задачMAX_TASKS_PER_USER- Превышен лимит задач пользователя
Системные ошибки
SERVICE_DISABLED- Сервис временно отключенMAINTENANCE- Технические работыBUSY- Система перегруженаTIMEOUT- Превышено время выполнения задачиNOT_FOUND- Задача не найденаUNKNOWN_ERROR- Неизвестная ошибка
Лучшие практики
- Используйте отдельные токены для разных приложений или окружений
- Устанавливайте сроки действия, подходящие для вашего случая
- Реализуйте polling с разумными интервалами (рекомендуется 3-5 секунд)
- Обрабатывайте все возможные статусы задач в вашем коде
- Реализуйте логику повторных попыток с экспоненциальной задержкой при rate limiting
- Проверяйте баланс перед отправкой большого количества задач
- Кешируйте результаты по возможности, чтобы не запрашивать их повторно
- Обрабатывайте ошибки грамотно - логируйте errorKey для отладки
- Отслеживайте использование токенов в разделе статистики
Устранение неполадок
Токен не работает
- Убедитесь, что токен активен и не истёк
- Проверьте правильность формата заголовка:
Authorization: Bearer TOKEN - Убедитесь, что на аккаунте достаточно кредитов
- Проверьте, что токен начинается с префикса
pbo_pat_
Ошибка 401 Unauthorized
Возможные причины:
- Токен недействителен, истек или отозван
- Неправильный формат заголовка Authorization
- Лишние пробелы или символы в токене
- Токен не скопирован полностью
Решение:
# Правильно
curl -H "Authorization: Bearer pbo_pat_..."
# Неправильно
curl -H "Authorization: pbo_pat_..." # отсутствует "Bearer"
curl -H "Authorization: Bearer pbo_pat_..." # двойной пробелОшибка 429 Too Many Requests
Вы превысили лимит частоты запросов.
Решение:
- Дождитесь времени, указанного в заголовке
Retry-After - Реализуйте экспоненциальную задержку между повторными попытками
- Оптимизируйте частоту опроса статуса задачи
- Используйте батчинг для массовых операций
Ошибка BILLING_ACCESS_DENIED
Недостаточно средств на балансе.
Решение:
- Проверьте баланс в личном кабинете
- Пополните баланс
- Убедитесь, что выбран правильный тарифный план
Ошибка SD_PROMPT_NOT_SAFE
Промпт содержит небезопасный или запрещенный контент.
Решение:
- Проверьте промпт на наличие запрещенных слов
- Используйте более нейтральные формулировки
- Обратитесь в поддержку, если считаете, что промпт корректен
Задача зависла в статусе EXECUTING
Задача выполняется дольше обычного.
Решение:
- Продолжайте опрашивать статус - некоторые задачи могут выполняться до 5-10 минут
- Проверьте статус системы на странице мониторинга
- Если задача не завершается более 15 минут, обратитесь в поддержку с taskId
Примеры на других языках
JavaScript/TypeScript
const API_TOKEN = "pbo_pat_ваш_токен";
const BASE_URL = "https://problembo.com/apis/v1/client/tasks";
const headers = {
"Authorization": `Bearer ${API_TOKEN}`,
"Content-Type": "application/json"
};
// Создание задачи
async function createTask() {
const response = await fetch(BASE_URL, {
method: "POST",
headers,
body: JSON.stringify({
taskType: "com.problembo.proto.SdImageClientTaskPr",
payload: {
base: {
prompt: "beautiful landscape",
imageQuantity: 1,
model: "SdModel_XL_anime"
}
}
})
});
const data = await response.json();
return data.taskCreated.taskId;
}
// Опрос статуса
async function waitForTask(taskId: string) {
while (true) {
const response = await fetch(`${BASE_URL}/${taskId}`, { headers });
const data = await response.json();
console.log(`Status: ${data.status}`);
if (data.ready) {
return data;
}
await new Promise(resolve => setTimeout(resolve, 5000));
}
}
// Использование
const taskId = await createTask();
console.log(`Task created: ${taskId}`);
const result = await waitForTask(taskId);
if (result.status === "END_SUCCESS") {
console.log("Success!", result.result);
} else {
console.log("Failed!", result.error);
}Поддержка
Нужна помощь? Свяжитесь с нашей службой поддержки:
- Email: support@problembo.com
- Telegram: @problembo_support
Последнее обновление: ноябрь 2025
