PendiumDocs

Get Report

Fetch the full visibility report with raw LLM responses, scores, sources, and recommendations.

GET /api/visibility/report?syntheticId={id}

Authentication: Required

This is the big one. Returns the complete visibility report for a brand — every query result, every raw LLM response, cited sources, platform-by-platform scores, and the topics that were scanned.

Use this after a scan completes to understand exactly how AI platforms perceive the brand.

Query parameters

ParameterTypeRequiredDescription
syntheticIdintegerYesThe brand agent ID.

Example

curl "https://pendium.ai/api/visibility/report?syntheticId=1234" \
  -H "x-api-key: pk_live_xxxxxxxxxxxx"

Response

The response is large and detailed. Here's the structure:

{
  "syntheticId": 1234,
  "scanFailed": false,
  "brandName": "Example",
  "scanDate": "2026-03-17T14:30:00Z",
  "overallScore": 62,
  "platformScores": {
    "chatgpt": 71,
    "claude": 58,
    "gemini": 55,
    "aio": 64
  },
  "queryResults": [
    {
      "query": "best project management tools for startups",
      "platform": "chatgpt",
      "model": "gpt-4o-mini",
      "mentioned": true,
      "sentiment": "positive",
      "position": 2,
      "rawResponse": "Here are the top project management tools for startups: 1. Notion...",
      "citedSources": [
        { "url": "https://example.com/features", "title": "Example Features" }
      ],
      "competitors": ["Notion", "Asana", "Monday.com"]
    }
  ],
  "topics": [
    {
      "id": "topic-uuid",
      "name": "Project Management",
      "queries": [
        "best project management tools",
        "project management for startups"
      ]
    }
  ],
  "reportUrl": "https://pendium.ai/1234/visibility",
  "brandPageUrl": "https://pendium.ai/brands/example",
  "_pendium": {
    "what_you_are_seeing": "Full visibility report with 30 query results across 4 platforms...",
    "how_to_use": "Look at queryResults to see exactly what each AI said..."
  }
}

Key fields

FieldWhat it tells you
scanFailedtrue when the run reached no AI engine (a transient failure) — the report is that run's real (degenerate, 0-score) result, not a previous good scan. Always reflects the most recent attempt, matching what poll returns.
overallScore0–100 composite score across all platforms
platformScoresPer-platform breakdown (chatgpt, claude, gemini, aio). A platform the scan didn't query comes back with queried: false and a null score/mention rate — never a real 0. Only treat a platform as "scores 0" when queried is true.
queryResultsEvery individual query — what was asked, what the AI said, whether the brand was mentioned, sentiment, position in the response, and which competitors appeared
queryResults[].rawResponseThe actual text the AI returned — useful for understanding context and tone
queryResults[].citedSourcesURLs the AI referenced — shows which content is driving visibility
queryResults[].competitorsOther brands mentioned in the same response
topicsThe topic groups and queries that were scanned

Free plan

The API needs a Starter or Pro plan on your account. If your key can read a brand whose owner is on the free plan (a teammate's brand, for example), this endpoint returns the partial report the app shows instead of the full report: the score, the top 3 findings and how many more there are. Raw responses, query results, sources, competitors and recommendations aren't returned.

{
  "freeTierLimited": true,
  "scanAvailable": true,
  "scanFailed": false,
  "syntheticId": 1234,
  "scanId": "6f1c…",
  "scanDate": "2026-10-01T14:30:00.000Z",
  "score": 41,
  "visibilityLevel": "Moderate",
  "topFindings": [
    { "title": "Why is Example missing from Gemini answers?", "detail": "…" }
  ],
  "moreFindings": 2,
  "note": "This brand is on the free plan, so only the score and the top 3 findings are available. …",
  "upgradeUrl": "https://pendium.ai/pricing"
}

Platform admins, owners on Starter or Pro (including a Pro trial) and brands in their first 30 minutes get the full report.

What to do with this data

Check noResponse in each query's platform results before interpreting an absent mention. A failed response stays in the report for diagnostics but is excluded from derived mention rates, topic summaries, and gap recommendations. A question with no usable answers does not count toward answered-question totals. In scan-history summaries, queryCount counts questions with at least one usable answer, and brandMentionCount counts mentions across those answers.

  • Find gaps: Look for answered queries where mentioned is false to find conversations where the brand is absent
  • Spot competitors: Check competitors arrays to see who's getting recommended instead
  • Identify strong content: Look at citedSources to see which pages are actually driving AI mentions
  • Compare platforms: Some brands are visible on ChatGPT but invisible on Claude — the platform scores show where to focus

On this page