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"
}

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

Rate Limits

Get your API key