42ADocs
Analytics

General vitals

Site-wide GEO/SEO/ADO feature scores for a brand. Worst-first.

General vitals are the site-wide feature scores for a brand — robots.txt presence, llms.txt presence, sitemap quality, canonical setup, etc. These are evaluated against the website as a whole, not per individual page. The companion to page vitals which scores per-page features.

The intended question this answers: "What should I fix on my website at the configuration level?". Start here for site-wide config, then drill into page vitals for per-page issues.

Latest scores, worst first

curl -H "Authorization: Bearer $KEY" \
  "https://api.42a.ai/api/v1/general-vitals?brand_id=brn_xxx"
const vitals = await fetch(
  `https://api.42a.ai/api/v1/general-vitals?brand_id=${brandId}`,
  { headers: { Authorization: `Bearer ${KEY}` } },
).then((r) => r.json());

const failing = vitals.data.features.filter((f) => f.score < 0.5);
console.log(`${vitals.data.brand_name}: avg ${vitals.data.avg_score?.toFixed(2) ?? "n/a"}`);
console.log("Fix:", failing.map((f) => `${f.feature_id} (${f.reason})`).join("\n      "));
import requests

vitals = requests.get(
    "https://api.42a.ai/api/v1/general-vitals",
    params={"brand_id": "brn_xxx"},
    headers={"Authorization": f"Bearer {KEY}"},
).json()["data"]

failing = [f for f in vitals["features"] if f["score"] < 0.5]
print(f"{vitals['brand_name']}: avg {vitals['avg_score']}")
for f in failing:
    print(f"  fix {f['feature_id']}: {f['reason']}")

Response

Returns the latest score per feature_id, sorted worst-score-first so callers immediately see what to fix.

{
  "data": {
    "brand_id": "brn_xxx",
    "brand_name": "Acme",
    "website": "https://acme.com",
    "avg_score": 0.62,
    "features": [
      {
        "feature_id": "has_llms_txt",
        "score": 0.0,
        "reason": "No /llms.txt found at root.",
        "created_at": 1730000000000
      },
      {
        "feature_id": "robots_allows_ai_crawlers",
        "score": 0.4,
        "reason": "robots.txt blocks GPTBot and ClaudeBot. Consider allowing.",
        "created_at": 1730000000000
      },
      {
        "feature_id": "sitemap_present",
        "score": 1.0,
        "reason": "sitemap.xml found and parses cleanly.",
        "created_at": 1730000000000
      }
    ]
  }
}

General vs page

QuestionTool
"What site-wide config should I fix?" (robots.txt, llms.txt, sitemap, canonical, etc.)/api/v1/general-vitals
"Which specific pages should I improve?" (per-page render quality, schema, content depth, etc.)/api/v1/page-vitals
"How is my brand doing in AI answers?" (visibility metrics, mentions)/api/v1/brands/{id}/stats

The first two are usually called together: fix the global config first, then iterate page by page.

See also

  • Page vitals — the per-page complement to this endpoint.
  • The full feature-score catalog is documented in your dashboard under Settings → Site features.

Last updated