Documentación API — Growth54

Laravel 12 REST + JSON Sanctum Base: https://api.growth54.com

Growth54 es una plataforma de control empresarial multiempresa orientada a automatización, contenido y crecimiento asistido por IA. Su API REST permite que el panel web, los agentes de inteligencia artificial y los workflows de n8n lean y escriban datos de cada empresa registrada.

La API tiene cuatro capas de acceso según quién llama: usuarios del panel (Sanctum), administradores master, automatizaciones de n8n (solo lectura) y agentes de IA (escritura de resultados). Esta separación permite que cada integración tenga exactamente los permisos que necesita.

Esta guía cubre todos los endpoints disponibles, explica el propósito de cada módulo y documenta el brief técnico para construir los agentes n8n del módulo RRSS.

📋

Convenciones

Reglas que aplican a todas las llamadas, independientemente del módulo o tipo de acceso. Leer esto antes de integrar cualquier endpoint.

Modo provisional (entorno de desarrollo) — Durante el desarrollo, si N8N_API_TOKEN o AGENT_API_TOKEN están vacíos en el .env, esas rutas aceptan llamadas sin token. Esto facilita las pruebas iniciales. Para pasar a producción: definir ambas variables en el .env del backend y reiniciar los contenedores Docker.

Headers obligatorios en toda llamada

Accept: application/json
Content-Type: application/json

Códigos de error comunes

  • 401 — Token no enviado o inválido.
  • 403 — Sin permiso para esa acción.
  • 422 — Datos incorrectos o empresa activa no asignada.
  • 404 — Recurso no existe o no pertenece a tu empresa.
🔐

Tipos de acceso

La API distingue cuatro tipos de caller, cada uno con su propio prefijo de ruta y mecanismo de autenticación. La separación es intencional: un agente de IA solo puede escribir datos de resultados, no acceder a la configuración del usuario; un workflow de n8n solo puede leer, no modificar.

