curl --request POST \
--url https://api.example.com/api/ai/chat \
--header 'Content-Type: application/json' \
--data '
{
"message": "<string>",
"history": [
{
"role": "<string>",
"content": "<string>"
}
]
}
'{
"success": true,
"content": "<string>",
"usage": {
"prompt_tokens": 123,
"completion_tokens": 123,
"total_tokens": 123
},
"fallback": true
}OpenAI-powered conversational assistant for restaurant operations
curl --request POST \
--url https://api.example.com/api/ai/chat \
--header 'Content-Type: application/json' \
--data '
{
"message": "<string>",
"history": [
{
"role": "<string>",
"content": "<string>"
}
]
}
'{
"success": true,
"content": "<string>",
"usage": {
"prompt_tokens": 123,
"completion_tokens": 123,
"total_tokens": 123
},
"fallback": true
}POST /api/ai/chat
curl -X POST https://your-domain.com/api/ai/chat \
-H "Content-Type: application/json" \
-H "Cookie: your-session-cookie" \
-d '{
"message": "¿Cuántas reservas tengo hoy?",
"history": []
}'
{
"success": true,
"content": "Hoy tienes **15 reservas** confirmadas:\n\n- 12 confirmadas\n- 3 pendientes\n- 2 VIP\n\nLas próximas reservas son:\n- 19:30 - María García (4 pax) ⭐VIP\n- 20:00 - Juan López (2 pax)\n- 20:30 - Ana Martínez (6 pax)",
"usage": {
"prompt_tokens": 450,
"completion_tokens": 120,
"total_tokens": 570
}
}
{
"success": false,
"content": "⚠️ **OpenAI no está configurado**\n\nPara activar HIRO AI con inteligencia artificial, ve a:\n\n📍 **Configuración → Integraciones → OpenAI**\n\nAgrega tu API Key de OpenAI para obtener respuestas inteligentes.\n\nMientras tanto, puedo responder preguntas básicas sobre tus datos.",
"fallback": true
}
{
"error": "Mensaje requerido"
}
{
"error": "No autenticado"
}
{
"success": false,
"content": "❌ Error de OpenAI: Invalid API key",
"error": true
}
HIRO_SYSTEM_PROMPT (defined in /lib/ai/openai.ts) which instructs it to:
integration_configs table:
const { data } = await supabase
.from('integration_configs')
.select('config')
.eq('integration_type', 'openai')
.eq('organization_id', organizationId)
.eq('is_enabled', true)
.single();
const config = {
api_key: data.config.api_key,
model: data.config.model || 'gpt-4-turbo',
temperature: data.config.temperature ?? 0.7,
max_tokens: data.config.max_tokens ?? 1000
};
const context = `
FECHA Y HORA ACTUAL: ${new Date().toLocaleString('es-ES')}
RESERVAS DE HOY:
- Total: 15
- Confirmadas: 12
- Pendientes: 3
- VIP: 2
PRÓXIMAS RESERVAS:
- 19:30 - María García (4 pax) ⭐VIP
...
ESTADÍSTICAS:
- Clientes totales: 1,243
- Revenue semanal estimado: €45,230
- Reservas esta semana: 87
CLIENTES VIP INACTIVOS:
- Juan Pérez - Última visita: 15/12/2025
...
`;
/app/api/ai/chat/route.ts for full implementation.