Zamówienia

Śledzenie zleceń generowania, odpytywanie o status oraz odczyt wyników poszczególnych zadań, w tym adresów plików i kategorii błędów.

Każde zlecenie generowania tworzy zamówienie. Zamówienie grupuje jedno lub więcej zadań — po jednym na generowany zasób. Te endpointy pozwalają śledzić tę pracę aż do zakończenia.

Oba wymagają scope'u content.read.

GET /api/external/orders

Lista ostatnich zamówień konta, od najnowszych. Bez rozbicia na zadania — od tego jest endpoint szczegółów.

Parametry zapytania

ParametrTypOpis
statusstringFiltrowanie po statusie zamówienia.
limitnumberIle zwrócić. Ograniczone do [1, 50], domyślnie 20.
sincestringZnacznik czasu ISO 8601; tylko zamówienia utworzone później.

Odpowiedź

{
  "orders": [
    {
      "orderId": "131a2aec-...",
      "status": "in_progress",
      "jobType": "video",
      "provider": "pollo",
      "model": "mixed",
      "jobsTotal": 2,
      "jobsCompleted": 1,
      "jobsFailed": 0,
      "createdAt": "2026-05-06T07:42:52.668Z",
      "updatedAt": "2026-05-06T07:43:18.016Z"
    }
  ],
  "limit": 20,
  "returned": 1
}

GET /api/external/orders/:id

Jedno zamówienie z pełnym rozbiciem na zadania.

Parametry ścieżki

ParametrTypOpis
idstringUUID zamówienia zwrócony przy jego utworzeniu.

Odpowiedź

{
  "orderId": "131a2aec-...",
  "status": "completed",
  "jobType": "video",
  "provider": "pollo",
  "model": "mixed",
  "jobsTotal": 2,
  "jobsCompleted": 2,
  "jobsFailed": 0,
  "createdAt": "...",
  "updatedAt": "...",
  "jobs": [
    {
      "jobId": "...",
      "provider": "pollo",
      "model": "kling-2.6",
      "status": "completed",
      "attemptCount": 2,
      "outputUrl": "https://storage.../video.mp4",
      "errorCategory": null,
      "errorHint": null,
      "startedAt": "...",
      "completedAt": "..."
    }
  ]
}

Pola zadania

PoleOpis
statuspending, in_progress, completed, failed, retry_pending, cancelled, expired.
attemptCountIle razy zadanie było uruchamiane. Wartość powyżej 1 oznacza ponowienie.
outputUrlWygenerowany zasób. Wypełniony tylko dla zadań completed, w pozostałych null.
errorCategoryDlaczego zadanie się nie powiodło — zobacz Kategorie niepowodzeń zadań. null, jeśli zadanie nie zawiodło.
errorHintJedno zdanie wyjaśniające kategorię. Wyświetl je człowiekowi, nie parsuj.

Odpytywanie o status

Zamówienia kończą się asynchronicznie. Odpytuj endpoint szczegółów, dopóki status nie będzie completed, failed lub cancelled.

Dwie rzeczy warte uwagi, zanim napiszesz pętlę:

Nieudane zadanie nie zawsze jest ostateczne. TRANSIENT_INFRA, RATE_LIMIT i PROVIDER_CAPACITY są ponawiane automatycznie, więc zadanie może zgłosić jedną z tych kategorii i mimo to zakończyć się powodzeniem przy kolejnej próbie. Patrz na status i attemptCount, nie na samą obecność errorCategory.

Częściowe ukończenie jest normalne. Zamówienie z wieloma zadaniami może zakończyć się tak, że część jest completed, a część failed. Czytaj jobsCompleted i jobsFailed zamiast zakładać, że zamówienie jest „wszystko albo nic".

Pamiętaj o limicie 60 zapytań na minutę — zobacz Limity zapytań. Odpytywanie co kilka sekund na zamówienie w zupełności wystarcza; generowanie trwa znacznie dłużej.

Błędy

KodPrzyczyna
400id nie jest poprawnym UUID albo parametr zapytania jest nieprawidłowy.
401Brak klucza API, klucz nieprawidłowy lub odwołany.
403Klucz nie ma scope'u content.read.
404Zamówienie nie istnieje albo należy do innego konta. Te przypadki są świadomie nierozróżnialne.
429Przekroczony limit zapytań.