---
title: "Scan the customer's sitemap (nested indexes handled) or crawl a blog root page and return same-site page URLs, minus the articles RankControl published (those are linked already). The source is remembered and re-read daily. Costly (3/min); review the URLs, then call add_site_pages with the keepers."
method: POST
path: "/api/v1/links/detect"
---

# Scan the customer's sitemap (nested indexes handled) or crawl a blog root page and return same-site page URLs, minus the articles RankControl published (those are linked already). The source is remembered and re-read daily. Costly (3/min); review the URLs, then call add_site_pages with the keepers.

`POST /api/v1/links/detect`

## Request

- Base URL: `https://api.rctrl.com`
- URL: `https://api.rctrl.com/api/v1/links/detect`
- Auth: HTTP bearer

Requires the `write:content` scope.

## Request body

- object
  - `source` 'sitemap' | 'blogroot', required: sitemap reads a sitemap XML. blogroot collects the links on one page, like your blog index.
  - `url` string, required: Sitemap XML URL or a page URL to crawl

## Response `200`

Success; the payload is wrapped in a data envelope

- object
  - `data` unknown

## Other responses

- `400`: Bad input
- `401`: Missing or invalid API key
- `403`: API key lacks the required scope
- `404`: Not found in this workspace
- `429`: Rate limited; the body includes a retryAfterMs hint

---

[API](https://skmtc.dev/rctrl/apis/rankcontrol-api.md) · [All operations](https://skmtc.dev/rctrl/apis/rankcontrol-api/llms.txt) · [OpenAPI document](https://skmtc.dev/rctrl/apis/rankcontrol-api/revisions/98ecd236394a?raw)
