DokumentacjaObsługa błędów

Obsługa błędów

Sprawdź format odpowiedzi z błędem, wszystkie kody i zasady ponawiania requestów.

API może odrzucić request od razu albo przyjąć transkrypcję, która później się nie uda. To dwa różne przypadki. W drugim z nich pole status transkrypcji ma wartość failed.

Jak wygląda odpowiedź z błędem

Endpointy /v1 zwracają błędy requestów w takim formacie:

{
  "error": {
    "code": "insufficient_minutes",
    "message": "Not enough minutes",
    "retryable": false,
    "action_url": "https://transcript1.com/dashboard/billing",
    "minutes_needed": 20,
    "minutes_remaining": 3
  }
}

Logikę obsługi błędów oprzyj na code. Treść message pokazuj użytkownikowi, ale nie uzależniaj od niej działania aplikacji, bo może się zmienić. Jeśli retryable ma wartość true, ten sam request ma szansę udać się później.

Zależnie od błędu obok retryable mogą pojawić się dodatkowe pola:

PoleKiedy je dostanieszCo zawiera
action_urlinsufficient_minutesLink do zakupu planu lub doładowania.
minutes_needed, minutes_remaininginsufficient_minutesLiczbę minut potrzebnych do transkrypcji (null, jeśli jeszcze jej nie znamy) oraz dostępną pulę minut.
supported_platformsunsupported_platformListę obsługiwanych platform: ["youtube", "x", "tiktok", "instagram", "facebook", "bluesky", "twitch", "dailymotion", "pinterest", "linkedin", "snapchat"].
missing_chunksupload_incompleteIndeksy części pliku, których brakuje na serwerze.
max_bytesmedia_too_largeTwój limit rozmiaru pliku w bajtach.
paramsinvalid_requestPrzy błędach walidacji body i query: obiekt, którego klucze wskazują pola, a wartości opisują, co trzeba poprawić.

Gdy API odrzuci request

Kod HTTPcodePonowić bez zmian?Co sprawdzić
400, 422invalid_requestNieBrakuje pola lub parametru, ma on błędną wartość albo body nie jest poprawnym JSON-em. Niedozwolone połączenia opcji to m.in. diarize z source: "captions" i reuse_recent z webhook_url.
422invalid_urlNieLink musi prowadzić do nagrania z YouTube, X, TikToka, Instagrama, Facebooka, Bluesky lub innej platformy z listy obsługiwanych linków. Sprawdź też, czy platform zgadza się z linkiem.
422unsupported_platformNieWartość platform nie znajduje się na liście obsługiwanych platform.
422unsupported_mediaNieRozszerzenie wysłanego pliku nie jest obsługiwane.
401unauthorizedNieBrakuje danych uwierzytelniających albo są one błędne, wygasły lub je unieważniono. Ten kod oznacza też błędny lub wygasły token uploadu.
403insufficient_scopeNieTokenowi OAuth brakuje uprawnienia transcriptions:read lub transcriptions:write.
403email_not_verifiedNieNajpierw potwierdź e-mail, potem zleć transkrypcję.
402insufficient_minutesNieMasz 0 minut lub za mało na to nagranie.
402no_active_planNieDoładowanie wymaga aktywnego płatnego planu. Ten błąd zwraca endpoint rozliczeń w panelu, nie endpointy transkrypcji.
404not_foundNieNie ma takiej transkrypcji lub należy ona do innego zespołu.
409upload_incompleteNieDoślij brakujące części pliku i jeszcze raz zakończ upload.
409invalid_stateNieTranskrypcja nie czeka na upload. Nie możesz już dosyłać części ani kończyć uploadu.
409idempotency_conflictNiePod tym Idempotency-Key wysłano już request z innymi parametrami.
413media_too_largeNiePrzekroczono limit rozmiaru pliku. Sprawdź zasady wysyłania plików.
413invalid_requestNieJSON w body przekracza 1 MB. Dla zbyt dużych plików kodem błędu jest media_too_large.
429rate_limitedTakPrzekraczasz liczbę requestów na minutę. Odczekaj tyle sekund, ile wskazuje Retry-After.
429too_many_active_jobsTakMasz za dużo trwających transkrypcji lub otwartych uploadów. Odczekaj tyle sekund, ile wskazuje Retry-After.
500internal_errorTakBłąd po naszej stronie. Odczekaj chwilę i spróbuj ponownie.
503service_unavailableTakAPI transcript1 jest chwilowo niedostępne. Ponów request za chwilę.

