Ponowna sesja

Jak sklonować sesję — ta sama konfiguracja, opcjonalnie inna liczba zdjęć na produkt, z wymaganym nagłówkiem Idempotency-Key.

Co osiągniesz

Sprzedawca chce więcej zdjęć w tym samym stylu — albo poprzednia runda nie do końca mu się podobała. W tym samouczku sklonujesz istniejącą sesję jednym wywołaniem: ta sama konfiguracja (styl, sceneria, modelka, proporcje), te same produkty, opcjonalnie inna liczba zdjęć na produkt.

Wymagania wstępne

  • Klucz API instalacji (jak go zdobyć) z uprawnieniami plugin.jobs:create, plugin.jobs:read.
  • order_id sesji, którą chcesz powtórzyć (z odpowiedzi POST /jobs albo z GET /jobs/{id} — pole order_id).

W przykładach zamień mk_live_… na swój klucz. Bazowy adres to https://qamera.ai.

Przebieg

1. GET /orders/{id}         → (opcjonalnie) obejrzyj sesję źródłową
2. POST /orders/{id}/clone  → nowa sesja (Idempotency-Key wymagany)
   ├─ puste body            → te same produkty i liczby zdjęć
   └─ body z subjects[]     → nowe liczby zdjęć per produkt
3. Odbierz wyniki jak zwykle

Kroki

1. (Opcjonalnie) Obejrzyj sesję źródłową

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

Odpowiedź zawiera session_config, listę produktów z licznikami zadań (jobs_total, jobs_completed, jobs_failed), wygenerowane zdjęcia oraz zużyte kredyty (summary.credits_consumed). Przyda się, by pokazać sprzedawcy, co dokładnie zostanie powtórzone.

2. Sklonuj sesję

Nagłówek Idempotency-Key jest przy klonowaniu obowiązkowy — chroni przed podwójnym naliczeniem kredytów, gdy ponowisz żądanie po time-oucie. Wywołanie bez niego zwraca 400 invalid_input.

Puste body powtarza sesję 1:1 — te same produkty, te same liczby zdjęć:

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: sklep1-klon-99-runda2" \
  -H "Content-Type: application/json" \
  -d '{}'

Chcesz zmienić liczbę zdjęć albo powtórzyć tylko część produktów? Podaj subjects[] — to pełne zastąpienie listy: klonowane są wyłącznie produkty z listy, każdy z nową images_count. Produkty pominięte na liście nie wchodzą do nowej sesji.

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: sklep1-klon-99-runda3" \
  -H "Content-Type: application/json" \
  -d '{
    "subjects": [
      { "product_ref": "sklep1:produkt-7", "images_count": 8 }
    ]
  }'

Odpowiedź (HTTP 201) to pełna nowa sesja — z nowym order_id:

{
  "order_id": "00000000-0000-0000-0000-000000000150",
  "status": "pending",
  "session_config": { "aspect_ratio": "4:5", "model_id": null, "scenery_id": null, "preset_id": null },
  "subjects": [
    {
      "product_ref": "sklep1:produkt-7",
      "product_label": "Kubek ceramiczny 300 ml",
      "packshot_asset_id": "…",
      "jobs_total": 8,
      "jobs_completed": 0,
      "jobs_failed": 0,
      "outputs": []
    }
  ],
  "summary": { "credits_consumed": 80, "credits_refunded": 0 },
  "external_metadata": null,
  "created_at": "2026-06-03T09:00:00.000Z",
  "updated_at": "2026-06-03T09:00:00.000Z"
}

Zapisz nowy order_id. Trzy rzeczy, o których warto pamiętać:

  • Oceny nie przechodzą — klon to świeży start; zdjęcia nowej rundy oceniasz od zera.
  • Kredyty naliczane są od nowa — za nową sesję płaci się jak za każdą inną (402 quota_exceeded, gdy ich zabraknie).
  • Klon klonuje się normalnie — możesz sklonować sesję, która sama jest klonem.

3. Odbierz wyniki

Dokładnie jak przy zwykłej sesji — webhooki albo odpytywanie. Zobacz odbieranie wyników.

Częste błędy

BłądDlaczego wystąpiłCo zrobić
400 invalid_inputBrak nagłówka Idempotency-KeyDodaj nagłówek z unikalną wartością dla tej rundy — szczegóły
409 idempotency_conflictTen sam Idempotency-Key użyty z innym bodyKażda runda klonowania potrzebuje własnego klucza — szczegóły
404 not_foundorder_id nie istnieje albo należy do innej instalacjiSprawdź order_id; klonować można tylko własne sesje — szczegóły
402 quota_exceededZa mało kredytów na nową rundęDoładuj kredyty; stan sprawdzisz w GET /meszczegóły

Co dalej