<?xml version="1.0" encoding="UTF-8"?>
<!--
  Sitemap for https://batchrouter.com
  Protocol: https://www.sitemaps.org/protocol.html

  Sections
  ────────
  1. Core / marketing
  2. Documentation
  3. Marketplace
  4. Providers  (update slugs when the public provider directory changes)
  5. Workflows  (update slugs when new workflow products are published)
  6. Blog       (update when a post is added)
  7. Trust
  8. Legal

  Auth-gated routes (/app/*, /admin/*) and form-only routes
  (/login, /signup, /forgot-password, …) are intentionally excluded.

  When adding a new public route:
    • Add a <url> entry here
    • Give it exactly one <loc>: a <url> block holding two addresses is not a
      second entry, it is one malformed entry and a crawler drops a page.
    • Keep the same <lastmod> format: YYYY-MM-DD
    • Never write a literal double hyphen inside these comments — XML forbids
      it and a strict parser rejects the whole document.

  THIS FILE IS MAINTAINED BY HAND, which is why it goes stale and why it has
  pointed at 404s. The durable fix is to serve /sitemap.xml from the Worker,
  built from the live GET /v1/providers and GET /v1/content/posts responses the
  same way src/server.ts already builds the blog feeds. Until then, the
  `providerSitemap` and `workflowSitemap` tests are what keep the hand-written
  provider and workflow sections honest.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <!-- ── 1. Core / marketing ────────────────────────────────────────── -->

  <url>
    <loc>https://batchrouter.com/</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/pricing</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/calculator</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/consulting</loc>
    <lastmod>2026-09-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/agents</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/rankings</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/support</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>

  <!-- ── 2. Documentation ───────────────────────────────────────────── -->
  <!-- The full developer docs live on their own subdomain + sitemap:
       https://docs.batchrouter.com/sitemap-index.xml . The hub keeps only
       the lean quickstart at /start; old /docs* paths 301 to the new homes. -->

  <url>
    <loc>https://batchrouter.com/start</loc>
    <lastmod>2026-06-18</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>

  <!-- ── 3. Marketplace (model catalog) ────────────────────────────── -->

  <url>
    <loc>https://batchrouter.com/marketplace</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>

  <!-- ── 4. Providers ───────────────────────────────────────────────── -->
  <!--
    Update this section when a new provider is onboarded.
    Slugs come from GET /v1/providers → providers[].slug
  -->

  <url>
    <loc>https://batchrouter.com/providers</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/providers/apply</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/providers/openai</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/providers/anthropic</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/providers/mistral</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/providers/xai</loc>
    <lastmod>2026-09-21</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/providers/together</loc>
    <lastmod>2026-09-21</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>

  <!-- ── 5. Workflows ───────────────────────────────────────────────── -->
  <!--
    Update this section when a new workflow product is published.
    Slugs come from GET /v1/catalog/workflow-products → data[].slug
  -->

  <url>
    <loc>https://batchrouter.com/workflows</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/workflows/agent-main-thread</loc>
    <lastmod>2026-06-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/workflows/batch-summarization</loc>
    <lastmod>2026-06-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/workflows/structured-extraction</loc>
    <lastmod>2026-06-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/workflows/data-labeling</loc>
    <lastmod>2026-06-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/workflows/embeddings-backfill</loc>
    <lastmod>2026-06-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/workflows/support-rollups</loc>
    <lastmod>2026-06-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/workflows/document-review</loc>
    <lastmod>2026-06-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <!-- ── 6. Blog ────────────────────────────────────────────────────── -->
  <!--
    Update this section when a new post is added.
    Each post lives at src/content/blog/<slug>.ts and is registered in
    src/content/blog/index.ts.
  -->

  <url>
    <loc>https://batchrouter.com/blog</loc>
    <lastmod>2026-05-30</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/blog/hello-world-batchrouter-blog</loc>
    <lastmod>2026-05-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/blog/why-we-built-batchrouter</loc>
    <lastmod>2026-05-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/blog/usage-based-receipts-agentic-commerce</loc>
    <lastmod>2026-05-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/blog/openai-batch-vs-anthropic-message-batches</loc>
    <lastmod>2026-05-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/blog/routing-a-jsonl-batch-in-under-50ms</loc>
    <lastmod>2026-05-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/blog/cut-your-ai-bill-without-changing-prompts</loc>
    <lastmod>2026-05-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/blog/lessons-from-routing-100m-tokens</loc>
    <lastmod>2026-05-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/blog/tool-aware-routing-rejection-receipts-privacy-proofs</loc>
    <lastmod>2026-06-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/blog/smoother-sign-in-and-reliable-verify-links</loc>
    <lastmod>2026-06-10</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/blog/spending-controls-one-click-feedback-steadier-sign-in</loc>
    <lastmod>2026-06-12</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>

  <!-- ── 7. Trust ────────────────────────────────────────────────────── -->

  <url>
    <loc>https://batchrouter.com/security</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.5</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/changelog</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.6</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/status</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>

  <!-- ── 8. Legal ───────────────────────────────────────────────────── -->

  <url>
    <loc>https://batchrouter.com/legal</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.4</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/privacy</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.4</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/terms</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.4</priority>
  </url>

  <url>
    <loc>https://batchrouter.com/refunds</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.4</priority>
  </url>

</urlset>
