Przykłady curl
Ściąga z gotowymi wywołaniami curl dla każdego endpointu API integracji wtyczek.
To jest ściąga — samo wywołanie, bez omówienia. Przewodniki krok po kroku, z odpowiedziami i obsługą błędów, znajdziesz w głównych procesach.
Zamień mk_live_… na klucz API Twojej instalacji. Bazowy adres to https://qamera.ai.
/me
curl https://qamera.ai/api/v1/plugin/me \ -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
Wgraj plik
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"
Zarejestruj zdjęcie źródłowe
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" }
]
}'
Zarejestruj packshot (zaakceptowany od razu)
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" }
]
}'
Prześlij sesję (jeden produkt × 4 zdjęcia)
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-preview"
}
],
"external_metadata": { "sku": "SKU-001" }
}'
Bez packshot_asset_id sesja używa najnowszego zaakceptowanego packshota produktu. Produkt bez zaakceptowanego packshota → 422 packshot_not_approved (samouczek).
Zamów propozycje packshota
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"
}
]
}'
Prześlij 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-preview" }
]
},
{
"session_config": { "aspect_ratio": "9:16" },
"subjects": [
{ "product_label": "B", "product_ref": "SKU-B", "images_count": 4, "ai_model": "google/gemini-3-pro-image-preview" }
]
}
]
}'
Limity: 100 sesji i 5000 zdjęć łącznie. Odpowiedź: HTTP 207 z wynikiem per sesja (samouczek).
Sprawdź zadanie
curl https://qamera.ai/api/v1/plugin/jobs/00000000-0000-0000-0000-0000000000a1 \ -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
Lista zadań (ostatnie 25 ukończonych)
curl "https://qamera.ai/api/v1/plugin/jobs?status=completed&limit=25" \ -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
Odśwież adresy pobrania
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"
Anuluj oczekujące zadanie
curl -X DELETE https://qamera.ai/api/v1/plugin/jobs/00000000-0000-0000-0000-0000000000a1 \ -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
Zaakceptuj lub odrzuć ukończone zadanie
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"
Uwaga: dla zadania packshot akceptacja zatwierdza packshot produktu; dla zadania photo_shoot to tylko informacja zwrotna (szczegóły).
Pobierz pełną sesję (zamówienie)
curl https://qamera.ai/api/v1/plugin/orders/00000000-0000-0000-0000-000000000099 \ -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
Sklonuj sesję
# 1:1 — te same produkty i 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: clone-99-runda2" \
-H "Content-Type: application/json" \
-d '{}'
# inna liczba zdjęć per produkt
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 jest przy klonowaniu obowiązkowy (samouczek).
Lista stylów (presetów)
curl https://qamera.ai/api/v1/plugin/presets \ -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
Dane katalogowe
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"
Wymień sekret 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"
Odpowiedź zawiera nowy webhook_hmac_secret (pokazany tylko raz); stary działa jeszcze 48 godzin.
Wyślij ponownie powiadomienie 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"
Typowe błędy
| HTTP | Kod | Kiedy |
|---|---|---|
401 | unauthorized | Brakujący, błędny lub odwołany klucz |
403 | forbidden | Klucz nie ma wymaganego uprawnienia |
409 | idempotency_conflict | Ten sam Idempotency-Key, inne body |
409 | job_not_completed | refresh-url/ocena przed ukończeniem zadania |
409 | job_not_cancelable | Anulowanie po ukończeniu |
422 | packshot_not_approved | Produkt bez zaakceptowanego packshota |
402 | quota_exceeded | Konto bez kredytów |
429 | rate_limit_exceeded | Limit zapytań wyczerpany; honoruj Retry-After |
503 | — | Dostęp beta nie został jeszcze włączony dla konta |
Pełna lista: lista błędów.