DocumentatieFouten afhandelen

Fouten afhandelen

Herken fouten aan hun code, lees het foutobject en bepaal wanneer je een request opnieuw kunt sturen.

Een request kan meteen worden geweigerd. Een transcriptie kan ook pas later mislukken, nadat de API die al heeft geaccepteerd. In dat geval staat status op failed. Houd deze twee situaties uit elkaar bij het afhandelen van fouten.

Zo ziet een foutresponse eruit

Als een /v1-request mislukt, krijg je dit vaste formaat:

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

Laat je code reageren op code, niet op de tekst van message. Die tekst is voor de gebruiker en kan veranderen. Staat retryable op true, dan kan hetzelfde request later wel slagen.

Afhankelijk van de fout krijg je naast retryable extra velden:

VeldFoutcodeWat staat erin?
action_urlinsufficient_minutesDe link om een abonnement te nemen of minuten bij te kopen.
minutes_needed, minutes_remaininginsufficient_minutesHet aantal benodigde minuten en je huidige saldo. Het benodigde aantal is null zolang de duur nog onbekend is.
supported_platformsunsupported_platformDe toegestane platforms: ["youtube", "x", "tiktok", "instagram", "facebook", "bluesky", "twitch", "dailymotion", "pinterest", "linkedin", "snapchat"].
missing_chunksupload_incompleteDe indexen van de chunks die de server nog mist.
max_bytesmedia_too_largeJouw maximale bestandsgrootte in bytes.
paramsinvalid_requestBij ongeldige body- of queryvelden een object dat per veld uitlegt wat je moet aanpassen.

Wanneer de API je request weigert

HTTP-statuscodeOpnieuw proberen?Oorzaak
400, 422invalid_requestNeeEen parameter of bodyveld ontbreekt of is ongeldig. Dit geldt ook voor ongeldige JSON en combinaties zoals diarize met source: "captions" of reuse_recent met webhook_url.
422invalid_urlNeeDe link is niet geldig of komt niet overeen met platform. Gebruik YouTube, X, TikTok, Instagram, Facebook, Bluesky of een ander platform uit Bronnen en instellingen.
422unsupported_platformNeeDe opgegeven waarde voor platform is niet toegestaan.
422unsupported_mediaNeeDe bestandsextensie wordt niet ondersteund.
401unauthorizedNeeJe API-sleutel of token ontbreekt, is ongeldig, verlopen of ingetrokken. Ook een ongeldig of verlopen uploadtoken geeft deze fout.
403insufficient_scopeNeeHet OAuth-token heeft geen transcriptions:read of transcriptions:write waar die scope nodig is.
403email_not_verifiedNeeJe moet eerst je e-mailadres bevestigen om transcripties te kunnen starten.
402insufficient_minutesNeeJe beschikbare saldo is 0 of je hebt te weinig minuten voor deze transcriptie.
402no_active_planNeeJe wilt minuten bijkopen, maar hebt geen actief betaald abonnement. Alleen het billing-endpoint van het dashboard geeft deze fout, niet de transcriptie-endpoints.
404not_foundNeeDe transcriptie bestaat niet of is van een ander team.
409upload_incompleteNeeDe server mist nog chunks. Verstuur die en rond de upload daarna opnieuw af.
409invalid_stateNeeDe transcriptie wacht niet meer op een upload. Je kunt geen chunks meer sturen en de upload niet meer afronden.
409idempotency_conflictNeeJe hebt deze Idempotency-Key eerder met andere parameters gebruikt.
413media_too_largeNeeHet bestand overschrijdt je uploadlimiet. Bekijk Bestanden uploaden.
413invalid_requestNeeDe JSON-body is groter dan 1 MB. Bij te grote bestanden krijg je media_too_large.
429rate_limitedJaJe stuurt te veel requests per minuut. Wacht het aantal seconden uit Retry-After.
429too_many_active_jobsJaEr lopen te veel transcripties of er staan te veel uploads open. Wacht het aantal seconden uit Retry-After.
500internal_errorJaEr gaat iets mis bij transcript1. Probeer het na een korte pauze opnieuw.
503service_unavailableJatranscript1 is even niet beschikbaar. Probeer het na een korte pauze opnieuw.

Bij browserrequests met een inlogcookie controleren we ook vanaf welke site het request komt. Een andere site krijgt 403 forbidden_origin. Voor API-requests met een bearer-token in de Authorization-header geldt die controle niet.

In elke 429-response staat Retry-After: het aantal seconden dat je moet wachten. De limieten zelf vind je bij Minuten, abonnementen en limieten.

Wanneer stuur je een request opnieuw?

  • Herhaal alleen requests met retryable op true: rate_limited, too_many_active_jobs, internal_error en service_unavailable. Houd de wachttijd uit Retry-After aan. Ontbreekt die header, wacht dan bij elke poging langer.
  • Herhaal je POST /v1/transcriptions, gebruik dan dezelfde Idempotency-Key-header. Zo betaal je niet dubbel als het eerste request toch is gelukt.
  • Pas bij alle andere codes eerst je request aan voordat je het nog eens verstuurt.

Als een transcriptie later mislukt

Ook na een geslaagd request kan de transcriptie nog mislukken. Dan krijg je status op failed en error: { "code", "message" } in het object. Controleer error dus ook tijdens het pollen of bij een webhook van het type transcription.failed.

error.codeWat is er mis?Wat kun je doen?
media_unavailableDe video bestaat niet of is niet meer beschikbaar.Niet opnieuw proberen. Controleer de URL.
media_privateDe video is afgeschermd.Gebruik een openbare post of een openbare of verborgen YouTube-video. Hetzelfde request herhalen helpt niet.
login_requiredJe moet op het platform ingelogd zijn om de video te bekijken.Niet opnieuw proberen. Deze fout is definitief; we proberen het niet automatisch opnieuw.
no_audioEr zit geen audiospoor in de video.Niet opnieuw proberen. Deze fout is definitief; we proberen het niet automatisch opnieuw.
age_restrictedDe video heeft een leeftijdsbeperking.Hetzelfde request herhalen helpt niet. Upload het bestand.
live_streamDe uitzending loopt nog of is nog niet begonnen.Probeer het na afloop van de uitzending.
no_captionsJe zette source op captions, maar er is geen bruikbaar ondertitelspoor.Kies source: "auto" of "stt".
media_too_longDe opname duurt langer dan de 5 uur die speech-to-text aankan.Splits het bestand. Hetzelfde request herhalen helpt niet.
unsupported_mediaHet bestand is niet leesbaar of heeft geen audiospoor.Stuur een ondersteund bestand; herhaal niet hetzelfde request.
no_speechGeen spraak gedetecteerd.Niet opnieuw proberen.
unsupported_languageWe ondersteunen de taal van deze opname niet.Kies voor language een ondersteunde code of "auto"; probeer niet opnieuw met dezelfde instelling.
insufficient_minutesJe saldo was op voordat we de minuten konden afschrijven.Koop eerst minuten bij en probeer het dan opnieuw.
fetch_failedOok na meerdere pogingen konden we de opname niet ophalen.Probeer het later opnieuw.
transcription_failedOok na meerdere pogingen lukte speech-to-text niet.Probeer het later opnieuw.

Mislukt een transcriptie of annuleer je die, dan betaal je niets. Hadden we al minuten afgeschreven, dan krijg je die terug.

Laatst bijgewerkt 19 oktober 2026