- Verifying why a particular intent has the visibility / sentiment score it does.
- Debugging an unexpected mention (e.g. why the assistant suggested an unrelated competitor).
- Embedding a “view source answer” link in your dashboard so users can see the actual model output.
answerId is exposed by the intent drill-down endpoint inside the prompts[].latestAnswers[] array.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| appId | string | Yes | Apple App ID (numeric) — must match the answer’s owner app for security |
| answerId | string (UUID) | Yes | Returned by GET /intents/:intentId |
Response
answer fields
| Field | Description |
|---|---|
id | UUID. Same as the answerId you requested. |
promptId | The prompt this answer was for. Use GET /intents/:intentId to find the prompt text. |
intentId | The intent the prompt belongs to. |
modelSlug | One of chatgpt, claude, gemini, perplexity. |
modelId | Exact model ID used (e.g. gpt-4.1, claude-sonnet-4-20250514, gemini-2.5-flash, sonar). |
rawText | The assistant’s complete answer. Whitespace-preserved. May contain markdown. |
citations | Web sources the assistant cited, when the model supports them. Currently only Perplexity returns citations; other models return []. |
fetchedAt | When Appeeky fetched the answer (UTC). |
status | ok (parsed cleanly), parse_failed (we kept the raw text but couldn’t extract structured mentions), refusal (assistant declined to answer), error (the model call itself failed; rawText will be empty). |
mentions fields
One row per app the assistant referred to in the answer, ordered by position.
| Field | Description |
|---|---|
name | App name as the assistant wrote it. |
position | 1-based rank when the assistant gave a list. null for free-form prose. |
trackId | Canonical App Store ID. null when the resolver couldn’t confidently match the assistant’s spelling. |
isOwnerApp | true when this mention is your tracked app. |
sentiment | −1 (negative) to +1 (positive), reflecting the assistant’s framing in the surrounding sentence. null when the answer was a neutral list with no per-app commentary. |
Citation handling
For models with web search (currently Perplexity), the assistant often inserts inline citation markers like[1], [2], [3] — those numbers map 1-indexed into the answer.citations array.
If you want to match a mention back to a citation: when we extract mentions, the second-pass parser also returns a citationIndex on each app. That value is stored in the underlying ai_visibility_app_mentions table; it isn’t currently exposed on this endpoint, but you can match the [N] markers in rawText to answer.citations[N-1] yourself for now.
Code examples
Pattern: walk every answer for an intent
Credits
- 1 credit per call.
Errors
| Status | Code | When |
|---|---|---|
| 404 | NOT_FOUND | Answer doesn’t exist or doesn’t belong to this app |
| 401 | — | Missing or invalid API key / JWT |
| 429 | — | Insufficient monthly credits |
See also
- Intents endpoint — source of
answerIds inprompts[].latestAnswers[] - Prompts — see/manage the prompt that produced this answer
- Overview — concept page

