API

Visibility

Access visibility scores and trends

The visibility API returns per-date, per-model records showing how visible your brand is across AI search platforms.

List Visibility Data

GET /v1/visibility

Returns visibility records for active prompts scoped to the API key's allowed properties. Each record represents one model's visibility score for one day. Ordered by date, newest first.

  • Keys with all properties access return visibility across every property on the team
  • Scoped keys return only visibility for their authorised properties

Headers

HeaderValueRequired
AuthorizationBearer hdg_sk_live_...Yes

Example

curl https://api.useheading.com/v1/visibility \
  -H "Authorization: Bearer hdg_sk_live_abc123..."

Response — 200 OK

{
  "data": [
    {
      "date": "2026-03-20",
      "model": "chatgpt",
      "visibilityPct": 78.4,
      "mentionCount": 12,
      "avgPosition": 2.3,
      "avgSentiment": 0.85,
      "property": {
        "id": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
        "name": "Acme Corp"
      }
    },
    {
      "date": "2026-03-20",
      "model": "perplexity",
      "visibilityPct": 65.2,
      "mentionCount": 8,
      "avgPosition": 3.1,
      "avgSentiment": 0.72,
      "property": {
        "id": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
        "name": "Acme Corp"
      }
    }
  ],
  "total": 2
}

Response fields

FieldTypeDescription
datestringDate in YYYY-MM-DD format
modelstringAI platform identifier (e.g. chatgpt, perplexity, ai_overview, _all)
visibilityPctnumberVisibility percentage (0-100)
mentionCountnumberNumber of times the brand was mentioned
avgPositionnumber or nullAverage position in AI responses (lower is better)
avgSentimentnumber or nullAverage sentiment score (-1 to 1)
propertyobjectThe property this visibility data belongs to
property.idstringProperty UUID
property.namestringProperty display name

Error responses

StatusCodeWhen
401MISSING_AUTHNo Authorization header
401INVALID_KEYInvalid or revoked API key
429rate_limit_exceededRate limit exceeded (100 req/min)
500INTERNAL_ERRORServer error