API
API overview
One authenticated endpoint that reads every AgentixSEO dataset and triggers every platform action for your clients.
The platform API is a single gateway. GET reads data; POST runs actions. Everything is scoped to one client at a time, and every request is authenticated with an agency API key.
Base URL
Your exact base URL is shown in the app under Agency → Automations → API, next to your keys. Copy it from there, the examples below use it as an environment variable.
export AGENTIX_API_BASE="<copy from Agency → Automations → API>"
export AGENTIX_API_KEY="<your API key>"Discovery
A GET with no parameters returns every readable resource and every available action with its required fields. Use it as the live source of truth, it always matches your deployment.
curl -s "$AGENTIX_API_BASE" \
-H "Authorization: Bearer $AGENTIX_API_KEY"{
"resources": ["clients", "backlinks", "keywords", "blogs", "seo_tasks", "..."],
"actions": [
{ "action": "seo_audit", "description": "Run SEO audit", "required_fields": ["url"] },
{ "action": "generate_blog", "description": "AI-generate a blog article", "required_fields": ["keyword"] }
]
}Shape of every call
| Method | Purpose | Required |
|---|---|---|
| GET | Read a dataset | resource, plus client_id for everything except clients |
| POST | Run an action | action and client_id in the JSON body, plus that action's fields |
Top-level response fields
| Field | Present on | Description |
|---|---|---|
resource / action | GET / POST | Echoes the resource or action you requested |
client_id | Both (except clients) | Echoes the client the response is scoped to |
data | Both | Array of rows for GET, or the created/updated object for POST |
pagination | GET (list resources) | { total, limit, offset, has_more } |
status / status_code | POST | Outcome of the underlying action, independent of the HTTP status |
error | Any 4xx/5xx | Human-readable, actionable message |
Start with the client list
GET ?resource=clients returns the client IDs your key can reach. Every other call needs one of those IDs.
Try it without a key
The [API explorer](api/explorer) runs every read and every action against built-in sample data, so you can see the exact response shape before you create a key, then copy the request as cURL, JavaScript or Python.