Data Formats and Errors
The exact shape of every file you can export from 99Visibility, the enums inside them, and the error envelope the dashboard receives. Use it to parse exports in a spreadsheet, a script or an agent. There is no public API; see API and programmatic access.
Enums
| Name | Values |
|---|---|
| Platform key | chatgpt (ChatGPT), aio (Google AI Overviews), ai_mode (Google AI Mode), google (Gemini), perplexity (Perplexity), claude (Claude) |
| Audit status | running, pending, completed, failed |
| Sentiment | positive, neutral, negative |
| Flag type | incorrect, hallucination, outdated (not emitted) |
| Flag severity | critical, moderate, minor |
| Recommendation category | visibility_gap, accuracy, platform_specific, competitor, content_structure, schema, freshness, eeat, quick_win |
| Recommendation priority | critical, high, medium, low |
| Recommendation effort | low, medium, high |
| Fact category | pricing, feature, founding, leadership, other |
Audit JSON
File name 99visibility-audit-[brand]-[YYYY-MM-DD].json. Top-level keys:
| Key | Contents |
|---|---|
exported_at, exported_by | ISO timestamp; the string "99Visibility (https://www.99visibility.com)". |
audit | id, status, score, breakdown {mentionRate, accuracyRate, sentimentScore, citationRate}, created_at, completed_at, competitor_data, accuracy_checked, started_by, region (the country the engines were asked from), not_fact_checked, previous_score, previous_score_comparable, previous_score_reason, new_market_baseline. |
brand | id, name, url, facts [{key, value, category}]. |
platform_results[] | id, platform, score, mention_count, query_count, breakdown, raw_results[] {keyword, mentioned, mention_count, truncated}, query_results[], unmeasured[] {keyword, reason}. |
query_results[] (inside each platform) | keyword, prompt, mentioned, mention_count, sentiment, sentiment_score, score, context, raw_response, citations[] {url, title, is_own_site}. |
accuracy_flags[] | type, severity, claim, fact, explanation. Below Starter, only type and severity. |
accuracy_flags_gated | true when the flag text was withheld for the plan. |
recommendations[] | id, audit_id, category, priority, title, action, why, effort, target_url, completed, completed_at, created_at. |
Audit CSV
File name 99visibility-audit-[brand]-[YYYY-MM-DD].csv. Every cell is quoted. Up to three blocks, separated by an empty row:
- Results:
Platform, Prompt, Mentioned, Mention Count, Platform Score. One row per prompt per platform; Mentioned is Yes or No. - "Accuracy Issues":
Type, Severity, AI Claim, Actual Fact, Explanation. Below Starter, a count line instead. - "Recommendations":
Priority, Category, Title, Action, Effort, Completed.
Other CSVs
- Prompts (
99visibility-prompts-[brand]-[date].csv):Prompt, Type, Topic, Status, Visibility Score, Mention Rate, Sentiment, Search Volume, Competition, CPC, ChatGPT, Google AI Overviews, Gemini, Perplexity, Claude, Created. Only the rows on screen. - Citation gaps (
99visibility-citation-gaps-[brand]-[date].csv):Domain, Gap Score, Competitor Citations, Platforms, Prompts, Top URL.
Account data export
File name 99visibility-data-export-[date].json. Keys: exported_at, user {id, email, created_at}, profile, then one array per table, named after it: brands, keywords, recommended_queries, audits, platform_results, query_results, citations, retrieved_sources, accuracy_flags, accuracy_claim_reviews, recommendations, access_checks, site_health_checks, ai_referral_events, ai_referral_daily, session_answers, extension_tokens, report_exports, agent_runs, agent_steps, support_tickets, subscription_cancellations, outreach_targets, teams, team_members, team_invites, referral_codes, referrals, quest_completions, quest_rewards, academy_lesson_passes, academy_exam_attempts, academy_certificates, login_activity. query_results holds the AI answers; agent_runs and agent_steps hold your Agent V conversations; subscription_cancellations holds the reason and feedback you gave when cancelling. Every row is yours: a table you share with other accounts, such as a team, contributes only your own rows. If any part of your data cannot be read, the export answers ACCOUNT_EXPORT_FAILED (500) and no file, never a file with parts missing.
PDF report
A rendering of the audit page as it is on screen; collapsed sections are left out. Only a completed audit can be exported. Monthly allowance: Starter 3, Growth 10 and Pro 50 a month; the Free plan has none. Exporting the same audit again in the same month uses no extra report.
Error envelope
Every error the dashboard receives has the body {"error": "message", "code": "DOMAIN_DESCRIPTION"}. The message is for people and may be reworded; the code is stable. Common codes: AUTH_UNAUTHORIZED (401), AUTH_FORBIDDEN (403), AUDIT_NOT_FOUND (404), QUOTA_AUDIT_LIMIT, QUOTA_AGENT_RUN_LIMIT, SPEND_CAP_REACHED (503), RATE_LIMITED (429). The full list of messages is in Error messages.