Jeśli przeglądarka używa cookie logowania zamiast tokenu bearer, sprawdzamy też origin. Request z innej strony dostanie 403 forbidden_origin. To sprawdzanie nie dotyczy wywołań API z nagłówkiem Authorization.

Przy każdej odpowiedzi 429 nagłówek Retry-After podaje czas oczekiwania w sekundach. Konkretne limity znajdziesz w dokumentacji rozliczeń i limitów.

Kiedy powtórzyć request

  • Ponów request bez zmian tylko jeśli retryable ma wartość true. Dotyczy to rate_limited, too_many_active_jobs, internal_error i service_unavailable. Jeśli jest nagłówek Retry-After, odczekaj wskazany czas. Jeśli go nie ma, wydłużaj przerwy między próbami.
  • Przy ponawianiu POST /v1/transcriptions zachowaj ten sam Idempotency-Key. Dzięki temu nie zapłacisz drugi raz, jeśli pierwsza próba jednak się udała.
  • Przy pozostałych kodach najpierw popraw request, dopiero potem wyślij go ponownie.

Gdy transkrypcja się nie uda

Błąd może pojawić się już po odpowiedzi API. Jeśli status zmieni się na failed, w obiekcie transkrypcji znajdziesz error: { "code", "message" }. Sprawdzaj pole error podczas odpytywania API lub w webhooku transcription.failed.

error.codeCo się stałoCzy próbować ponownie?
media_unavailableNagranie nie istnieje lub nie da się już do niego dotrzeć.Nie. Sprawdź link.
media_privateNagranie jest prywatne.Nie. Podaj publiczny post albo nagranie z YouTube o widoczności publicznej lub niepublicznej (unlisted).
login_requiredBez logowania platforma nie udostępni nagrania.Nie. Traktujemy ten błąd jako trwały i nie ponawiamy transkrypcji.
no_audioW filmie nie ma ścieżki audio.Nie. Traktujemy ten błąd jako trwały i nie ponawiamy transkrypcji.
age_restrictedNagranie ma ograniczenie wiekowe.Nie. Zamiast linku wyślij plik.
live_streamTransmisja jeszcze trwa lub dopiero ma się zacząć.Poczekaj, aż transmisja się skończy.
no_captionsWybrano source o wartości captions, ale nie ma napisów, z których można skorzystać.Zmień ustawienie na source: "auto" lub "stt".
media_too_longNagranie przekracza limit 5 godzin dla transkrypcji AI.Nie. Najpierw podziel nagranie.
unsupported_mediaPliku nie da się odczytać lub brakuje w nim ścieżki audio.Nie. Wyślij plik w obsługiwanym formacie.
no_speechNie wykryto mowy.Nie.
unsupported_languageNie obsługujemy języka tego nagrania.Nie. Podaj obsługiwany kod w language lub ustaw "auto".
insufficient_minutesZabrakło minut w momencie rozliczania transkrypcji.Tak, gdy doładujesz minuty.
fetch_failedMimo kilku prób nie udało się pobrać nagrania.Tak, spróbuj później.
transcription_failedTranskrypcja AI nie powiodła się mimo kilku prób.Tak, spróbuj później.

Jeśli transkrypcja się nie uda albo ją anulujesz, nic nie płacisz. Jeśli zdążyliśmy pobrać minuty, zwrócimy je na konto.

Ostatnia aktualizacja 19 października 2026