Requisitos previos: Necesitas credenciales de API (client_id y client_secret).
Contacta a support@neuracall.com para obtenerlas.
Paso 1: Obtener Token de Acceso
Autentica tu aplicación para obtener un token de acceso:
curl -X POST https://api.neuracall.com/v1/auth \
-H "Content-Type: application/json" \
-d '{
"client_id": "tu_client_id",
"client_secret": "tu_client_secret"
}'
import requests
response = requests.post(
"https://api.neuracall.com/v1/auth",
json={
"client_id": "tu_client_id",
"client_secret": "tu_client_secret"
}
)
token = response.json()["access_token"]
print(f"Token obtenido: {token[:50]}...")
const response = await fetch("https://api.neuracall.com/v1/auth", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
client_id: "tu_client_id",
client_secret: "tu_client_secret"
})
});
const { access_token } = await response.json();
console.log(`Token obtenido: ${access_token.substring(0, 50)}...`);
Respuesta:
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_at": 1735689600,
"client_id_audience": "https://api.neuracall.com/call-analysis",
"scope": "read:call-analysis-requests write:call-analysis-request ..."
}
Guarda el access_token. Lo necesitaras en todas las llamadas siguientes.
El token expira en la fecha indicada por expires_at.
Paso 2: Subir una Llamada para Análisis
Envia un archivo de audio con la información del agente:
curl -X POST https://api.neuracall.com/v1/call-analysis \
-H "Authorization: Bearer TU_ACCESS_TOKEN" \
-F "audio_file=@llamada.mp3" \
-F "external_id=CALL-2024-001" \
-F "agent_id=AGT-001" \
-F "agent_name=Juan Perez" \
-F "model_name=Evaluación Servicio Cliente"
import requests
with open("llamada.mp3", "rb") as audio:
response = requests.post(
"https://api.neuracall.com/v1/call-analysis",
headers={"Authorization": f"Bearer {token}"},
files={"audio_file": audio},
data={
"external_id": "CALL-2024-001",
"agent_id": "AGT-001",
"agent_name": "Juan Perez",
"model_name": "Evaluación Servicio Cliente"
}
)
analysis = response.json()
print(f"Análisis creado: {analysis['id']}")
const formData = new FormData();
formData.append("audio_file", fs.createReadStream("llamada.mp3"));
formData.append("external_id", "CALL-2024-001");
formData.append("agent_id", "AGT-001");
formData.append("agent_name", "Juan Perez");
formData.append("model_name", "Evaluación Servicio Cliente");
const response = await fetch("https://api.neuracall.com/v1/call-analysis", {
method: "POST",
headers: { "Authorization": `Bearer ${access_token}` },
body: formData
});
const analysis = await response.json();
console.log(`Análisis creado: ${analysis.id}`);
Respuesta (201 Created):
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"external_id": "CALL-2024-001",
"agent_id": "AGT-001",
"agent_name": "Juan Perez",
"status": "PENDING",
"created_at": "2024-01-15T10:30:00Z"
}
Formatos soportados: MP3, WAV, M4A, FLAC, OGG, WEBM
Paso 3: Consultar el Resultado
El análisis se procesa de forma asincrona. Consulta el estado hasta qué este completo:
curl https://api.neuracall.com/v1/call-analysis/550e8400-e29b-41d4-a716-446655440000 \
-H "Authorization: Bearer TU_ACCESS_TOKEN"
import time
analysis_id = "550e8400-e29b-41d4-a716-446655440000"
while True:
response = requests.get(
f"https://api.neuracall.com/v1/call-analysis/{analysis_id}",
headers={"Authorization": f"Bearer {token}"}
)
result = response.json()
if result["status"] == "PROCESS_COMPLETED":
print(f"NeuraScore: {result['score_percentage']}%")
print(f"Resumen: {result['summary']}")
break
elif result["status"] == "ERROR":
print(f"Error: {result['error_message']}")
break
else:
print(f"Estado: {result['status']}")
time.sleep(5)
Respuesta (completado):
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"external_id": "CALL-2024-001",
"status": "PROCESS_COMPLETED",
"total_score": 425,
"expected_score": 500,
"score_percentage": 85.0,
"summary": "El agente resolvio eficientemente una consulta de facturación...",
"insights": [
"Excelente manejo del saludo inicial",
"Oportunidad de mejora en el cierre de la llamada"
],
"keywords": ["facturación", "reembolso", "satisfacción"],
"neurascore_result": [
{
"name": "Apertura",
"total_score": 45,
"expected_total_score": 50,
"score_percentage": 90.0,
"variables": [...]
}
]
}
Estados del Análisis
| Estado | Descripción |
|---|
PENDING | Solicitud recibida, esperando procesamiento |
AUDIO_TRANSCRIPTION_IN_PROGRESS | Transcribiendo el audio |
TRANSCRIPTION_ANALYZE_IN_PROGRESS | Analizando la transcripción |
TRANSCRIPTION_SUMMARIZE_IN_PROGRESS | Generando resumen e insights |
PROCESS_COMPLETED | Análisis completado exitosamente |
ERROR | Error durante el procesamiento |
Siguientes Pasos
Entender NeuraScore
Aprende a interpretar las puntuaciónes
Configurar Modelos
Personaliza los criterios de evaluación
Ver el Dashboard
Explora las métricas agregadas
API Reference
Documentación completa de la API