Самостоятельная загрузка файлов
Самостоятельная загрузка файлов
Если задача ожидает файл, API payload не принимает содержимое файла в виде Base64. Для файловых полей используйте один из двух вариантов:
url— публичныйhttp/httpsURL, который Problembo сможет скачать самfileId— идентификатор файла, который вы заранее загрузили в Problembo File Store
Вариант 1: передать url
Это самый простой вариант, если файл уже доступен по прямой ссылке http/https.
{
"srcImage": {
"url": "https://example.com/input/photo.png",
"origFilename": "photo.png"
}
}
Когда вы отправляете задачу, Problembo скачивает файл, загружает его во внутреннее хранилище,
заменяет url на fileId, а затем запускает обработку.
Вариант 2: загрузить файл самостоятельно и использовать fileId
Используйте этот путь для server-to-server интеграций, когда файл локальный, приватный или вы не хотите, чтобы Problembo скачивал его со стороннего URL.
Этот upload-flow работает через API token и использует эндпоинты /apis/v1/client/files/*.
Шаг 1: запросить presigned URL для загрузки
curl 'https://problembo.com/apis/v1/client/files/upload-url-for-src' \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-d '{
"origFileName": "photo.png",
"fileSizeBytes": "2458123"
}'
Типичный ответ для обычной single-part загрузки:
{
"fileId": "910e1b85-4677-49d4-abd3-41218733ab60.png",
"uploadUrl": "https://...",
"contentDisposition": "inline; filename=photo.png",
"origFileName": "photo.png"
}
Шаг 2: загрузить бинарный файл в uploadUrl
curl -X PUT 'UPLOAD_URL_FROM_STEP_1' \
--upload-file ./photo.png
Шаг 3: подтвердить загрузку
curl 'https://problembo.com/apis/v1/client/files/upload-complete' \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-d '{
"fileId": "910e1b85-4677-49d4-abd3-41218733ab60.png"
}'
Ответ:
{
"remoteFile": {
"fileId": "910e1b85-4677-49d4-abd3-41218733ab60.png"
}
}
Шаг 4: использовать fileId в запросе задачи
Для генерации изображений передайте загруженный файл в initImageFileIds нативного endpoint
генерации изображений:
{
"modelId": "waifu-studio-2.6",
"prompt": "turn this photo into an anime illustration",
"imageCount": 1,
"initImageFileIds": ["910e1b85-4677-49d4-abd3-41218733ab60.png"]
}
Отправьте этот body в POST /apis/v1/client/image-gen/tasks. Поля для файлов в других нативных
endpoints описаны в API-контракте соответствующего сервиса.
Особенности client upload-flow:
forceRouteво внешнем client API не поддерживается- отдельного download endpoint для source-файлов нет
- любой API token того же аккаунта может повторно использовать этот
fileId - нативные task endpoints проверяют, что каждый
fileIdпринадлежит владельцу токена и находится в статусеACTIVE
Multipart-загрузка для больших файлов
Если на шаге 1 сервер вернул multipartPlan, нужно использовать multipart-flow вместо одного PUT
запроса.
В этом случае:
- Загрузите каждый кусок файла в свой
multipartPlan.parts[].uploadUrl - Соберите значения
etag, которые вернёт S3-совместимое хранилище - При необходимости запросите новые presigned part URLs через
/apis/v1/client/files/multipart-plan - Завершите загрузку через
/apis/v1/client/files/upload-multipart-complete
Пример запроса на обновление multipart plan для части, у которой истекла ссылка:
curl 'https://problembo.com/apis/v1/client/files/multipart-plan' \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-d '{
"fileId": "910e1b85-4677-49d4-abd3-41218733ab60.mp4",
"partNumbers": [2]
}'
Пример ответа:
{
"uploadId": "upload-123",
"partSizeBytes": "5242880",
"parts": [
{
"partNumber": 2,
"uploadUrl": "https://..."
}
]
}
Пример запроса на завершение:
curl 'https://problembo.com/apis/v1/client/files/upload-multipart-complete' \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-d '{
"fileId": "910e1b85-4677-49d4-abd3-41218733ab60.mp4",
"parts": [
{ "partNumber": 1, "etag": "etag-part-1" },
{ "partNumber": 2, "etag": "etag-part-2" }
]
}'
{
"remoteFile": {
"fileId": "910e1b85-4677-49d4-abd3-41218733ab60.mp4"
}
}
Что выбрать?
- Используйте
/apis/v1/client/files/*, если у вас server-to-server интеграция с API token - Используйте
url, если файл уже доступен по прямой ссылкеhttp/https - Используйте
fileId, если файл локальный, приватный, большой или генерируется внутри вашей системы - Не передавайте Base64-содержимое файла внутри task payload
Последнее обновление: 8 марта 2026
Документация по API
API токены — это учетные данные для аутентификации, которые позволяют программно получать доступ к сервисам Problembo. Используйте токены для интеграции наших AI-сервисов в ваши приложения, скрипты или рабочие процессы.
Улучшение промптов через API
Как синхронно улучшать промпты для генерации изображений и видео через Problembo Client API, передавать кадры и обрабатывать ошибки.