TipoPrefijoQuién lo usa
Usuario del panel/api/auth/*Frontend — token Sanctum
Admin master/api/admin/*Administrador de plataforma
n8n / automatizaciones/api/n8n/*Workflows — solo lectura
Agentes de IA/api/agent/*Agentes — escritura de datos
Público/api/public/*Sin token, con rate limit
Concepto clave — empresa activa: un usuario puede ser miembro de varias empresas a la vez (por ejemplo, un consultor que gestiona varios clientes). Todos los módulos del panel (keywords, artículos, RRSS, etc.) trabajan sobre una empresa a la vez, la que esté activa en ese momento. Si el usuario no tiene empresa activa asignada, la API responde 422. Se cambia con POST /api/auth/switch-company pasando el company_id deseado.
🌐

Registro público

Estos endpoints no requieren autenticación. Están diseñados para recibir leads desde formularios externos — una landing page en WordPress, un anuncio con formulario, etc. El rate limiting de 5 solicitudes por minuto evita que se use como vector de spam. Al registrar un cliente, el sistema crea el usuario en estado pendiente y lo asigna al flujo de onboarding.

POST/api/public/register-client

Registra un cliente desde formulario externo (WordPress, landing page, etc.).

curl -s -X POST "https://api.growth54.com/api/public/register-client" \
  -H "Accept: application/json" -H "Content-Type: application/json" \
  -d '{"name":"Juan García","email":"juan@empresa.com"}' | jq
GET/api/health

Verifica que la app, base de datos y caché respondan.

curl -s "https://api.growth54.com/api/health" | jq
👤

Login de usuario

El flujo estándar para el panel web. El login devuelve un token Bearer de Laravel Sanctum que se incluye en todas las llamadas posteriores. El token no expira automáticamente — se invalida llamando a logout. Después del login, el primer paso es llamar a switch-company para activar la empresa con la que se quiere trabajar.

POST/api/auth/login
curl -s -X POST "https://api.growth54.com/api/auth/login" \
  -H "Accept: application/json" -H "Content-Type: application/json" \
  -d '{"email":"user@demo.com","password":"secret"}' | jq
GET/api/auth/metoken

Datos del usuario autenticado.

POST/api/auth/switch-companytoken

Cambia la empresa activa. Necesario antes de usar módulos.

curl -s -X POST "https://api.growth54.com/api/auth/switch-company" \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{"company_id": 1}' | jq
POST/api/auth/logouttoken

Invalida el token actual.

🛡️

Admin master

POST/api/admin/login
curl -s -X POST "https://api.growth54.com/api/admin/login" \
  -H "Content-Type: application/json" \
  -d '{"email":"admin@demo.com","password":"secret"}' | jq
GET/api/admin/me
GET/api/admin/usersCRUD completo

GET lista · POST crear · GET/{id} · PUT actualizar · DELETE

GET/api/admin/companiesCRUD completo

Al crear con owner_user_id asigna rol owner automáticamente.

GET/api/admin/plansCRUD completo
GET/api/admin/roles
🚀

Onboarding

El proceso que sigue un usuario recién registrado. Tiene dos caminos: crear una empresa nueva (y quedar como owner) o unirse a una empresa existente usando un código de invitación (y quedar como collaborator). Los códigos de invitación los generan los owners o admins de la empresa, y se pueden limitar en número de usos y fecha de expiración.

POST/api/onboarding/companies

Crea empresa y asigna al usuario como owner.

curl -s -X POST "https://api.growth54.com/api/onboarding/companies" \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{"name":"Mi Empresa","industry":"Legal","website":"https://mi.com"}' | jq
POST/api/onboarding/join

Unirse con código de invitación. Rol: collaborator.

-d '{"code":"ABC123"}'
POST/api/companies/{company}/invites

Genera código de invitación. Solo owner o admin.

-d '{"max_uses": 10, "expires_in_days": 30}'
🔑

Keywords

Las keywords son el punto de partida del motor de contenido SEO. Cada empresa mantiene un banco de palabras clave clasificadas por dificultad, intención de búsqueda y fuente de origen. Los agentes de IA usan este banco para generar artículos relevantes y posicionar el sitio de la empresa. Las keywords pueden agregarse manualmente desde el panel o en bulk desde un workflow de n8n que haya hecho keyword research.

El flujo típico es: el agente de keyword research encuentra oportunidades → las guarda vía /api/agent/keywords/bulk → el usuario las revisa en el panel → aprueba las que le interesan → el agente generador de artículos las convierte en contenido.
GET/api/keywords

Lista keywords de la empresa activa.

GET/api/keywords/stats

Totales por dificultad, intención, etc.

POST/api/keywords

Crea keyword manual. Valores: dificultad_nivel: baja/media/alta · intencion: informacional/transaccional/comercial/local

-d '{"keyword":"abogado laboral","dificultad_nivel":"media","intencion":"comercial","fuente":"Google"}'
PATCH/api/keywords/{id}
POST/api/keywords/run-n8n-keyword-research

Dispara el agente de keyword research para la empresa activa.

POST/api/keywords/{id}/run-n8n-articulo

Dispara generación de artículo para una keyword específica.

📝

Artículos

Los artículos son el contenido SEO generado por los agentes a partir de las keywords. Cada artículo parte de una keyword, el agente genera el HTML completo y lo guarda como borrador. Desde el panel, el equipo lo revisa, edita si necesita y lo marca como revisado. Luego puede publicarse directamente en WordPress mediante la integración CMS. El listado no incluye el HTML para no sobrecargar la respuesta — se obtiene con el endpoint de detalle.

GET/api/articulos

Lista (sin HTML). estado: borrador/revisado/publicado

GET/api/articulos/{id}

Detalle completo con HTML.

PATCH/api/articulos/{id}
POST/api/articulos/{id}/publish-wordpress

Marca como publicado y asigna fecha.

🔍

Auditorías

Las auditorías son reportes de análisis completos generados por agentes. A diferencia de la auditoría inicial (que es única por empresa), aquí puede haber múltiples auditorías acumuladas — por ejemplo, un análisis competitivo mensual, una revisión técnica post-migración, etc. Cada auditoría contiene un reporte HTML completo que se muestra en el panel.

GET/api/auditorias

Lista (sin HTML).

GET/api/auditorias/{id}

Detalle con HTML del reporte.

📊

Auditoría inicial

Cada empresa tiene exactamente una auditoría inicial: el diagnóstico de punto de partida que se hace cuando el cliente comienza a usar Growth54. Analiza el sitio web, evalúa el SEO técnico, identifica oportunidades y genera un score. Este score sirve como línea base para medir el progreso en el tiempo. El agente n8n la genera automáticamente; si se vuelve a ejecutar, sobreescribe la anterior (upsert).

GET/api/auditoria-inicial
POST/api/auditoria-inicial/run-n8n

Dispara el workflow n8n. El agente guarda el resultado vía /api/agent/auditoria-inicial.

🌐

Páginas / URLs

Registro de las URLs del sitio web de la empresa. Permite hacer seguimiento del posicionamiento por página individual y auditar cada URL de forma independiente. Las páginas se pueden agregar manualmente o descubrirse automáticamente mediante un crawl del sitio. Una vez registradas, el agente de auditoría SEO puede analizar cada URL y devolver recomendaciones específicas.

GET/api/paginas
POST/api/paginas

Registra nueva URL del sitio.

POST/api/paginas/discover

Descubrimiento automático de páginas.

POST/api/paginas/{id}/auditoria-seo/run-n8n

Dispara auditoría SEO para una URL específica.

🛍️

Productos y servicios

Catálogo de lo que vende la empresa. Los agentes de IA leen este catálogo antes de generar contenido para que los artículos, posts e ideas mencionen los productos reales del negocio y no generen texto genérico. Por ejemplo, un agente de RRSS que sabe que la empresa ofrece "auditoría gratuita de 30 minutos" puede incluirlo como CTA en los posts. Sin este catálogo, el agente genera contenido sin contexto comercial.

GET/api/productos-servicios
POST/api/productos-servicios
PATCH/api/productos-servicios/{id}
DELETE/api/productos-servicios/{id}
🎯

Competidores

GET/api/competitors
POST/api/competitors
PATCH/api/competitors/{id}
DELETE/api/competitors/{id}
🔗

CMS Integrations

Conexiones con el sitio web de la empresa para publicar contenido directamente desde Growth54. Por ahora soporta WordPress vía su API REST. El flujo es: el equipo guarda las credenciales WordPress de la empresa (URL, usuario, application password) → el agente generador de artículos las usa para hacer un POST directo al CMS y publicar el artículo sin intervención manual. Las credenciales siempre requieren token aunque el servidor esté en modo provisional.

GET/api/cms-integrations
POST/api/cms-integrations
PATCH/api/cms-integrations/{id}
DELETE/api/cms-integrations/{id}
GET/api/agent/companies/{id}/cms/{provider}agent token siempre

Credenciales CMS para que el agente pueda publicar. Siempre requiere token aunque el servidor esté en modo provisional.

⚙️

Agent Endpoints

Registro global de los webhooks de n8n disponibles en la plataforma. Cada agente tiene una key única (por ejemplo rrss_strategist) y una URL de webhook. Cuando el usuario hace clic en "Ejecutar agente" en el panel, el backend busca la key correspondiente en esta tabla, obtiene el webhook y lo llama. Si el webhook no está registrado o el agente está inactivo, la llamada falla con 422 y el panel muestra un mensaje indicando que hay que configurarlo en esta sección. Esto permite cambiar o actualizar los workflows de n8n sin tocar el código del backend.

GET/api/agent-endpoints
POST/api/agent-endpoints
PATCH/api/agent-endpoints/{id}
POST/api/agent-endpoints/{id}/activate

Activa o desactiva el agente.

POST/api/agent-endpoints/{id}/test

Prueba la conectividad con el webhook.

DELETE/api/agent-endpoints/{id}
📱

RRSS — Canales sociales

El módulo RRSS gestiona toda la operación de redes sociales de la empresa: desde la estrategia hasta la publicación y las métricas. Esta primera sección configura qué plataformas usa la empresa y con qué cuenta. Es el dato de partida que leen todos los agentes RRSS: sin canales configurados, los agentes no saben en qué plataformas generar contenido ni qué handle mencionar.

GET/api/social-channels
PUT/api/social-channels

Upsert — actualiza el estado completo de los canales.

-d '{"channels":[{"platform":"instagram","active":true,"handle":"@miempresa"},{"platform":"linkedin","active":true}]}'
🎯

RRSS — Estrategia

Una empresa tiene exactamente una estrategia RRSS. El PUT es upsert.

GET/api/rrss/estrategia

data: null si no existe aún.

PUT/api/rrss/estrategia
-d '{
  "objetivo":"Generar leads calificados","audiencia":"Dueños PYME 28-45 LATAM",
  "tono":"Profesional pero cercano","frecuencia":"6 posts semanales",
  "cta_principal":"Agendar llamada gratuita","embudo":"RRSS → Website → Lead → CRM",
  "plataformas":["Facebook","Instagram","LinkedIn"],
  "pilares":["Educación","Casos de éxito","Detrás de cámaras"],
  "kpis":["Alcance orgánico","Engagement","Leads generados"]
}'
💡

RRSS — Ideas

El banco de ideas es el primer paso del pipeline de contenido social. Una idea es simplemente un tema propuesto: "5 errores que cometen las PYMEs en Instagram". Puede crearla manualmente el equipo, o puede generarlas el agente Content AI en bulk. El equipo revisa el banco y aprueba las que le parecen buenas — las aprobadas son las que el agente luego convierte en posts completos. Las descartadas quedan registradas para no proponer el mismo tema de nuevo.

GET/api/rrss/ideas

Filtros: ?status=aprobado · ?platform=Instagram

POST/api/rrss/ideas
-d '{"topic":"5 errores de PYMEs en Instagram","platform":"Instagram","keyword":"marketing PYME"}'
PUT/api/rrss/ideas/{id}/status

{"status":"aprobado"}

DELETE/api/rrss/ideas/{id}
📄

RRSS — Posts

Un post es el contenido final listo para publicar. Cada post tiene copy adaptado para cada plataforma (Instagram, Facebook, LinkedIn), hooks alternativos para el inicio del texto, un CTA específico y opcionalmente una imagen o prompt para generarla con IA. El ciclo de vida es: el agente genera el borrador → el equipo lo revisa en el panel → lo aprueba → le asigna una fecha → queda programado. Cuando se publica, el sistema registra automáticamente quién lo aprobó y la fecha de publicación.

GET/api/rrss/posts

Filtros: ?status=borrador · ?platform=LinkedIn

PUT/api/rrss/posts/{id}/status

Al aprobar → guarda approved_by_user_id. Al publicar → guarda fecha_publicada.

-d '{"status":"aprobado"}'
PUT/api/rrss/posts/{id}/schedule

Programa post. Cambia status a programado. La fecha debe ser futura.

-d '{"fecha_programada":"2026-05-20T10:00:00"}'
📊

RRSS — Métricas

El cierre del ciclo: después de publicar, el agente Analytics AI recoge los números reales de cada plataforma (alcance, impresiones, engagement, clics a perfil, leads generados) y los carga en la base de datos. La vista de métricas del panel muestra estos datos agrupados por plataforma y calcula promedios. También muestra el top 10 de posts por engagement, lo que permite al equipo identificar qué tipo de contenido funciona mejor para esa empresa.

GET/api/rrss/metricas

Resumen por plataforma. Filtros: ?platform=Instagram · ?from=2026-05-01 · ?to=2026-05-31

// Respuesta:
{"data":[{"platform":"Instagram","alcance_total":12430,"impresiones_total":38000,
  "engagement_total":584,"engagement_rate_avg":4.7,"clics_total":384,"leads_total":17}]}
GET/api/rrss/metricas/top-posts

Top 10 posts por engagement.

🚀

RRSS — Triggers de agentes

Cuando el usuario hace clic en "Ejecutar agente" en el panel, el frontend llama uno de estos endpoints. El backend busca la key del agente en la tabla agent_endpoints, obtiene la URL del webhook de n8n y lo dispara pasándole el company_id. Si el webhook no está configurado, responde con 422 y un mensaje indicando que hay que configurarlo en Panel › Configuración › Agentes. El agente trabaja de forma asíncrona: el webhook responde inmediatamente con 200 y n8n procesa en segundo plano.

POST/api/rrss/run-strategist

Key: rrss_strategist

POST/api/rrss/run-content-ai

Key: rrss_content_ai

-d '{"mode":"ideas","idea_id":null}'
-d '{"mode":"post","idea_id":5}'
POST/api/rrss/run-analytics

Key: rrss_analytics

n8n — Lectura general

Estos endpoints existen para que los workflows de n8n puedan leer el contexto de la empresa antes de generar contenido. Un agente que va a escribir artículos necesita saber la industria de la empresa, sus keywords, sus productos. Un agente RRSS necesita saber en qué plataformas está activa la empresa y cuál es su tono de comunicación. Todos son de solo lectura — los agentes leen desde aquí y escriben los resultados a través de los endpoints /api/agent/*.

GET/api/n8n/companies

Lista todas las empresas.

GET/api/n8n/companies/{id}

Perfil de empresa (sin datos sensibles).

GET/api/n8n/companies/{id}/keywords

Filtros: ?estado=activa · ?origen=manual

GET/api/n8n/companies/{id}/keywords/pending-articulos

Solo keywords sin artículo.

GET/api/n8n/companies/{id}/auditorias
GET/api/n8n/companies/{id}/auditorias/{auditoria}

Detalle con HTML del reporte.

GET/api/n8n/companies/{id}/productos-servicios

n8n — Lectura RRSS

Base: /api/n8n/companies/{id}/rrss/

GET/api/n8n/companies/{id}/rrss/canales

Canales activos con handle, objetivo, frecuencia y rol en el embudo.

GET/api/n8n/companies/{id}/rrss/estrategia

null si no existe.

GET/api/n8n/companies/{id}/rrss/ideas

Solo ideas con status aprobado.

GET/api/n8n/companies/{id}/rrss/posts

Posts con status aprobado o programado.

🤖

Agent — Escritura general

Una vez que el agente termina su trabajo (generar keywords, escribir artículos, crear auditorías), usa estos endpoints para guardar los resultados en Growth54. Se identifican por el AGENT_API_TOKEN, distinto al token de usuario, lo que significa que el agente puede escribir datos sin tener una sesión de usuario activa. Todos los registros creados por esta vía quedan marcados con generated_by = 'n8n' para distinguirlos de los creados manualmente.

POST/api/agent/keywords/bulk

Inserta o actualiza keywords en bulk. skip_existing: true no toca las existentes.

-d '{"empresa_id":1,"skip_existing":true,"keywords":[
  {"keyword":"abogado laboral","dificultad_nivel":"media","intencion":"comercial","fuente":"Google"}
]}'
POST/api/agent/articulos
-d '{"empresa_id":1,"articulos":[{"keyword_id":10,"titulo":"Guía de contrato","contenido_html":"<h1>...","estado":"borrador"}]}'
POST/api/agent/auditorias
POST/api/agent/auditoria-inicial

Guarda o actualiza la auditoría inicial (upsert por empresa).

🤖

Agent — Escritura RRSS

Todos los registros creados quedan con generated_by = 'n8n' automáticamente.

POST/api/agent/rrss/estrategia
-d '{"company_id":3,"objetivo":"...","audiencia":"...","tono":"...",
  "plataformas":["Instagram","LinkedIn"],"pilares":["Educación"],"kpis":["Alcance"]}'
POST/api/agent/rrss/ideas

Bulk. Respuesta: {"ok":true,"created":N}

-d '{"company_id":3,"ideas":[{"topic":"5 errores PYME","platform":"Instagram","keyword":"marketing"}]}'
POST/api/agent/rrss/posts

Bulk. Llegan con status = borrador.

-d '{"company_id":3,"posts":[{
  "tema":"5 errores PYME","platform":"Instagram","social_idea_id":5,
  "copy_instagram":"¿Tu negocio está en IG pero no consigue resultados?\n...",
  "copy_linkedin":"En 2026, producir sin estrategia es el error más común...",
  "hooks":["Hook alternativo 1","Hook alternativo 2"],
  "cta":"Comenta o DM para auditoría gratuita.",
  "imagen_prompt":"Minimalist flat design 5 warning signs PYME"
}]}'
POST/api/agent/rrss/metricas
-d '{"company_id":3,"metricas":[{
  "platform":"Instagram","period_start":"2026-05-01","period_end":"2026-05-31",
  "social_post_id":12,"alcance":3420,"impresiones":10500,
  "engagement_count":212,"engagement_rate":6.2,"clics":89,"leads":4
}]}'
⚙️

Agentes n8n — Config inicial

Todos los workflows empiezan con un nodo Set llamado Config.

BASE_URL    = https://api.growth54.com     ← producción
              https://xxx.ngrok-free.app   ← local con ngrok
AGENT_TOKEN = (AGENT_API_TOKEN del .env)
N8N_TOKEN   = (N8N_API_TOKEN del .env)
COMPANY_ID  = {{ $json.company_id }}      ← viene del trigger del panel
Lectura → Authorization: Bearer <N8N_TOKEN>
Escritura → Authorization: Bearer <AGENT_TOKEN>
Keys en DB — configurar en Panel › Agentes
AgenteKey
Strategist AIrrss_strategist
Content AI (ideas + post)rrss_content_ai
Analytics AIrrss_analytics
🧠

Strategist AI

Lee perfil y canales, genera estrategia RRSS completa, la guarda. El equipo puede editarla desde el panel.

Flujo
1
Webhook trigger — recibe company_id
2
GET /api/n8n/companies/{id} — nombre, industria, país
3
GET /api/n8n/companies/{id}/rrss/canales
4
GET /api/n8n/companies/{id}/rrss/estrategia — puede ser null
5
Nodo IA — genera la estrategia (prompt abajo)
6
POST /api/agent/rrss/estrategia
Prompt
Eres un estratega RRSS experto en PYMEs latinoamericanas.
Empresa: {nombre} — {industria} — {país}
Canales activos: {plataforma, handle, objetivo, frecuencia}
Estrategia actual: {existente o "ninguna"}

Responde SOLO en JSON:
{"objetivo":"...","audiencia":"...","tono":"...","frecuencia":"...",
 "cta_principal":"...","embudo":"...","plataformas":[],"pilares":[],"kpis":[]}
💡

Content AI — modo Ideas

Genera 10 ideas basadas en la estrategia y canales. Llegan con status = idea para revisión del equipo.

Flujo
1
Webhook — recibe company_id, mode = "ideas"
2
GET perfil + canales + estrategia
3
Nodo IA — genera 10 ideas cubriendo todos los pilares
4
POST /api/agent/rrss/ideas — bulk, respuesta: {"ok":true,"created":10}
Prompt
Genera 10 ideas de contenido para {nombre} ({industria}, {país}).
Objetivo: {objetivo} | Pilares: {pilares} | Canales: {plataformas}
Sé específico. Fechas: próximos 30 días.

Responde SOLO en JSON:
{"ideas":[{"topic":"...","platform":"Instagram|Facebook|LinkedIn",
           "keyword":"...","fecha_propuesta":"YYYY-MM-DD"}]}
✍️

Content AI — modo Post

Toma una idea aprobada y genera el post completo: copy por plataforma, hooks y CTA. Llega como borrador.

Flujo
1
Webhook — recibe company_id, mode = "post", idea_id
2
GET perfil + estrategia + idea específica
3
Nodo IA — genera copy para cada plataforma activa
4
POST /api/agent/rrss/posts — borrador con social_idea_id enlazado
Prompt
Eres copywriter experto en RRSS para PYMEs de LATAM.
Empresa: {nombre} | Tono: {tono} | CTA: {cta_principal}
Tema: {topic} | Plataforma: {platform} | Keyword: {keyword}

Responde SOLO en JSON:
{"copy_instagram":"texto con emojis y hashtags","copy_facebook":"texto conversacional",
 "copy_linkedin":"tono profesional","hooks":["hook1","hook2"],
 "cta":"llamada a la acción","imagen_prompt":"descripción en inglés para DALL-E"}
📈

Analytics AI

Lee métricas de las plataformas y las carga al backend.

Flujo
1
Webhook — recibe company_id
2
GET /api/n8n/companies/{id}/rrss/canales — handles y plataformas
3
GET /api/n8n/companies/{id}/rrss/posts — para linkear métricas por post
4
Consultar fuente de datos (ver opciones abajo)
5
POST /api/agent/rrss/metricas
Opción recomendada para arrancar: Google Sheets. El cliente llena una hoja con métricas del mes y n8n la lee con el nodo Google Sheets. Sin OAuth por empresa.
A largo plazo: Meta Graph API para Instagram/Facebook, LinkedIn Marketing API. Requiere tokens OAuth por empresa.
🗺️

Orden de construcción recomendado

#AgentePor qué primero
1Content AI — IdeasValor inmediato. El cliente ve ideas en segundos.
2Content AI — PostAmplía el anterior. Misma key, mismo workflow.
3Strategist AIRequiere canales bien configurados primero.
4Analytics AI (Sheets)Mínimo viable. Sin OAuth por empresa.
5Analytics AI (APIs)Automatización total. Iteración avanzada.
Errores comunes a evitar:
  • No enviar company_id / empresa_id en el body → 422
  • status con valor fuera del enum → 422
  • fecha_programada en el pasado → rechazada
  • Omitir Authorization header → 401
🗺️

Casos de uso

n8n agrega keywords a una empresa
  • GET /api/n8n/companies → obtener empresa_id
  • POST /api/agent/keywords/bulk → insertar keywords
Agente genera artículos para keywords sin contenido
  • GET /api/n8n/companies/{id}/keywords/pending-articulos
  • El agente genera HTML para cada keyword
  • POST /api/agent/articulos
Agente RRSS genera banco de ideas
  • Panel llama POST /api/rrss/run-content-ai con mode: ideas
  • n8n lee estrategia y canales → IA genera ideas → POST /api/agent/rrss/ideas
  • El equipo aprueba desde el panel → PUT /api/rrss/ideas/{id}/status
💳

Planes de Suscripción

Documentación completa de los planes disponibles en Growth54: funcionalidades incluidas, límites por plan y comparativa. Relevante para el equipo comercial y para entender qué módulos están disponibles para cada cliente.

💳  Abrir documento de planes →

Checklist rápido

  • Insertar datos desde n8n: /api/n8n/companies → id → /api/agent/*
  • Acceso de usuario: login → switch-company → usar módulos
  • Activar protección: definir N8N_API_TOKEN y AGENT_API_TOKEN en .env
  • Siempre enviar: Accept: application/json y Content-Type: application/json
⚠️ Solo desarrollo: POST /api/dev/purge-current-company elimina todos los datos de la empresa activa. Nunca en producción.