Saltar al contenido
GUREN AI Docs

Plataforma

Para desarrolladores

Los endpoints públicos de guren.cl (chat de Ana, ingreso de leads y demos de David y Laura), sus contratos, errores y límites.

Actualizado el

Esta es la API que usa el sitio guren.cl. Sirve para entender los contratos y probar integraciones. En una implementación, tu empresa recibe sus propios endpoints con autenticación, límites y destinos configurados para tu caso.

#Base y convenciones

  • Base: https://guren.cl/api. Todo en JSON (Content-Type: application/json).
  • Respuestas de error con {"error": "..."} o {"ok": false, ...} y el código HTTP correspondiente.
  • Límites de uso por IP para evitar abusos; si se superan, la respuesta es 429.

#Endpoints

Método y rutaQué hace
POST /api/ana/chatEnvía un mensaje a Ana y recibe su respuesta y la etapa de la conversación.
POST /api/leadIngresa un lead y lo envía al destino configurado.
POST /api/david/simulateDemo: valida una consulta y devuelve una vista previa con datos de ejemplo.
POST /api/laura/cadenceDemo: ejecuta un paso de la cadencia de Laura con respuestas de ejemplo.
GET /api/healthEstado del servicio.

#Chat de Ana

Envía el mensaje nuevo y el historial de la conversación. Ana es sin estado: el historial lo mantiene quien llama.

POST /api/ana/chat
curl -X POST https://guren.cl/api/ana/chat \
  -H "Content-Type: application/json" \
  -d '{
    "message": "¿Pueden atender llamadas fuera de horario?",
    "history": [
      { "role": "user", "content": "Hola, tengo una clínica dental" },
      { "role": "assistant", "content": "¡Hola! Cuéntame, ¿qué te gustaría resolver?" }
    ]
  }'
respuesta 200
{
  "ok": true,
  "role": "assistant",
  "name": "Ana",
  "content": "Sí. Atiendo llamadas 24/7 y agendo directo en tu calendario...",
  "stage": "SOLUTION_MAPPING"
}

La etapa (stage) puede ser DISCOVERY, SOLUTION_MAPPING, QUALIFICATION o BOOKING. Si falta message, responde 400.

#Ingreso de leads

Ver el contrato completo en Leads, CRM y webhooks. Campos obligatorios: name, email y company.

CódigoCuándo
200Lead recibido; devuelve leadId y timestamp.
400Falta un campo obligatorio o el correo no es válido.
405Método distinto de POST.

#Demo de David

Requiere el encabezado Idempotency-Key. Las consultas que intentan modificar datos se rechazan.

respuesta 422 · consulta rechazada
{
  "ok": false,
  "status": "REJECTED_BY_AST_GUARDRAIL",
  "risk": "MUTATION_ATTEMPT",
  "reason": "Destructive operation blocked by David AST Guardrail: Contains 'DELETE'. Only SELECT queries are permitted."
}

#Webhooks hacia tus sistemas

Cuando llega un lead, guren.cl puede avisar a un webhook (Slack, Discord o una URL tuya) con un mensaje de texto. En una implementación, los eventos se acuerdan contigo (lead recibido, reunión agendada, traspaso, baja) y se firman para que tu sistema verifique que vienen de nosotros.

verificar una firma HMAC-SHA256 (Node.js, ejemplo)
import { createHmac, timingSafeEqual } from 'node:crypto';

// La firma llega en un encabezado; el secreto se comparte en la implementación
export function firmaValida(cuerpoCrudo, firmaRecibida, secreto) {
  const esperada = createHmac('sha256', secreto).update(cuerpoCrudo).digest('hex');
  const a = Buffer.from(esperada), b = Buffer.from(firmaRecibida || '');
  return a.length === b.length && timingSafeEqual(a, b);
}