---
title: "Create a migration. Returns a checkout_url when a payment hold is required — an agent must hand that to the user rather than attempt payment."
method: POST
path: "/api/migrations"
tags: ["Migrations"]
---

# Create a migration. Returns a checkout_url when a payment hold is required — an agent must hand that to the user rather than attempt payment.

`POST /api/migrations`

## Request

- Base URL: `https://dbmigratepro.com`
- URL: `https://dbmigratepro.com/api/migrations`
- Auth: HTTP bearer

## Request body

- object
  - `source_url` string, required
  - `target_url` string, required
  - `estimate_id` integer, nullable

## Response `200`

Success.

## Other responses

- `201`: Created, for the endpoints that create a resource.
- `401`: Missing or invalid API token.
- `403`: The resource belongs to another team, or the endpoint is admin-only.
- `404`: No such resource.
- `422`: Validation failed. The body carries `message` and `errors`.
- `429`: Rate limit exceeded for this tier. Retry after the `Retry-After` header.

---

[API](https://skmtc.dev/dbmigratepro/apis/dbmigratepro-rest-api.md) · [All operations](https://skmtc.dev/dbmigratepro/apis/dbmigratepro-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dbmigratepro/apis/dbmigratepro-rest-api/revisions/2ad329c3c189?raw)
