Skip to main content

Descripción General

Neuracall utiliza OAuth2 con Auth0 para autenticación. Todos los endpoints (excepto /v1/auth) requieren un token de acceso valido.

Flujo de Autenticación

Obtener Credenciales

Para usar la API necesitas:
CredencialDescripción
client_idIdentificador único de tu aplicación
client_secretClave secreta (mantener segura)
Contacta a [email protected] para solicitar tus credenciales de API.

Obtener Token de Acceso

curl -X POST https://api.neuracall.com/v1/auth \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": "nc_client_a1b2c3d4e5f6g7h8",
    "client_secret": "nc_secret_x9y8z7w6v5u4t3s2"
  }'

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 read:call-analysis-audio read:call-analysis-transcription read:prompt-template write:prompt-template read:call-analysis-stats"
}

Usar el Token

Incluye el token en el header Authorization de cada solicitud:
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
curl https://api.neuracall.com/v1/call-analysis \
  -H "Authorization: Bearer TU_ACCESS_TOKEN"

Scopes (Permisos)

Los tokens incluyen scopes que determinan que operaciónes puede realizar tu aplicación:
ScopeDescripción
read:call-analysis-requestsListar y ver análisis de llamadas
write:call-analysis-requestCrear nuevos análisis
read:call-analysis-audioDescargar archivos de audio
read:call-analysis-transcriptionVer transcripciónes
read:prompt-templateVer modelos de análisis
write:prompt-templateCrear y editar modelos
read:call-analysis-statsAcceder a estadísticas

Manejo de Expiracion

Los tokens tienen una duración limitada. El campo expires_at indica el timestamp Unix de expiración.
Recomendacion: Renueva el token antes de que expire para evitar interrupciones.
Python - Renovacion automática
import time

class NeuracallClient:
    def __init__(self, client_id, client_secret):
        self.client_id = client_id
        self.client_secret = client_secret
        self.token = None
        self.expires_at = 0

    def get_token(self):
        # Renovar si expira en menos de 5 minutos
        if time.time() > self.expires_at - 300:
            response = requests.post(
                "https://api.neuracall.com/v1/auth",
                json={
                    "client_id": self.client_id,
                    "client_secret": self.client_secret
                }
            )
            data = response.json()
            self.token = data["access_token"]
            self.expires_at = data["expires_at"]
        return self.token

Errores de Autenticación

CódigoDescripciónSolucion
401Credenciales invalidasVerifica client_id y client_secret
401Token expiradoSolicita un nuevo token
401Token invalidoVerifica el formato del header Authorization
403Scope insuficienteContacta soporte para ampliar permisos

Ejemplo de error

{
  "code": "001-001-0001",
  "message": "Invalid credentials"
}

Seguridad

Nunca expongas tus credenciales en código del lado del cliente, repositorios publicos o logs.

Mejores practicas

  1. Almacena credenciales en variables de entorno
  2. Usa un gestor de secretos en produccion
  3. Rota las credenciales periodicamente
  4. Monitorea el uso de la API por actividad sospechosa
Ejemplo con variables de entorno
export NEURACALL_CLIENT_ID="nc_client_..."
export NEURACALL_CLIENT_SECRET="nc_secret_..."
Python
import os

client_id = os.environ["NEURACALL_CLIENT_ID"]
client_secret = os.environ["NEURACALL_CLIENT_SECRET"]