Przykłady curl
Gotowe do skopiowania wywołania curl dla każdego endpointu API integracji wtyczek — happy path i typowe błędy.
Zamień mk_live_… na klucz API Twojej instalacji. Bazowy URL to https://app.qamera.ai.
/me
curl https://app.qamera.ai/api/v1/plugin/me \ -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
Prześlij zadanie
curl -X POST https://app.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 '{
"job_type": "packshot",
"provider": "gemini",
"model": "nano-banana",
"unit_cost": 1,
"external_metadata": { "sku": "SKU-001" }
}'
Replay zwraca oryginalne zadanie:
# Ten sam klucz + to samo body → 200 z tym samym id # Ten sam klucz + inne body → 409 idempotency_conflict
Prześlij batch
curl -X POST https://app.qamera.ai/api/v1/plugin/jobs/batch \
-H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy" \
-H "Content-Type: application/json" \
-d '{
"jobs": [
{ "job_type": "packshot", "provider": "gemini", "model": "nano-banana", "unit_cost": 1, "external_metadata": { "sku": "A" } },
{ "job_type": "packshot", "provider": "gemini", "model": "nano-banana", "unit_cost": 1, "external_metadata": { "sku": "B" } }
]
}'
Sprawdź zadanie
curl https://app.qamera.ai/api/v1/plugin/jobs/job_01h82k... \ -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
Lista zadań (ostatnie 25 ukończonych)
curl "https://app.qamera.ai/api/v1/plugin/jobs?status=completed&limit=25" \ -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
Odśwież output URL
curl -X POST https://app.qamera.ai/api/v1/plugin/jobs/job_01h82k.../refresh-url \ -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
Anuluj oczekujące zadanie
curl -X DELETE https://app.qamera.ai/api/v1/plugin/jobs/job_01h82k... \ -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
Wybij asset upload URL
curl -X POST https://app.qamera.ai/api/v1/plugin/assets/upload \
-H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy" \
-H "Content-Type: application/json" \
-d '{ "filename": "shoe.jpg", "mime_type": "image/jpeg", "size_bytes": 482310 }'
Następnie wyślij bajty:
curl -X PUT "$PRESIGNED_URL" --upload-file shoe.jpg \ -H "Content-Type: image/jpeg"
Lista presetów
curl https://app.qamera.ai/api/v1/plugin/presets \ -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
Obróć sekret HMAC
curl -X POST https://app.qamera.ai/api/v1/plugin/installations/inst_…/rotate-hmac \ -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
Response zawiera webhook_hmac_secret — zapisz go i odrzuć stary po 48h.
Powtórz delivery webhook
curl -X POST https://app.qamera.ai/api/v1/plugin/webhooks/del_…/replay \ -H "X-Api-Key: mk_live_xxxxxxxx.yyyyyyyy"
Typowe błędy
| HTTP | code | Kiedy |
|---|---|---|
401 | unauthorized | Brakujący/błędny/odwołany klucz |
403 | forbidden | Klucz nie ma wymaganego scope |
409 | idempotency_conflict | Ten sam Idempotency-Key, inne body |
409 | job_not_completed | refresh-url wywołane przed ukończeniem |
409 | job_not_cancelable | Cancel po ukończeniu |
422 | quota_exceeded | Konto bez kredytów |
429 | rate_limit_exceeded | Budżet na klucz wyczerpany; honoruj Retry-After |
503 | internal_error (z 503) | Beta gate zamknięty dla konta |