Quickstart
Llama al endpoint en menos de un minuto desde curl, JavaScript y Python.
La API es pública, sin auth, durante el MVP. Solo necesitas un clip de audio en formato wav, mp3 u ogg, ≤ 5 MB, ≤ 30 segundos.
Endpoint
POST https://poi8bb5go9.execute-api.us-east-1.amazonaws.com/classify
GET https://poi8bb5go9.execute-api.us-east-1.amazonaws.com/healthcurl
AUDIO_B64=$(base64 -w0 sample.wav)
curl -X POST "https://poi8bb5go9.execute-api.us-east-1.amazonaws.com/classify" \
-H "content-type: application/json" \
-d "{\"audio_base64\":\"$AUDIO_B64\",\"format\":\"wav\",\"filename\":\"sample.wav\"}"fetch (browser / Node)
async function classify(audioBlob) {
const audioBase64 = await blobToBase64(audioBlob);
const format = audioBlob.type.includes('wav') ? 'wav'
: audioBlob.type.includes('mpeg') ? 'mp3'
: 'ogg';
const res = await fetch(
'https://poi8bb5go9.execute-api.us-east-1.amazonaws.com/classify',
{
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({ audio_base64: audioBase64, format }),
},
);
if (!res.ok) throw new Error(JSON.stringify(await res.json()));
return res.json();
}
function blobToBase64(blob) {
return new Promise((resolve, reject) => {
const fr = new FileReader();
fr.onload = () => resolve(fr.result.split(',')[1]);
fr.onerror = reject;
fr.readAsDataURL(blob);
});
}Python
import base64, json, requests
with open("sample.wav", "rb") as f:
audio_b64 = base64.b64encode(f.read()).decode()
resp = requests.post(
"https://poi8bb5go9.execute-api.us-east-1.amazonaws.com/classify",
json={"audio_base64": audio_b64, "format": "wav", "filename": "sample.wav"},
timeout=15,
)
resp.raise_for_status()
print(json.dumps(resp.json(), indent=2))Respuesta esperada
{
"request_id": "8e7c2a14-9f1b-4d2e-bc11-8a0e5d4f7c9e",
"timestamp": "2026-05-05T14:32:11.482Z",
"latency_ms": 612,
"prediction": {
"category": "siren",
"category_label": "Sirena",
"confidence": 0.8,
"is_critical": true,
"urgency": "high"
},
"neighbors": [
{ "category": "siren", "category_label": "Sirena", "distance": 0.121, "filename": "1-100032-A-7.wav", "fold": 1 }
]
}El campo confidence es votos_clase / k. Con k=5, los valores posibles son 0.2, 0.4, 0.6, 0.8, 1.0. No es una probabilidad calibrada.
Probar sin escribir código
¿Solo quieres ver qué hace? Abre el demo en vivo — soporta drag & drop y grabación con micrófono.