API Reference
Read your workspace's AI-visibility data programmatically. Every endpoint is scoped to the workspace that owns the API key used to authenticate — never another tenant's data. Rate limit: 300 requests/hour per endpoint, per workspace.
Authentication
curl https://anovoxlabs.com/api/v1/scores \ -H "Authorization: Bearer <your-workspace-api-key>"
Generate a key in Settings → API keys. Every endpoint is scoped to the workspace that owns the key — you will never see another tenant's data. Rate limit: 300 requests/hour per endpoint, per workspace.
/api/v1/scoresLast 180 days of scores_daily rows for this workspace, one row per engine per day.
Response
{
"type": "object",
"properties": {
"scores": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"format": "date"
},
"engine": {
"type": "string"
},
"citations": {
"type": "integer"
},
"total_runs": {
"type": "integer"
},
"sov": {
"type": "number"
}
}
}
}
}
}/api/v1/promptsUp to 500 prompts tracked by this workspace, most recent first.
Response
{
"type": "object",
"properties": {
"prompts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"text": {
"type": "string"
},
"language": {
"type": "string"
},
"locale": {
"type": "string"
},
"active": {
"type": "boolean"
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
}
}
}
}/api/v1/actionsThe workspace's gap list — every AI-visibility fix, ranked by Aim's impact score where available.
Query parameters
| Name | Type | Description |
|---|---|---|
status | "open" | "in_progress" | "done" | "dismissed" | Filter to one status. |
Response
{
"type": "object",
"properties": {
"actions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"prompt_id": {
"type": "string",
"format": "uuid",
"nullable": true
},
"recommendation": {
"type": "string"
},
"priority": {
"type": "string",
"enum": [
"high",
"medium",
"low"
]
},
"status": {
"type": "string",
"enum": [
"open",
"in_progress",
"done",
"dismissed"
]
},
"impact_score": {
"type": "number",
"nullable": true
},
"sov_baseline": {
"type": "number",
"nullable": true
},
"sov_result": {
"type": "number",
"nullable": true
},
"created_at": {
"type": "string",
"format": "date-time"
}
}
}
}
}
}/api/v1/agent-hitsUp to 500 recent Agent Analytics hits (verified/spoofed/unverified — see the verification field), most recent first.
Response
{
"type": "object",
"properties": {
"hits": {
"type": "array",
"items": {
"type": "object",
"properties": {
"bot_name": {
"type": "string"
},
"bot_company": {
"type": "string"
},
"category": {
"type": "string",
"enum": [
"crawler",
"search",
"user"
]
},
"path": {
"type": "string"
},
"method": {
"type": "string"
},
"status": {
"type": "integer",
"nullable": true
},
"verification": {
"type": "string",
"enum": [
"verified",
"spoofed",
"unverified"
]
},
"hit_at": {
"type": "string",
"format": "date-time"
}
}
}
}
}
}/api/v1/detectionsWhether the brand/each competitor was cited, per run. Scope to one prompt with ?prompt_id=, or omit it for the workspace's most recent 200 runs across all prompts.
Query parameters
| Name | Type | Description |
|---|---|---|
prompt_id | string<uuid> |
Response
{
"type": "object",
"properties": {
"detections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"run_id": {
"type": "string",
"format": "uuid"
},
"subject_type": {
"type": "string",
"enum": [
"brand",
"competitor"
]
},
"subject_id": {
"type": "string",
"format": "uuid",
"nullable": true
},
"cited": {
"type": "boolean"
},
"position": {
"type": "integer",
"nullable": true
},
"sentiment": {
"type": "string",
"nullable": true
},
"engine": {
"type": "string"
},
"run_at": {
"type": "string",
"format": "date-time"
}
}
}
}
}
}MCP Server
Anovox ships a Model Context Protocol server (mcp-server/ in the repo) that exposes this same API as MCP tools — get_scores, get_prompts, get_actions, get_agent_hits, and get_detections — so an AI assistant can query your workspace's visibility data directly inside a conversation.
{
"mcpServers": {
"anovox": {
"command": "node",
"args": ["path/to/anovox/mcp-server/index.js"],
"env": { "ANOVOX_API_KEY": "<your-workspace-api-key>" }
}
}
}Add that block to your MCP client's config (Claude Desktop, etc.) and point it at your checked-out copy of the server. See mcp-server/README.md for setup.