Фотосесії
Перегляд згенерованих зображень фотосесій та реєстрація нових завдань фотосесій.
GET /api/external/image-picker
Повертає список згенерованих зображень фотосесій.
Заголовки
| Заголовок | Обов'язковий | Опис |
|---|---|---|
| X-Api-Key | Так | Ваш API key у форматі mk_live_xxx.secret |
Параметри запиту
| Поле | Тип | Обов'язковий | Опис |
|---|---|---|---|
| statusFilter | string | Ні | Фільтр за статусом: all (за замовчуванням) або approved |
| productId | string | Ні | Фільтр зображень за конкретним ID продукту |
Відповідь
{
"images": [
{
"id": "img_abc123",
"name": "Fashion Shoot - White T-Shirt",
"thumbnail": "https://cdn.example.com/images/thumb_abc123.jpg",
"status": "DONE",
"voting": "accepted",
"createdAt": "2026-03-20T16:00:00.000Z"
}
],
"count": 1
}
Відповіді з помилками
| Код | Значення |
|---|---|
| 401 | Відсутній або недійсний API key |
| 500 | Внутрішня помилка сервера |
Примітки
- Цей ендпоінт не витрачає кредити.
- Використовуйте
productIdдля звуження результатів до конкретного продукту. voting— цеaccepted,rejectedабоnull, якщо зображення ще ніхто не оцінив. Оцінку, відмінну відnull, надсилаєте прямо до ендпоінта оцінювання зображень — він приймає ті самі два слова, без перекладу.nullдо них не належить. Він повідомляє про відсутність оцінки, а не є значенням для надсилання; надісланий, він буде відхилений. Ендпоінт оцінювання має третє слово,pending, яким оцінку скасовують — список його ніколи не повертає, бо і рядок без оцінки, і кадр, що ще генерується, повідомляються якnull.
Приклад
curl -X GET "https://qamera.ai/api/external/image-picker?statusFilter=approved&productId=prod_abc123" \ -H "X-Api-Key: mk_live_abc123.secret456"
POST /api/external/image-picker/register-ideas
Реєструє нове завдання генерації фотосесії. Кредити резервуються негайно та витрачаються після завершення обробки.
Заголовки
| Заголовок | Обов'язковий | Опис |
|---|---|---|
| X-Api-Key | Так | Ваш API key у форматі mk_live_xxx.secret |
| Content-Type | Так | application/json |
Тіло запиту
| Поле | Тип | Обов'язковий | Опис |
|---|---|---|---|
| config.product.id | string | Так | ID продукту для фотографування |
| config.model.id | string | Ні | ID ШІ-моделі (манекена) для використання |
| config.scenery.id | string | Ні | ID декорації/фону |
| config.preset.id | string | Ні | ID пресета для застосування |
| config.industry | string | Ні | Категорія індустрії (наприклад, fashion) |
| config.suggestions | string | Ні | Вільний текст з творчими вказівками або пропозиціями |
| count | number | Ні | Кількість зображень для генерації (за замовчуванням: 10, максимум: 20) |
Відповідь
{
"createdRecordIds": ["img_001", "img_002", "img_003"],
"batchId": "batch_abc123",
"orderId": "order_xyz789",
"reservationId": "res_def456",
"creditsReserved": 30
}
Відповіді з помилками
| Код | Значення |
|---|---|
| 400 | Недійсне тіло запиту або відсутні обов'язкові поля |
| 401 | Відсутній або недійсний API key |
| 402 | Недостатньо кредитів |
| 422 | Вказане фото не має власного прийнятого пакшота (packshot_not_approved) або не вдалося визначити модель генерації |
| 500 | Внутрішня помилка сервера |
Примітки
- Обробка відбувається асинхронно. Завдання публікується в чергу повідомлень та обробляється воркером.
- Відстежуйте статус згенерованих зображень за допомогою GET-ендпоінта.
- Кредити резервуються при створенні, витрачаються після успішної обробки та повертаються у разі невдачі.
- Кожен запит генерує
correlationIdдля трасування логів. config.product.idвказує на фото продукту — той самий ідентифікатор, який повертаєGET /api/external/products. Зйомка генерується з власного прийнятого пакшота цього фото, тож це поле визначає, який бік продукту буде сфотографовано.- Фото без власного прийнятого пакшота отримує
422—errors.prerequisiteNotMet, зpackshot_not_approvedуdetails. Кредити не резервуються і завдання не створюється. Запит ніколи не виконується з пакшота іншого фото того самого продукту — саме так поверталася хибна сторона продукту. - Максимум 20 зображень за запит.
Приклад
curl -X POST "https://qamera.ai/api/external/image-picker/register-ideas" \
-H "X-Api-Key: mk_live_abc123.secret456" \
-H "Content-Type: application/json" \
-d '{
"config": {
"product": { "id": "prod_abc123" },
"model": { "id": "model_xyz" },
"scenery": { "id": "scenery_001" },
"industry": "fashion",
"suggestions": "Outdoor urban setting, natural lighting"
},
"count": 10
}'