Aiso API Documentation | AI Visibility, Citations and MCP

Aiso API

Programmatic access to your AI visibility data. Query tracked prompts, brand mentions, visibility, sentiment, position, and the sources cited by ChatGPT and Gemini. All endpoints return JSON and authenticate with a per-account API key.

This API is in beta. Endpoints and response shapes may evolve.


Authentication

Include your API key in the x-api-key header on every request. You have one key per account. For project-specific calls, also send x-aiso-project-id with the project UUID. Generate a key in the Aiso app. Keys are stored as SHA-256 hashes, so the raw key is shown once on creation and cannot be retrieved again.

Example Requests

curl -X GET "https://app.getaiso.com/api/v1/projects" \
  -H "x-api-key: aiso_abc123..."

curl -X GET "https://app.getaiso.com/api/v1/prompts" \
  -H "x-api-key: aiso_abc123..." \
  -H "x-aiso-project-id: YOUR_PROJECT_UUID"

Rate limits

Default limits are 10 requests per minute and 20 requests per day per API key. Admins can adjust these per user. Every response includes headers you can use to manage retries.

Header Description
X-RateLimit-Limit Max requests in the current window.
X-RateLimit-Remaining Requests remaining before throttling.
X-RateLimit-Reset Seconds until the window resets.

Base URL

https://app.getaiso.com/api/v1

Models and filtering

Aiso tracks two AI models. Use gpt for OpenAI ChatGPT with web search and gemini for Google Gemini with Google Search grounding. Report endpoints accept a flexible query body with dates, pagination, dimensions, filters, and sort order.

Parameter Type Description
start_date string (YYYY-MM-DD) Snapshots on or after this date.
end_date string (YYYY-MM-DD) Snapshots on or before this date.
limit number (1–10,000) Max rows. Default 1,000.
offset number Skip N rows. Default 0.
dimensions string[] Break down by prompt_id, model_id, date, week, or month.
filters object[] `{ field, operator: "in"
order_by object[] `{ field, direction: "asc"

Example Report Body

{
  "start_date": "2025-09-01",
  "end_date": "2025-10-01",
  "dimensions": ["date"],
  "filters": [
    { "field": "model_id", "operator": "in", "values": ["gpt"] }
  ],
  "order_by": [{ "field": "visibility", "direction": "desc" }],
  "limit": 100
}

Key Endpoints

GET/projects

Returns project metadata. Without x-aiso-project-id, it lists all projects with summary fields. With the header, it returns one project including full domain_data.

POST/projects

Requires domain only. The server runs domain analysis once, saves domain_data, and returns it. Optional fields: country, language, entity_type, and prompts.

GET/prompts

List the prompts tracked in the project. Optionally filter by topic with ?topic=pricing.

GET/brands

List the tracked brands, meaning your brand plus its competitors.

GET/snapshots

List analysis snapshots. Each snapshot is one visibility analysis run.

POST/reports/brands

Measure visibility for your brand and competitors across tracked prompts. Each result includes mention rate, sentiment, and average position.

POST/reports/domains

Find the domains cited by AI models in their responses. Filter by model_id or domain, then order by used_count or citation_count.

POST/reports/urls

Drill into individual cited pages. Filter with model_id, domain, or url.

Common Requests

Overall visibility for all brands

{ }

Daily visibility trend for your brand

{
  "dimensions": ["date"],
  "filters": [
    { "field": "brand_id", "operator": "in", "values": ["Your Brand"] }
  ]
}

Visibility by AI model (GPT vs Gemini)

{
  "dimensions": ["model_id"]
}

Troubleshooting

Status Meaning
400 Missing x-aiso-project-id on a project-scoped route, or missing required body field
401 Missing or invalid API key
403 Visibility data not available yet (analysis not run)
409 Setup or prompt write already completed for this project
429 Rate limit exceeded

Errors

Error responses always return { "error": "message" }.

Status Meaning
401 Missing or invalid API key.
403 Visibility data not available yet.
409 Setup or prompt write already completed, or project limit reached.
404 Project or resource not found.
429 Rate limit exceeded.
500 Internal server error.