Skip to main content

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 slugProviderNotes
chatgptOpenAIDefault. Reflects what a casual ChatGPT user gets back.
claudeAnthropicRecommendations Claude gives without web search.
geminiGoogleRecommendations Gemini gives without web search.
perplexityPerplexityWeb-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

TermMeaning
IntentA 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.
PromptA 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, …).
AnswerA single response from one AI model to one prompt. Stored verbatim with citations and a parsed list of apps the model mentioned.
MentionOne app named by the assistant inside an answer, with its position in the list and the sentiment of the surrounding sentence.
AI Visibility Score0–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

  1. Track the app you want to measure with POST /v1/user/apps — see My Apps.
  2. Bootstrap AI Visibility for that app — see Bootstrap. This generates intents + prompts and runs the first scan automatically.
  3. 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

EndpointPurpose
POST /ai-visibility/:appId/bootstrapGenerate intents + prompts and run the first scan. Run once per app, after that the system is on autopilot.
GET /ai-visibility/:appId/overviewThe big gauge: AI Visibility Score, sentiment, intents covered.
GET /ai-visibility/:appId/intentsPer-intent table — visibility %, sentiment, position, top apps shown alongside you.
GET /ai-visibility/:appId/intents/:intentIdDrill-down into one intent: its prompts and the latest AI answers.
GET /ai-visibility/:appId/competitorsApps the assistants recommend instead of (or with) you, ranked by appearance frequency.
GET /ai-visibility/:appId/answers/:answerIdRaw model output + parsed app list for one answer.
POST /ai-visibility/:appId/scanOn-demand re-scan — useful right after a metadata change.
GET / PUT /ai-visibility/:appId/settingsWhich 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:
ModelCredits per (prompt × model) call
chatgpt9
claude15
gemini5
perplexity3
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)

ActionCreditsBucket
Reading any AI Visibility endpoint (overview, intents, competitors, …)1 credit per callAI Visibility
POST /bootstrapFree metering — auto-triggered initial scan is metered as a normal scanAI Visibility
Manual POST /scanΣ(model credit cost) × prompts_count — same formula as scheduled scans, returned in X-Credit-CostAI Visibility
Editing intents / prompts / settingsFree

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:
PlanAI Visibility credits / monthMax models per appMax apps
Free— (not available)
Indie3,0001 (chatgpt recommended)1
Starter8,00022
Growth20,0004 (all models)5
Pro50,0004 (all models)15
Enterprise150,0004 (all models)unlimited

What happens when the bucket runs low

TriggerBehavior
Manual scan (POST /scan)Hard fail429 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