Сесії гуртом
Як замовити сесії для багатьох продуктів одночасно — ліміти, частковий успіх (HTTP 207) і безпечний повтор.
Що ви отримаєте
Продавець хоче відзняти весь асортимент. У цьому матеріалі ви надішлете багато сесій одним викликом, прочитаєте результат для кожної окремо (частковий успіх) і дізнаєтеся, як безпечно повторювати невдалі сесії.
Спершу оберіть правильний інструмент:
- Багато продуктів, одна конфігурація → одна сесія
POST /jobsз багатьма записами вsubjects[](до 100 продуктів). Простіше й з підтримкоюIdempotency-Key. - Багато сесій із різними конфігураціями →
POST /jobs/batch(до 100 сесій в одному виклику).
Передумови
- Ключ API інсталяції (як його отримати) з дозволами
plugin.jobs:create,plugin.jobs:read. - Кожен продукт має прийнятий пакшот — див. матеріал A або B.
У прикладах замініть mk_live_… на свій ключ. Базова адреса — https://qamera.ai.
Перебіг
1. Підготуйте сесії (продукти + конфігурація) 2. POST /jobs/batch → до 100 сесій одночасно 3. HTTP 207 → результат для кожної сесії (accepted / failed) 4. Повторіть невдалі сесії поодинці через POST /jobs 5. Отримайте результати через вебхуки або опитування
Ліміти
| Ліміт | Значення | Що відбувається після перевищення |
|---|---|---|
| Продуктів в одній сесії | 100 | 400 invalid_input |
Зображень на продукт (images_count) | 50 | 400 invalid_input |
| Сесій в одному батчі | 100 | весь виклик відхиляється |
Зображень загалом у батчі (сума images_count) | 5000 | весь виклик відхиляється |
Перевищення лімітів батча відхиляє весь виклик — жодна сесія не приймається. Див. batch_limit_exceeded.
Кроки
1. Надішліть батч сесій
Кожен запис у batches[] — це незалежна сесія: з власною конфігурацією й власними продуктами:
curl -X POST https://qamera.ai/api/v1/plugin/jobs/batch \
-H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy" \
-H "Content-Type: application/json" \
-d '{
"batches": [
{
"session_config": { "aspect_ratio": "4:5" },
"subjects": [
{ "product_label": "Kubek ceramiczny", "product_ref": "sklep1:produkt-7", "images_count": 4, "ai_model": "byteplus/seedream-4.5" },
{ "product_label": "Talerz deserowy", "product_ref": "sklep1:produkt-8", "images_count": 4, "ai_model": "byteplus/seedream-4.5" }
]
},
{
"session_config": { "aspect_ratio": "9:16" },
"subjects": [
{ "product_label": "Dzbanek szklany", "product_ref": "sklep1:produkt-9", "images_count": 6, "ai_model": "byteplus/seedream-4.5" }
]
}
]
}'
2. Прочитайте результат для кожної сесії (HTTP 207)
Батч завжди відповідає статусом 207 Multi-Status: кожна сесія пройшла або відпала незалежно. Індекси в results[] відповідають порядку в batches[].
{
"results": [
{
"index": 0,
"status": "accepted",
"result": {
"order_id": "00000000-0000-0000-0000-000000000123",
"status": "pending",
"subjects": [
{ "product_ref": "sklep1:produkt-7", "job_ids": ["…"] },
{ "product_ref": "sklep1:produkt-8", "job_ids": ["…"] }
]
}
},
{
"index": 1,
"status": "failed",
"error": {
"code": "packshot_not_approved",
"message_i18n": { "en": "No accepted packshot found for product_ref=\"sklep1:produkt-9\"…" },
"retryable": false
}
}
],
"accepted_count": 1,
"failed_count": 1
}
Збережіть order_id кожної прийнятої сесії. Для невдалих сесій error.code підкаже, що виправити — тут продукт 9 не має прийнятого пакшота.
3. Повторіть невдалі сесії поодинці
Батч не підтримує заголовка Idempotency-Key — повтор усього батча після тайм-ауту міг би продублювати вже прийняті сесії. Безпечний підхід:
- Надішліть батч один раз.
- Сесії зі
status: "failed"виправте й надішліть поодинці черезPOST /jobs, кожну з власнимIdempotency-Key:
curl -X POST https://qamera.ai/api/v1/plugin/jobs \
-H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy" \
-H "Idempotency-Key: sklep1-sesja-produkt-9-retry1" \
-H "Content-Type: application/json" \
-d '{
"session_config": { "aspect_ratio": "9:16" },
"subjects": [
{ "product_label": "Dzbanek szklany", "product_ref": "sklep1:produkt-9", "images_count": 6, "ai_model": "byteplus/seedream-4.5" }
]
}'
Завдяки Idempotency-Key повторне надсилання того самого запиту (протягом 24 годин) поверне ту саму сесію замість створення другої.
4. Отримайте результати
Для гуртових замовлень вебхуки зручніші за опитування — ви отримаєте окреме сповіщення про кожне завершене завдання. Див. отримання результатів. Стан усієї сесії (скільки завдань завершено, скільки невдалих) перевірите одним викликом:
curl https://qamera.ai/api/v1/plugin/orders/00000000-0000-0000-0000-000000000123 \ -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
Поширені помилки
| Помилка | Чому виникла | Що зробити |
|---|---|---|
batch_limit_exceeded | Понад 100 сесій або понад 5000 зображень загалом | Розбийте на менші партії — подробиці |
failed з packshot_not_approved | Якийсь продукт не має прийнятого пакшота | Пройдіть матеріал B для цього продукту — подробиці |
failed з quota_exceeded | Кредити закінчилися під час приймання батча | Поповніть кредити й повторіть невдалі сесії поодинці — подробиці |
429 rate_limit_exceeded | Забагато викликів за хвилину | Зважайте на Retry-After; надсилайте батчі замість багатьох окремих викликів — подробиці |
429 concurrency_limit_exceeded | Забагато завдань певного AI-постачальника одночасно | Зачекайте Retry-After секунд і повторіть — подробиці |
Що далі
- Отримання результатів — вебхуки при великому масштабі.
- Повторна сесія — догенеруйте зображення для обраних продуктів.