SGSoundGuard
API

Errores

Códigos estables, formato uniforme y mapeo a HTTP.

Formato uniforme

Cualquier respuesta no-2xx devuelve este shape:

{
  "error": {
    "code": "INVALID_AUDIO_FORMAT",
    "message": "Audio format must be one of: wav, mp3, ogg",
    "request_id": "8e7c2a14-9f1b-4d2e-bc11-8a0e5d4f7c9e"
  }
}
CampoTipoDescripción
error.codestringCódigo estable, screaming snake case. Útil para switch en el cliente.
error.messagestringMensaje en inglés, listo para log. El frontend NO lo muestra al usuario tal cual; mapea por code a un mensaje en español.
error.request_idstringUUID v4 para correlacionar con CloudWatch.

Tabla de códigos

HTTPcodeCuándo
400MISSING_FIELDFalta audio_base64 o format en el body.
400INVALID_AUDIO_FORMATformat no es wav, mp3 ni ogg.
400INVALID_BASE64audio_base64 no decodifica.
400AUDIO_TOO_LONGEl clip excede 30 segundos.
413PAYLOAD_TOO_LARGEEl body decodificado excede ~6 MB (límite de Lambda síncrono).
502EMBEDDING_FAILEDBedrock devolvió error o timeout.
502INDEX_QUERY_FAILEDS3 Vectors devolvió error o timeout.
500INTERNAL_ERRORCualquier otro fallo. Detalle solo en CloudWatch.

Manejo recomendado en cliente

try {
  const data = await classify(blob);
  renderPrediction(data);
} catch (err) {
  switch (err.code) {
    case 'AUDIO_TOO_LONG':
      toast('Tu audio dura más de 30 segundos. Recórtalo y vuelve a intentar.');
      break;
    case 'PAYLOAD_TOO_LARGE':
      toast('El archivo pesa más de 5 MB. Comprímelo o usa un clip más corto.');
      break;
    case 'EMBEDDING_FAILED':
    case 'INDEX_QUERY_FAILED':
      toast('Servicio temporalmente no disponible. Inténtalo en unos segundos.');
      break;
    default:
      toast('Algo salió mal. Si persiste, comparte el request_id.');
  }
}

On this page