Diagnose
Run AI-powered query diagnostics to understand why your brand does or doesn't appear in AI search results.
Overview
Diagnose analyzes why your brand does or doesn't appear for a specific search query across AI models. It queries ChatGPT, Claude, Gemini, and Perplexity, then provides competitor analysis, hypothesis factors, and prioritized recommendations.
view=usage parameter.Run Diagnosis
Body Parameters
brand_idstringrequiredThe brand ID to diagnose
querystringrequiredThe search query to diagnose (3-500 characters)
GET /diagnose?diagnosis_id=Xevery 3 seconds until status is "completed" or "failed".Get Result
Query Parameters
diagnosis_idstringGet a specific diagnosis result (for polling)
brand_idstringBrand ID (required for history and usage views)
viewstring"history" or "usage". Defaults to history when brand_id is provided.
limitintegerMax results for history view (1-100)
Default: 20
The Diagnosis Object
Diagnosis Schema
idstringUnique diagnosis identifier
statusstring"pending", "running", "validating", "completed", or "failed"
querystringThe search query that was diagnosed
visibility_scorefloatnullableVisibility score for this query (0-100)
best_positionintegernullableBest rank across all AI models
model_positionsobjectnullablePosition per model: {chatgpt: 3, claude: null, ...}
competitorsarraynullableTop competitors with positions and scores
confidence_scoreintegernullableConfidence in the diagnosis (0-100)
confidence_levelstringnullable"High", "Medium", or "Low"
recommendationsarraynullablePrioritized recommendations with effort and impact
summarystringnullableOne-sentence narrative summary
visibility_changefloatnullableChange vs previous diagnosis of the same query
duration_msintegernullableTime taken in milliseconds
models_succeededstring[]nullableModels that returned results
models_failedstring[]nullableModels that failed or timed out
View History
Use view=history to list past diagnoses for a brand. Results are deduplicated by query, showing only the most recent diagnosis per unique query.
Check Usage
Use view=usage to check your monthly diagnosis quota. Returns -1 for limit and remaining when on an unlimited plan.
Quick Reference
| Endpoint | Description | Rate Limit |
|---|---|---|
POST /diagnose | Run new diagnosis | 10/min |
GET /diagnose | Result / history / usage | 60/min |
