Documentation Index
Fetch the complete documentation index at: https://docs.appeeky.com/llms.txt
Use this file to discover all available pages before exploring further.
ChatGPT, Gemini, Claude, and Perplexity are increasingly the first place users go when they ask “which app should I use to…”. AI Visibility measures how often your app appears in those recommendations, ranks the user intents you serve well (and the ones you miss), and shows you the competitor apps that AI assistants suggest in your place.
It is the LLM-era counterpart of keyword rank tracking. Where the App Store’s search algorithm answers “which apps appear for the query ‘meditation app’”, AI assistants answer “which apps does ChatGPT recommend when a user asks ‘I can’t sleep, what app can help?’”. This API tracks the second.
What you get
- AI Visibility Score (0–100) per AI model — a single composite gauge you can put on a dashboard.
- Per-intent visibility, sentiment, and average position — tells you which user goals your app is showing up for and how favorably the assistant talks about it.
- Latest AI answers — the actual model responses, with a parsed list of the apps mentioned and at which rank.
- Competitor benchmark — the top apps the assistants recommend across your tracked prompts, ranked by how often they appear instead of (or alongside) you.
- Daily history — every metric is rolled up daily so you can chart trends and link changes to your ASO work or release cadence.
The same data powers both the dashboard widgets and any custom reporting you build on top of the API.
How it works
Your App
│
▼
Bootstrap (one-time)
│ LLM reads your app metadata + tracked keywords
│ → generates 8–12 user intents your app addresses
│ → generates 5–8 user-style prompts per intent
▼
Daily Scan
│ For every (prompt × enabled AI model):
│ 1. Send the prompt to the AI assistant
│ 2. Parse the answer with a 2nd-pass LLM
│ → which apps were mentioned, in which order, with what tone
│ 3. Resolve each mentioned app to a canonical App Store entry
▼
Aggregate
│ Roll up mentions into:
│ • per-intent visibility, sentiment, position
│ • app-level AI Visibility Score
│ • competitor benchmark
▼
Read API + Dashboard
You only ever interact with the high-level endpoints. The pipeline runs durably in the background, so you can close the tab and come back to fresh data tomorrow.
Models covered
| Model slug | Provider | Notes |
|---|
chatgpt | OpenAI | Default. Reflects what a casual ChatGPT user gets back. |
claude | Anthropic | Recommendations Claude gives without web search. |
gemini | Google | Recommendations Gemini gives without web search. |
perplexity | Perplexity | Web-grounded. Citations are returned alongside the answer. |
Pick which models to scan in Settings. You can run all four side-by-side and compare scores per model — different assistants often recommend different apps for the same intent.
Concepts
| Term | Meaning |
|---|
| Intent | A user goal your app addresses (e.g. “Fall asleep faster and unwind”). One row in the dashboard table. Generated by an LLM from your app metadata, but you can edit, pause, or add your own. |
| Prompt | A specific user-style query bound to an intent (“I struggle to fall asleep at night, what app can help me wind down?”). Each intent has 5–8 prompts mixing different styles (problem-led, branded, comparison, …). |
| Answer | A single response from one AI model to one prompt. Stored verbatim with citations and a parsed list of apps the model mentioned. |
| Mention | One app named by the assistant inside an answer, with its position in the list and the sentiment of the surrounding sentence. |
| AI Visibility Score | 0–100 composite per (model, app, day). 70% weighted by visibility (% of prompts where you appear, position-weighted), 30% by sentiment when mentioned. |
| Sentiment | −1 (assistant warns against your app) to +1 (assistant strongly recommends it), surfaced as a 0–100% score in the UI. |
Getting started
- Track the app you want to measure with
POST /v1/user/apps — see My Apps.
- Bootstrap AI Visibility for that app — see Bootstrap. This generates intents + prompts and runs the first scan automatically.
- Read the dashboard data with GET /overview, GET /intents, and GET /competitors.
After the initial bootstrap the agent runs daily by default. You don’t need to call anything else — fresh data appears on tomorrow’s overview automatically.
Endpoint map
| Endpoint | Purpose |
|---|
POST /ai-visibility/:appId/bootstrap | Generate intents + prompts and run the first scan. Run once per app, after that the system is on autopilot. |
GET /ai-visibility/:appId/overview | The big gauge: AI Visibility Score, sentiment, intents covered. |
GET /ai-visibility/:appId/intents | Per-intent table — visibility %, sentiment, position, top apps shown alongside you. |
GET /ai-visibility/:appId/intents/:intentId | Drill-down into one intent: its prompts and the latest AI answers. |
GET /ai-visibility/:appId/competitors | Apps the assistants recommend instead of (or with) you, ranked by appearance frequency. |
GET /ai-visibility/:appId/answers/:answerId | Raw model output + parsed app list for one answer. |
POST /ai-visibility/:appId/scan | On-demand re-scan — useful right after a metadata change. |
GET / PUT /ai-visibility/:appId/settings | Which models to scan, scan cadence (daily / weekly / off). |
POST / PATCH / DELETE /ai-visibility/:appId/intents[/…] | Manually add, edit, or pause intents. |
POST / PATCH / DELETE /ai-visibility/:appId/{intents/:id/prompts | prompts/:id} | Manually add or edit prompts. |
Authentication: standard Appeeky auth applies — JWT (web) or X-API-Key header. See Authentication.
Pricing
AI Visibility uses a dedicated credit pool — separate from your general API quota. This way a heavy AI Visibility user never accidentally drains the credits they need for the rest of the API (App Store metadata, ASO, keyword ranks, …).
You’ll see both buckets on every authenticated response:
X-RateLimit-Limit: 100000 # general API credits/month
X-RateLimit-Remaining: 97432
X-AiVisibility-Limit: 50000 # AI Visibility credits/month
X-AiVisibility-Remaining: 41088 # set when the request hit an /ai-visibility/* route
The same numbers are returned in JSON on GET /v1/auth/me under the credits object.
Per-call charges (the bulk of your usage)
Every assistant call — whether part of a scheduled scan or a manual /scan — deducts credits from the AI Visibility bucket based on which model was used:
| Model | Credits per (prompt × model) call |
|---|
chatgpt | 9 |
claude | 15 |
gemini | 5 |
perplexity | 3 |
A typical setup of 8 intents × 6 prompts = 48 prompts. One scan of chatgpt-only therefore costs 48 × 9 = 432 credits. At the default 3-day cadence that’s roughly 432 × 10 = 4,320 credits/month per app.
Flat charges (one-off endpoints)
| Action | Credits | Bucket |
|---|
Reading any AI Visibility endpoint (overview, intents, competitors, …) | 1 credit per call | AI Visibility |
POST /bootstrap | Free metering — auto-triggered initial scan is metered as a normal scan | AI Visibility |
Manual POST /scan | Σ(model credit cost) × prompts_count — same formula as scheduled scans, returned in X-Credit-Cost | AI Visibility |
| Editing intents / prompts / settings | Free | — |
Tier limits
AI Visibility is available on every paid plan. The credit bucket and the number of models you can enable scale with your plan:
| Plan | AI Visibility credits / month | Max models per app | Max apps |
|---|
| Free | — (not available) | — | — |
| Indie | 3,000 | 1 (chatgpt recommended) | 1 |
| Starter | 8,000 | 2 | 2 |
| Growth | 20,000 | 4 (all models) | 5 |
| Pro | 50,000 | 4 (all models) | 15 |
| Enterprise | 150,000 | 4 (all models) | unlimited |
What happens when the bucket runs low
| Trigger | Behavior |
|---|
Manual scan (POST /scan) | Hard fail — 429 AI_VISIBILITY_QUOTA_EXCEEDED with the cost the request would have charged and your remaining balance. No data is read or written. |
Bootstrap (POST /bootstrap) | Hard fail when the bucket is empty — bootstrap kicks off an initial scan and we’d rather block it upfront than create intents+prompts you can’t measure. |
| Scheduled scan (cron) | Graceful degrade — the scheduler drops models in cost-descending order (claude → gemini → perplexity, keeping chatgpt as the most user-valuable fallback) until the scan fits the remaining budget. The dropped models are recorded on the run row (models_dropped, degraded_reason='insufficient_credits') so the dashboard can show “scanned with fewer models due to low credits”. When even chatgpt-only doesn’t fit, the scan is skipped and next_scan_at pushed out 24h. |
Estimating your monthly cost
GET /v1/ai-visibility/:appId/settings returns a forecast using your current cadence and enabled models:
{
"aiVisibilityCredits": {
"limit": 50000,
"used": 8912,
"remaining": 41088,
"estimatedMonthlyCost": 14400,
"resetDate": "2026-06-12T00:00:00.000Z"
}
}
The X-AiVisibility-* headers and X-Credit-Cost are authoritative for what was actually deducted. See Rate Limits for the credit ceilings of each plan.
See also