Project Settings API
Team, brand, integration, and webhook settings per project.
The project settings API manages the project-bound settings that govern module behavior — goals, active modules, brand voice profiles, integration bindings. Pure project CRUD (/v1/projects) is documented in Projects API; this page is about the settings layer around it.
All endpoints under /v1/..., Sanctum-authenticated, team-scoped.
Goals
Goals are measurable targets of a project (e.g. "Top-3 for 'best crm'", "10 backlinks by Q3"). Modules like the action center and reporting consume them as optimization anchors.
| Method | Endpoint | Description | Credits |
|---|---|---|---|
| GET | /v1/goals |
List of all goals — filter ?project_id= |
— |
| POST | /v1/goals |
Body {project_id, type, target, deadline?} |
— |
| DELETE | /v1/goals/{id} |
Remove 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"}'
Module activation
Each project has a set of activatable modules (Backlinks, AVI, Site Audit, Rank Tracker, ...). Inactive modules return 403 in the UI and 409 {error:"module_inactive"} in the API.
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/modules |
List of all modules with {slug, name, active, requires_plan} |
| POST | /v1/modules/{module}/activate |
Activate module for the current team |
| POST | /v1/modules/{module}/deactivate |
Deactivate module — running jobs are NOT aborted |
# Activate the backlinks module
curl -X POST "$BASE/modules/backlinks/activate" \
-H "Authorization: Bearer $TOKEN"
{
"data": {
"module": "backlinks",
"active": true,
"activated_at": "2026-05-01T09:14:01Z"
}
}
Action Center goal profile
The goal profile is the strategic frame of a project (industry, persona, north-star metric). The action center, AI tools, and reporting all reference it.
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/action-center/goal-profile |
Current profile |
| POST | /v1/action-center/goal-profile |
Create profile {industry, persona, north_star, ...} |
| PATCH | /v1/action-center/goal-profile |
Partially update fields |
| GET | /v1/action-center/goal-templates |
Predefined templates per industry |
| GET | /v1/action-center/industry-templates |
Industry-specific defaults |
| GET | /v1/action-center/seo-detectors |
Active SEO detectors for the project |
Webhooks
Webhook settings per team — events fire on job completion (article ready, report completed, AVI checked). Schema and endpoint definition: Webhooks API.
Settings-relevant points:
- The webhook URL is team-scoped, not project-scoped — every project fires against the same endpoint.
- Per-event filtering (
subscribed_events[]) is maintainable as a webhook property.
Integrations
External integrations (Google Search Console, GA4, review sources, CMS) are managed via dedicated sub-APIs, but their bindings show up as project settings:
| Area | Endpoint prefix |
|---|---|
| Google (GSC/GA4) | /v1/google/... |
| Review sources | /v1/review-sources/... |
| CMS integrations (WordPress, Shopify) | /v1/cms-integrations/... |
A project can have one GSC property and one GA4 property — multiple bindings return 409 Conflict.
# Link a GSC property to a project
curl -X POST "$BASE/google/gsc/properties/$PROP/link" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"project_id":7}'
Brand voice & style
Brand voice profiles (style_profile) and content goals are managed globally per team, then referenced by ID at article generate time. Field-level details: Articles API.
Status codes
| Code | Meaning |
|---|---|
| 200 | OK (read/update) |
| 201 | Goal/setting created |
| 403 | Cross-team access or missing permission |
| 404 | Project/goal not found |
| 409 | Module inactive OR integration already linked |
| 422 | Validation error (e.g. invalid industry slug) |
Pitfalls
- Module deactivate does not stop running jobs. When you deactivate a module, already-dispatched jobs run to completion. Cancel via the job-status endpoints.
- Goal profile is a prerequisite for the action center. Without
goal_profile,/v1/action-center/pathand/todosreturn empty arrays — no error, but no output either. - GSC link needs an OAuth connection. The link call fails with
409if nogoogle/connectionsconnection exists.
Related: Projects API · Webhooks API · Credits API.