API Reference
Base URL: https://api.migratekit.io
POST
/api/v1/scorecard
Submit two URLs to start a verification job. Runs the page-level suites (responsive, seo, content, perf, a11y, functional, image) and, when the new side is Shopify, the store-level catalog + redirect checks too. Scans take a few minutes, so this returns a job_id immediately - poll GET /api/v1/jobs/:id for the result.
Authentication
Include your API key in the Authorization header:
Authorization: Bearer mk_YOUR_API_KEY
Request Body
{
"original_url": "https://old-site.com",
"new_url": "https://new-site.com",
"page_name": "homepage",
"storefront_password": "optional, for gated Shopify stores"
}original_urlrequired - The live/production (old) site URLnew_urlrequired - The rebuilt/migrated (new) site URLpage_nameoptional - Label for this runstorefront_passwordoptional - Shopify storefront password, if the new store is still password-gated
Response (202 Accepted)
{
"job_id": "abc123...",
"status": "queued",
"poll": "/api/v1/jobs/abc123..."
}GET
/api/v1/jobs/:id
Poll a job. status is queued, running, completed, or failed. When completed, the response includes the full scorecard.
curl https://api.migratekit.io/api/v1/jobs/abc123...
Response (completed)
{
"id": "abc123...",
"tier": "paid",
"status": "completed",
"original_url": "https://old-site.com",
"new_url": "https://new-site.com",
"scorecard": {
"pageName": "homepage",
"allPass": true,
"suites": [
{ "suite": "responsive", "score": 92.5, "target": 90, "pass": true },
{ "suite": "seo", "score": 95, "target": 80, "pass": true },
{ "suite": "content", "score": 98, "target": 85, "pass": true },
{ "suite": "perf", "score": 88, "target": 80, "pass": true },
{ "suite": "a11y", "score": 100, "target": 90, "pass": true },
{ "suite": "functional", "score": 100, "target": 90, "pass": true },
{ "suite": "image", "score": 96, "target": 85, "pass": true },
{ "suite": "catalog", "score": 97, "target": 90, "pass": true },
{ "suite": "redirects", "score": 94, "target": 90, "pass": true }
]
}
}Error Responses
401Missing or invalid API key400Missing required fields or invalid URL format503Scan queue is full - retry shortly404Job not found (when polling)
Rate Limits
- Free tier: 10 runs/month
- Starter ($29): 30 runs
- Pro ($99): 120 runs