DocumentaçãoErros e novas tentativas

Erros e novas tentativas

Entenda os códigos da API, diferencie erros de chamada de falhas na transcrição e saiba quando tentar novamente.

Uma chamada pode falhar antes de criar a transcrição: nesse caso, a API recusa a requisição. Também pode aceitar a transcrição e encontrar um problema depois, durante o processamento. Nesse segundo caso, o objeto da transcrição fica com status igual a failed.

Como ler a resposta de erro

Quando uma chamada a /v1 falha, você recebe o erro neste formato:

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

No código da sua aplicação, use code para decidir o que fazer. O campo message serve para exibir uma explicação ao usuário e pode mudar de texto. Se retryable for true, vale repetir a mesma chamada mais tarde.

Dependendo do erro, a resposta inclui outros campos junto de retryable:

CampoCódigo associadoO que informa
action_urlinsufficient_minutesLink para contratar um plano ou comprar uma recarga.
minutes_needed, minutes_remaininginsufficient_minutesQuantos minutos a chamada precisa consumir e quantos você tem. Se a duração ainda não for conhecida, o primeiro valor será null.
supported_platformsunsupported_platformValores de plataforma aceitos: ["youtube", "x", "tiktok", "instagram", "facebook", "bluesky", "twitch", "dailymotion", "pinterest", "linkedin", "snapchat"].
missing_chunksupload_incompleteÍndices das partes que ainda faltam no upload.
max_bytesmedia_too_largeTamanho máximo de arquivo permitido na sua conta, em bytes.
paramsinvalid_requestObjeto com os campos inválidos do corpo ou da query string e a explicação do problema em cada um.

Quando a API recusa a chamada

Status HTTPcodePode repetir?O que aconteceu
400, 422invalid_requestNãoFalta um parâmetro ou há um campo inválido no corpo. Isso inclui combinar diarize com source: "captions", combinar reuse_recent com webhook_url ou enviar um JSON inválido.
422invalid_urlNãoO link não foi aceito ou platform não corresponde ao endereço. Use YouTube, X, TikTok, Instagram, Facebook, Bluesky ou outra plataforma de Links aceitos e opções.
422unsupported_platformNãoO valor de platform não está entre as plataformas aceitas.
422unsupported_mediaNãoA extensão do arquivo enviado não está entre as aceitas.
401unauthorizedNãoFalta a credencial, ou ela é inválida, expirou ou foi revogada. Também vale para token de upload inválido ou expirado.
403insufficient_scopeNãoO token OAuth não tem o escopo necessário: transcriptions:read ou transcriptions:write.
403email_not_verifiedNãoVocê precisa confirmar o e-mail antes de criar uma transcrição.
402insufficient_minutesNãoO saldo disponível é 0 ou não cobre a duração da transcrição.
402no_active_planNãoA compra de recarga exige um plano pago ativo. Esse erro vem do endpoint de cobrança do painel, não dos endpoints de transcrição.
404not_foundNãoEssa transcrição não existe ou é de outra equipe.
409upload_incompleteNãoAinda faltam partes do arquivo. Envie o que falta e peça a conclusão do upload novamente.
409invalid_stateNãoA transcrição já saiu da etapa de espera pelo upload. Não é mais possível enviar partes ou concluir o envio.
409idempotency_conflictNãoVocê já usou esse Idempotency-Key com outros parâmetros.
413media_too_largeNãoO tamanho do arquivo ultrapassa o seu limite. Confira Uploads.
413invalid_requestNãoO corpo JSON ultrapassa 1 MB. Para arquivos grandes, o código é media_too_large.
429rate_limitedSimVocê atingiu o limite de chamadas por minuto. Aguarde o número de segundos de Retry-After.
429too_many_active_jobsSimVocê atingiu o limite de transcrições em andamento ou de uploads abertos. Aguarde o número de segundos de Retry-After.
500internal_errorSimTivemos um erro interno. Aguarde um pouco e tente novamente.
503service_unavailableSimO transcript1 está indisponível no momento. Aguarde um pouco e tente novamente.

Quando o navegador usa o cookie de login em vez de uma credencial Bearer, também conferimos a origem da chamada. Se ela vier de outro site, a resposta será 403 forbidden_origin. Essa verificação não afeta chamadas à API com o cabeçalho Authorization.

Toda resposta 429 informa em Retry-After quantos segundos você deve esperar. Os valores de cada plano estão em Planos, minutos e limites.

Quando e como tentar novamente

  • Repita a chamada apenas se retryable for true. Isso vale para rate_limited, too_many_active_jobs, internal_error e service_unavailable. Respeite Retry-After quando vier na resposta. Sem esse cabeçalho, aumente a espera a cada tentativa.
  • Se for repetir POST /v1/transcriptions, mantenha o mesmo Idempotency-Key. Assim você evita outra cobrança caso a primeira chamada tenha funcionado.
  • Nos demais erros, corrija a causa antes de enviar a chamada novamente.

Falhas durante a transcrição

Se o processamento falhar, o objeto fica com status igual a failed e inclui error: { "code", "message" }. Isso pode acontecer depois da resposta à chamada de criação. Leia error nas consultas de status ou no webhook transcription.failed.

error.codeO que aconteceuVale tentar novamente?
media_unavailableO vídeo não existe ou saiu do ar.Não. Confira o link.
media_privateO vídeo é privado.Não. Envie um post público ou um vídeo do YouTube público ou não listado.
login_requiredA plataforma só libera o conteúdo após login.Não. O serviço não repete essa tentativa.
no_audioNão há faixa de áudio no vídeo.Não. O serviço não repete essa tentativa.
age_restrictedO acesso ao vídeo tem restrição de idade.Não pelo link. Envie o arquivo por upload.
live_streamA transmissão está ao vivo ou ainda não começou.Espere a transmissão terminar.
no_captionsVocê escolheu captions em source, mas não há uma faixa de legendas que possa ser usada.Troque para source: "auto" ou "stt".
media_too_longA gravação ultrapassa o limite de 5 horas do speech-to-text.Divida a gravação antes de enviar.
unsupported_mediaNão foi possível ler o arquivo, ou ele não tem faixa de áudio.Envie outro arquivo em um formato aceito.
no_speechNenhuma fala detectada.Não.
unsupported_languageO serviço não aceita o idioma da gravação.Corrija language para um código aceito ou "auto".
insufficient_minutesO saldo acabou antes de cobrarmos a transcrição.Faça uma recarga antes de tentar.
fetch_failedNão conseguimos baixar o áudio ou vídeo, mesmo após várias tentativas.Sim. Tente mais tarde.
transcription_failedA transcrição por speech-to-text falhou após várias tentativas.Sim. Tente mais tarde.

Se a transcrição falhar ou você cancelar, não paga por ela. Se já tivermos descontado os minutos, eles voltam para o seu saldo.

Última atualização 19 de outubro de 2026