Documentación técnica
Para desarrolladores curiosos
Si solo quieres usar NeuroBulls escribiendo frases, no necesitas nada de esto. Esta sección es para quien quiera entender cómo funciona por dentro.
El punto de entrada: /api/ask
El 95% de las peticiones van por aquí. Envías un JSON con { prompt: string } y recibes el resultado.
POST https://neurobulls.com/api/ask
Content-Type: application/json
{
"prompt": "una web para mi panadería en Murcia"
}Respuesta:
{
"ok": true,
"intent": { "action": "create_image", ... },
"output": {
"kind": "image",
"assets": [{ "url": "https://...", "width": 1024, "height": 1024 }]
}
}La plataforma detecta automaticamente si es una web, una imagen, una automatizacion, etc. Anonimo tiene rate limit (3 peticiones / 10 min). Autenticado con sesion Supabase no tiene limite.
Public API v1
API with Bearer token authentication for external integrations.
POST https://neurobulls.com/api/v1
Authorization: Bearer nb_your_api_key_here
Content-Type: application/json
{
"prompt": "a website for my Italian restaurant in London"
}Response:
{
"ok": true,
"action": "build_site",
"output": {
"kind": "report",
"report": { "html": "<!doctype html>...", "title": "...", "slug": "..." }
},
"costUsd": 0.12,
"durationMs": 35000
}Generate API keys from your dashboard (/dashboard/api-keys). Rate limit: 100 requests/minute. The API supports all capabilities: websites, images, videos, automations, and agents.
Webhooks multi-tenant
Cada automatización con trigger=webhook recibe una URL pública única que puedes pegar en cualquier servicio externo.
POST https://neurobulls.com/api/webhook/{tu-slug}
Content-Type: application/json
{ "lo que sea": "tu payload" }Cada webhook está asociado a un user_id concreto y ejecuta el workflow declarativo guardado en la BD. Retries, logs y aislamiento automáticos.
Workflows declarativos
Las automatizaciones se guardan como JSON con steps declarativos. No hay código propietario.
{
"name": "Resumen diario de IA",
"trigger": { "type": "cron", "cron": "0 8 * * *" },
"steps": [
{ "id": "news", "type": "rss_fetch", "url": "https://..." },
{ "id": "summary", "type": "llm_generate",
"prompt": "Resume estos titulares: {{news.items}}" },
{ "id": "email", "type": "send_email",
"to": "{{user.email}}",
"subject": "Tu resumen diario",
"body": "{{summary.text}}" }
]
}30 step types: llm_generate, http_fetch, rss_fetch, generate_image, generate_image_premium, generate_video, generate_voice, restore_face, upscale_image, lip_sync, virtual_tryon, send_email, send_whatsapp, send_telegram, send_discord, store_asset, webhook_out, filter, delay, scrape_web, extract_data, remove_background, image_to_image, inpaint, batch_images, transform_text, format_date, math, random_choice, set_variable. Templates con {{step.campo}}. Ejecución paralela con "parallel": "group".
Credenciales personales cifradas
Cada usuario guarda sus propios tokens (Telegram, etc.) y los workflows los usan automáticamente.
POST https://neurobulls.com/api/user/credentials
Content-Type: application/json
(con sesión Supabase del user)
{
"key": "telegram_token",
"label": "Token del bot",
"value": "123456:ABC-XYZ..."
}Los valores se cifran simétricamente con pgcrypto. Luego los workflows las referencian como {{credentials.telegram_token}} y el runtime las descifra en tiempo de ejecución.
Widget de chat embeddable
Pega una línea de código en tu web y tus visitantes pueden chatear con tu agente IA 24/7.
<script
src="https://neurobulls.com/widget/chat.js"
data-webhook="TU_SLUG_AQUI"
data-color="#E31837"
data-title="Chat con nosotros"
></script>El slug lo obtienes al crear un agente de chat desde el AskBox ("un bot que responda a mis clientes"). El widget muestra un boton flotante en la esquina inferior derecha. Cada mensaje se procesa con Claude en tiempo real.
Atributos de personalizacion:
data-webhook— slug del agente (obligatorio)data-color— color del boton y encabezado (hex)data-title— titulo del chat
¿Preguntas técnicas? Escríbenos a hola@neurobulls.com