Get site migration candidate
GET
/v1/api/sites/{site_id}/migrations/candidates/{candidate_id}Get one migration candidate of the site.
- Scope
sites:read- Token
- API key or OAuth access token
- Role
- Any workspace member
- MCP tool
get_migration_candidate· preview: MCP write tools are in preview- What scopes, tokens and roles mean →
Request
cURL
curl "https://api.crawle.io/v1/api/sites/11111111-1111-1111-1111-111111111111/migrations/candidates/1" \ -H "Authorization: Bearer $CRAWLE_API_KEY"
JavaScript
const response = await fetch("https://api.crawle.io/v1/api/sites/11111111-1111-1111-1111-111111111111/migrations/candidates/1", {
headers: {
Authorization: `Bearer ${process.env.CRAWLE_API_KEY}`,
},
});
const data = await response.json();Python
import os
import requests
response = requests.request(
"GET",
"https://api.crawle.io/v1/api/sites/11111111-1111-1111-1111-111111111111/migrations/candidates/1",
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
{
"avg_path_similarity": 1.5,
"central_project_id": "example",
"central_project_status": "example",
"central_site_id": "example",
"confidence": 1.5,
"confirm_blocked_reason": "example",
"confirmable": true,
"details": {},
"first_detected_at": "example",
"homepage_redirect_count": 1,
"id": 1,
"last_detected_at": "example",
"migration_type": "example",
"permanent_redirect_count": 1,
"redirect_count": 1,
"redirect_coverage": 1.5,
"samples": [
{
"first_seen_at": "example",
"id": 1,
"is_homepage_target": true,
"last_seen_at": "example",
"path_similarity": 1.5,
"redirect_count": 1,
"source_url": "https://example.com/",
"status_code": 1,
"target_url": "https://example.com/"
}
],
"source_domain": "example.com",
"status": "example",
"target_domain": "example.com",
"target_site_id": "example",
"target_verified": false,
"temporary_redirect_count": 1,
"website_id": 1
}Example generated from the API contract.
Parameters
site_idpath · string (uuid)requiredcandidate_idpath · integerrequired
Response 200
avg_path_similaritynumberrequiredcentral_site_idstringrequiredconfidencenumberrequiredfirst_detected_atstringrequiredhomepage_redirect_countintegerrequiredidintegerrequiredlast_detected_atstringrequiredmigration_typestringrequiredpermanent_redirect_countintegerrequiredredirect_countintegerrequiredredirect_coveragenumberrequiredsource_domainstringrequiredstatusstringrequiredtarget_domainstringrequiredtemporary_redirect_countintegerrequiredwebsite_idintegerrequiredcentral_project_idstring or nullcentral_project_statusstring or nullconfirm_blocked_reasonstring or null- Why confirmable is false, in words a customer can read; null when confirmable.
confirmableboolean- Whether the candidate can be confirmed as a migration now. A new confirmation needs at least one permanent (301 or 308) redirect to the target; an already confirmed project stays confirmable for its retry.default true
detailsobject or nullsamplesarray of MigrationCandidateMappingfirst_seen_atstringrequiredidintegerrequiredis_homepage_targetbooleanrequiredlast_seen_atstringrequiredpath_similaritynumberrequiredredirect_countintegerrequiredsource_urlstringrequiredstatus_codeintegerrequiredtarget_urlstringrequiredtarget_site_idstring or nulltarget_verifiedboolean- default false
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.
detaillists each problem.
429
- When
- Rate limited. Wait for
Retry-Afterseconds.
Generated from the API contract at 7e7039b0b, synced October 30, 2026.