Przejdź do treści

Приклади curl

Шпаргалка з готовими викликами curl для кожного ендпойнту API інтеграції плагінів.

Це шпаргалка — лише сам виклик, без пояснень. Покрокові посібники з відповідями та обробкою помилок ви знайдете в основних процесах.

Замініть mk_live_… на ключ API вашої інсталяції. Базова адреса — https://qamera.ai.

/me

curl https://qamera.ai/api/v1/plugin/me \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"

Завантажте файл

curl -X POST https://qamera.ai/api/v1/plugin/assets/upload \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy" \
  -H "Content-Type: application/json" \
  -d '{ "mode": "presigned", "filename": "shoe.jpg", "content_type": "image/jpeg", "size_bytes": 482310 }'

curl -X PUT "$PRESIGNED_URL" --upload-file shoe.jpg \
  -H "Content-Type: image/jpeg"

Зареєструйте джерельне фото

curl -X POST https://qamera.ai/api/v1/plugin/images \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy" \
  -H "Content-Type: application/json" \
  -d '{
    "images": [
      { "external_ref": "sklep1:zdjecie-101", "product_ref": "SKU-001", "product_metadata": { "display_name": "Buty model X" }, "asset_id": "00000000-0000-0000-0000-000000000010" }
    ]
  }'

Зареєструйте пакшот (прийнятий одразу)

curl -X POST https://qamera.ai/api/v1/plugin/packshots \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy" \
  -H "Content-Type: application/json" \
  -d '{
    "packshots": [
      { "external_ref": "sklep1:packshot-42", "product_ref": "SKU-001", "product_metadata": { "display_name": "Buty model X" }, "asset_id": "00000000-0000-0000-0000-000000000010" }
    ]
  }'

Надішліть сесію (один продукт × 4 зображення)

curl -X POST https://qamera.ai/api/v1/plugin/jobs \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy" \
  -H "Idempotency-Key: order_12345-submit" \
  -H "Content-Type: application/json" \
  -d '{
    "session_config": {
      "model_id": "00000000-0000-0000-0000-000000000aaa",
      "scenery_id": "00000000-0000-0000-0000-000000000bbb",
      "preset_id": "preset_minimal",
      "aspect_ratio": "4:5",
      "suggestions": "naturalne światło"
    },
    "subjects": [
      {
        "product_label": "Buty model X",
        "product_ref": "SKU-001",
        "images_count": 4,
        "ai_model": "google/gemini-3-pro-image"
      }
    ],
    "external_metadata": { "sku": "SKU-001" }
  }'

Без packshot_asset_id сесія використовує найновіший прийнятий пакшот продукту. Продукт без прийнятого пакшота → 422 packshot_not_approved (навчальний матеріал).

Замовте варіанти пакшота

curl -X POST https://qamera.ai/api/v1/plugin/jobs \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy" \
  -H "Idempotency-Key: packshoty-SKU-001" \
  -H "Content-Type: application/json" \
  -d '{
    "job_type": "packshot",
    "session_config": { "aspect_ratio": "1:1" },
    "subjects": [
      {
        "packshot_asset_id": "00000000-0000-0000-0000-000000000010",
        "product_label": "Buty model X",
        "product_ref": "SKU-001",
        "images_count": 3,
        "ai_model": "byteplus/seedream-4.5",
        "auto_register_packshot": true,
        "packshot_external_ref": "sklep1:packshot-kandydat"
      }
    ]
  }'

Надішліть batch

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": "A", "product_ref": "SKU-A", "images_count": 4, "ai_model": "google/gemini-3-pro-image" }
        ]
      },
      {
        "session_config": { "aspect_ratio": "9:16" },
        "subjects": [
          { "product_label": "B", "product_ref": "SKU-B", "images_count": 4, "ai_model": "google/gemini-3-pro-image" }
        ]
      }
    ]
  }'

Ліміти: 100 сесій і 5000 зображень загалом. Відповідь: HTTP 207 з результатом для кожної сесії (навчальний матеріал).

Перевірте завдання

curl https://qamera.ai/api/v1/plugin/jobs/00000000-0000-0000-0000-0000000000a1 \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"

Список завдань (останні 25 завершених)

curl "https://qamera.ai/api/v1/plugin/jobs?status=completed&limit=25" \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"

Оновіть адреси для завантаження

curl -X POST https://qamera.ai/api/v1/plugin/jobs/00000000-0000-0000-0000-0000000000a1/refresh-url \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"

Скасуйте завдання, що очікує

curl -X DELETE https://qamera.ai/api/v1/plugin/jobs/00000000-0000-0000-0000-0000000000a1 \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"

Прийміть або відхиліть завершене завдання

curl -X POST https://qamera.ai/api/v1/plugin/jobs/00000000-0000-0000-0000-0000000000a1/accept \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"

curl -X POST https://qamera.ai/api/v1/plugin/jobs/00000000-0000-0000-0000-0000000000a1/reject \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"

Зверніть увагу: для завдання packshot прийняття затверджує пакшот продукту; для завдання photo_shoot це лише зворотний зв'язок (деталі).

Отримайте повну сесію (замовлення)

curl https://qamera.ai/api/v1/plugin/orders/00000000-0000-0000-0000-000000000099 \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"

Клонуйте сесію

# 1:1 — ті самі продукти й кількість зображень
curl -X POST https://qamera.ai/api/v1/plugin/orders/00000000-0000-0000-0000-000000000099/clone \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy" \
  -H "Idempotency-Key: clone-99-runda2" \
  -H "Content-Type: application/json" \
  -d '{}'

# інша кількість зображень для продукту
curl -X POST https://qamera.ai/api/v1/plugin/orders/00000000-0000-0000-0000-000000000099/clone \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy" \
  -H "Idempotency-Key: clone-99-runda3" \
  -H "Content-Type: application/json" \
  -d '{ "subjects": [ { "product_ref": "SKU-001", "images_count": 8 } ] }'

Idempotency-Key під час клонування обов'язковий (навчальний матеріал).

Список стилів (пресетів)

curl https://qamera.ai/api/v1/plugin/presets \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"

Довідкові дані

curl https://qamera.ai/api/v1/plugin/models -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
curl https://qamera.ai/api/v1/plugin/sceneries -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
curl https://qamera.ai/api/v1/plugin/ai-models -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
curl https://qamera.ai/api/v1/plugin/aspect-ratios -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
curl https://qamera.ai/api/v1/plugin/pricing -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"

Замініть секрет HMAC

curl -X POST https://qamera.ai/api/v1/plugin/installations/00000000-0000-0000-0000-0000000000f1/rotate-hmac \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"

Відповідь містить новий webhook_hmac_secret (показаний лише раз); старий діє ще 48 годин.

Надішліть повідомлення webhook повторно

curl -X POST https://qamera.ai/api/v1/plugin/webhooks/00000000-0000-0000-0000-0000000000d1/replay \
  -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"

Типові помилки

HTTPКодКоли
401unauthorizedВідсутній, хибний або відкликаний ключ
403forbiddenКлюч не має потрібного дозволу
409idempotency_conflictТой самий Idempotency-Key, інше body
409job_not_completedrefresh-url/оцінка до завершення завдання
409job_not_cancelableСкасування після завершення
422packshot_not_approvedПродукт без прийнятого пакшота
402quota_exceededОбліковий запис без кредитів
429rate_limit_exceededЛіміт запитів вичерпано; дотримуйтесь Retry-After
503—Доступ beta ще не ввімкнено для облікового запису

Повний перелік: перелік помилок.