List dismissed site migration candidates

GET/v1/api/sites/{site_id}/migrations/candidates/dismissed

List the site's dismissed (rejected) migration candidates, newest decision first.

Scope
sites:read
Token
API key or OAuth access token
Role
Any workspace member
MCP tool
list_dismissed_migration_candidates · preview: MCP write tools are in preview
What scopes, tokens and roles mean →
Request
curl "https://api.crawle.io/v1/api/sites/11111111-1111-1111-1111-111111111111/migrations/candidates/dismissed?limit=10" \
  -H "Authorization: Bearer $CRAWLE_API_KEY"
const response = await fetch("https://api.crawle.io/v1/api/sites/11111111-1111-1111-1111-111111111111/migrations/candidates/dismissed?limit=10", {
  headers: {
    Authorization: `Bearer ${process.env.CRAWLE_API_KEY}`,
  },
});
const data = await response.json();
import os

import requests

response = requests.request(
    "GET",
    "https://api.crawle.io/v1/api/sites/11111111-1111-1111-1111-111111111111/migrations/candidates/dismissed?limit=10",
    headers={
        "Authorization": f"Bearer {os.environ['CRAWLE_API_KEY']}",
    },
)
data = response.json()
$CRAWLE_API_KEY
is an API key from Settings › API keys.
Response 200JSON
{
  "items": [
    {
      "crawler_candidate_id": 1,
      "migration_type": "example",
      "project_id": "example",
      "reason": "example",
      "redirect_count": 1,
      "rejected_at": "2026-01-01T09:00:00Z",
      "restorable": true,
      "site_id": "example",
      "source_domain": "example.com",
      "target_domain": "example.com",
      "withdrawn_by_crawle": true
    }
  ],
  "next_cursor": "example"
}

Example generated from the API contract.

Parameters

site_idpath · string (uuid)required
limitquery · integer
1–100 · default 50
cursorquery · string or null
up to 100 characters

Pages with cursor and limit.

Response 200

itemsarray of DismissedMigrationCandidaterequired
crawler_candidate_idinteger or nullrequired
migration_typestringrequired
project_idstringrequired
reasonstring or nullrequired
redirect_countintegerrequired
rejected_atstring (date-time) or nullrequired
restorablebooleanrequired
site_idstring or nullrequired
source_domainstringrequired
target_domainstringrequired
withdrawn_by_crawlebooleanrequired
next_cursorstring or null

Errors

  • 401

    When
    Missing, invalid, or expired token.
  • 403

    When
    The token has none of the accepted scopes (sites:read).
  • 422

    When
    The request did not match the schema. detail lists each problem.
  • 429

    When
    Rate limited. Wait for Retry-After seconds.

All errors and what to do →

Generated from the API contract at 7e7039b0b, synced October 30, 2026.