Ir al contenido

Códigos de estado y errores

La API de Uspeech sigue la semántica REST convencional. El código de estado HTTP es la fuente de verdad sobre si una petición tuvo éxito; el cuerpo de la respuesta añade los detalles.


CódigoSignificado
200 OKLectura (GET) o acción correcta con cuerpo de respuesta.
201 CreatedSe creó un nuevo recurso (normalmente al subir un archivo).
202 AcceptedLa petición se aceptó y el trabajo se ha encolado de forma asíncrona.
204 No ContentAcción correcta sin cuerpo que devolver.
400 Bad RequestEl cuerpo o los parámetros de la petición no son válidos. La respuesta indica qué campos están mal.
401 UnauthorizedNo se enviaron credenciales. Añade el encabezado Authorization: Api-Key ….
403 ForbiddenLas credenciales faltan, están mal formadas, han sido revocadas, el usuario está inactivo o no tiene acceso al recurso.
404 Not FoundEl recurso no existe — o existe pero no es visible para quien llama.
429 Too Many RequestsSe superó el límite de tasa. Reintenta tras un breve retraso.
5xxError inesperado del servidor. Es seguro reintentar lecturas idempotentes; verifica el estado antes de reintentar escrituras.

DRF devuelve los errores como JSON. La forma exacta depende del fallo:

Error de validación (por campo):

{
"project": ["This field is required."],
"file": ["No file was submitted."]
}

Error genérico (auth, no encontrado, etc.):

{
"detail": "Authentication credentials were not provided."
}

Error de suscripción / uso:

{
"detail": "Free trial limit exceeded.",
"reason": "free_trial_exceeded"
}

Comprueba siempre primero el código HTTP; usa el cuerpo para los detalles legibles.


Motivos de fallo específicos de transcripción

Sección titulada «Motivos de fallo específicos de transcripción»

Un trabajo de transcripción puede completar el ciclo de la petición (HTTP 201 en la subida) y aun así fallar de forma asíncrona en segundo plano. Cuando eso ocurre, el status del registro de transcripción pasa a failed y el campo error_reason indica el motivo:

error_reasonCuándo se establece
audio_too_shortEl audio está por debajo de la duración mínima necesaria para transcribir — normalmente grabaciones vacías o que solo contienen un pitido.
hallucinated_transcriptSaltó una salvaguarda: el modelo devolvió texto cuyas marcas de tiempo se extienden mucho más allá de la duración real del audio, lo que suele indicar una transcripción fabricada.

Si error_reason está vacío en una transcripción fallida, la causa está más arriba (almacenamiento, API del modelo, etc.) — revisa los logs del servidor o contacta con soporte.

💡 Consejo: al consultar GET /api/files/{id}/, considera failed como estado terminal. No reintentes a ciegas — para audio_too_short el archivo no tiene nada que transcribir; para hallucinated_transcript, volver a subir el mismo audio probablemente dará el mismo resultado.


Algunos errores comunes devuelven 401 o 403:

  • El encabezado debe ser exactamente Authorization: Api-Key <key> (con el espacio después de Api-Key).
  • La clave en texto plano es <prefix>.<secret> — debes enviar ambas partes.
  • Una clave revocada devuelve 403 aunque antes fuera válida.
  • Un usuario inactivo (is_active = False) no puede usar la clave.

Consulta Autenticación para la configuración completa.