Technical documentation
For curious developers
If you just want to use NeuroBulls by writing sentences, you don't need any of this. This section is for those who want to understand how it works under the hood.
The entry point: /api/ask
95% of requests go through here. Send a JSON with { prompt: string } and get the result back.
POST https://neurobulls.com/api/ask
Content-Type: application/json
{
"prompt": "una web para mi panadería en Murcia"
}Response:
{
"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.
Multi-tenant webhooks
Each automation with trigger=webhook gets a unique public URL you can paste into any external service.
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.
Declarative workflows
Automations are stored as JSON with declarative steps. No proprietary code.
{
"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".
Encrypted personal credentials
Each user stores their own tokens (Telegram, etc.) and workflows use them automatically.
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.
Embeddable chat widget
Paste one line of code on your website and your visitors can chat with your AI agent 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
Technical questions? Write to us at hola@neurobulls.com