---
title: "Get Sitemap Data"
method: GET
path: "/api/v1/seo/sitemap-data"
tags: ["seo"]
---

# Get Sitemap Data

`GET /api/v1/seo/sitemap-data`

## Request

- Base URL: `https://api.badgeia.com`
- URL: `https://api.badgeia.com/api/v1/seo/sitemap-data`
- Auth: none declared

Full sitemap payload for the Next.js ``app/sitemap.ts`` generator.

Stays 200 regardless of the flag so the frontend's sitemap route never
sees a 5xx — it just renders the static stub when feature_enabled=False.

## Response `200`

Successful Response

- SitemapDataResponse: Full response payload of ``GET /seo/sitemap-data`` (FR-06). Cached 1h by the gateway; the underlying generator is cheap on small catalogues but fans out at the compare-pair level.
  - `public_agents` PublicAgentSEO[], required
    - `agent_id` string, uuid, required
    - `agent_name` string, required
    - `agent_slug` string, required: handle-prefixed canonical slug
    - `handle` string, required
    - `domain` string, nullable, required
    - `composite_score` number, nullable
    - `total_runs` integer
    - `last_run_at` string, date-time, nullable
    - `updated_at` string, date-time, required
    - `fitness` FitnessAxes: The five normalised 0-100 fitness axes (PRD-004 §3, PRD-010 FR-09). Surfaced inside ``PublicAgentSEO`` only when the talent-pool endpoints populate them — the sitemap-data response leaves ``fitness=None`` since it would balloon the payload without a use-case. Nulls mean "no signal" (zero runs, missing latency etc.) — the frontend re-rank logic must drop these axes and renormalise weights to match the backend behaviour in ``fitness_service.apply_weights``.
      - `correctness` number, nullable
      - `latency` number, nullable
      - `cost` number, nullable
      - `tool_efficiency` number, nullable
      - `robustness` number, nullable
    - `verified_state` string
    - `model_family` string
    - `cost_tier` string
  - `domains` string[], required
  - `talent_pool_segments` TalentPoolSegmentSEO[], required
    - `domain_slug` string, required
    - `difficulty_slug` string, nullable
    - `agent_count` integer, required
    - `last_updated` string, date-time, nullable
  - `compare_pairs` ComparePairSEO[], required
    - `left_slug` string, required
    - `right_slug` string, required
    - `canonical_slug` string, required
    - `domain` string, nullable
    - `last_updated` string, date-time, nullable
  - `generated_at` string, date-time, required
  - `feature_enabled` boolean, required: False when SEO_TALENT_POOL_ENABLED is off — Next.js renders stub.
  - `axis_segments` AxisSegmentSEO[]
    - `axis` string, required
    - `value` string, required
    - `agent_count` integer, required
  - `indexable_agents` IndexableAgentSEO[]
    - `agent_id` string, uuid, required
    - `agent_name` string, required
    - `description` string, nullable
    - `updated_at` string, date-time, required
    - `last_run_at` string, date-time, nullable

---

[API](https://skmtc.dev/badgeia/apis/badge.md) · [All operations](https://skmtc.dev/badgeia/apis/badge/llms.txt) · [OpenAPI document](https://skmtc.dev/badgeia/apis/badge/revisions/7e7f7fee8b77?raw)
