API de Project Settings
Settings de team, brand, integraciones y webhooks por proyecto.
La API de Project Settings gestiona los ajustes a nivel proyecto que controlan el comportamiento de los módulos — goals, módulos activos, perfiles de brand voice, bindings de integraciones. El CRUD puro de proyectos (/v1/projects) está documentado en API de Proyectos; aquí se cubre la capa de settings que lo rodea.
Todos los endpoints bajo /v1/..., autenticados con Sanctum, scope al team.
Goals
Los goals son objetivos medibles de un proyecto (p. ej. «Top-3 para 'best crm'», «10 backlinks hasta Q3»). Módulos como el Action Center y el Reporting los consumen como anclajes de optimización.
| Method | Endpoint | Descripción | Créditos |
|---|---|---|---|
| GET | /v1/goals |
Lista de todos los goals — filtro ?project_id= |
— |
| POST | /v1/goals |
Body {project_id, type, target, deadline?} |
— |
| DELETE | /v1/goals/{id} |
Eliminar goal | — |
curl -X POST "$BASE/goals" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"project_id":7,"type":"keyword_top3","target":"best crm","deadline":"2026-09-01"}'
Activación de módulos
Cada proyecto tiene un set de módulos activables (Backlinks, AVI, Site Audit, Rank Tracker, ...). Los módulos inactivos devuelven en la UI 403 y en la API 409 {error:"module_inactive"}.
| Method | Endpoint | Descripción |
|---|---|---|
| GET | /v1/modules |
Lista de todos los módulos con {slug, name, active, requires_plan} |
| POST | /v1/modules/{module}/activate |
Activar módulo para el team actual |
| POST | /v1/modules/{module}/deactivate |
Desactivar módulo — los jobs en curso NO se abortan |
# Activar módulo de Backlinks
curl -X POST "$BASE/modules/backlinks/activate" \
-H "Authorization: Bearer $TOKEN"
{
"data": {
"module": "backlinks",
"active": true,
"activated_at": "2026-05-01T09:14:01Z"
}
}
Goal profile del Action Center
El Goal Profile es el marco estratégico de un proyecto (industry, persona, north star metric). Action Center, AI Tools y Reporting lo toman como referencia.
| Method | Endpoint | Descripción |
|---|---|---|
| GET | /v1/action-center/goal-profile |
Profile actual |
| POST | /v1/action-center/goal-profile |
Crear profile {industry, persona, north_star, ...} |
| PATCH | /v1/action-center/goal-profile |
Actualizar campos parcialmente |
| GET | /v1/action-center/goal-templates |
Templates predefinidos por industry |
| GET | /v1/action-center/industry-templates |
Defaults específicos de industry |
| GET | /v1/action-center/seo-detectors |
Detectores SEO activos para el proyecto |
Webhooks
Settings de webhook por team — los eventos se disparan al finalizar jobs (article ready, report completed, AVI checked). Esquema y definición de endpoint: API de Webhooks.
Lo relevante en la página de settings:
- La URL de webhook está scope al team, no al proyecto — todos los proyectos disparan contra el mismo endpoint.
- El filtro por evento (
subscribed_events[]) es una propiedad mantenible del webhook.
Integraciones
Las integraciones externas (Google Search Console, GA4, Review Sources, CMS) se gestionan vía sub-APIs dedicadas, pero sus bindings aparecen como project setting:
| Área | Prefijo de endpoint |
|---|---|
| Google (GSC/GA4) | /v1/google/... |
| Review Sources | /v1/review-sources/... |
| CMS Integrations (WordPress, Shopify) | /v1/cms-integrations/... |
Por proyecto puede existir una GSC property y una GA4 property — los bindings múltiples devuelven 409 Conflict.
# Linkear GSC property a un proyecto
curl -X POST "$BASE/google/gsc/properties/$PROP/link" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"project_id":7}'
Brand Voice y Style
Los profiles de brand voice (style_profile) y los content goals se gestionan globalmente por team y luego se referencian por ID al hacer Article Generate. Detalles con campos: API de Artículos.
Códigos de status
| Code | Significado |
|---|---|
| 200 | OK (Read/Update) |
| 201 | Goal/setting creado |
| 403 | Acceso cross-team o permiso ausente |
| 404 | Project/goal no encontrado |
| 409 | Módulo inactive O integración ya linkeada |
| 422 | Error de validación (p. ej. industry slug inválido) |
Pitfalls
- Module deactivate no detiene jobs en curso. Si desactivas un módulo, los jobs ya dispatchados terminan. El cancel va por endpoints de status de job.
- El goal profile es prerequisito del Action Center. Sin
goal_profile,/v1/action-center/pathy/todosdevuelven arrays vacíos — sin error, pero también sin output. - El GSC link necesita OAuth connection. El link call falla con
409si no haygoogle/connectionsactiva.
Relacionado: API de Proyectos · API de Webhooks · API de Créditos.