Przejdź do treści

Фотосесії

Перегляд згенерованих зображень фотосесій та реєстрація нових завдань фотосесій.

GET /api/external/image-picker

Повертає список згенерованих зображень фотосесій.

Заголовки

ЗаголовокОбов'язковийОпис
X-Api-KeyТакВаш API key у форматі mk_live_xxx.secret

Параметри запиту

ПолеТипОбов'язковийОпис
statusFilterstringНіФільтр за статусом: all (за замовчуванням) або approved
productIdstringНіФільтр зображень за конкретним 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.idstringТакID продукту для фотографування
config.model.idstringНіID ШІ-моделі (манекена) для використання
config.scenery.idstringНіID декорації/фону
config.preset.idstringНіID пресета для застосування
config.industrystringНіКатегорія індустрії (наприклад, fashion)
config.suggestionsstringНіВільний текст з творчими вказівками або пропозиціями
countnumberНіКількість зображень для генерації (за замовчуванням: 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
  }'