---
title: "Migrate"
method: POST
path: "/intake/migrate"
tags: ["intake"]
---

# Migrate

`POST /intake/migrate`

## Request

- Base URL: `https://api.seal.net` (the document declares no server; this is the origin it was published from)
- URL: `https://api.seal.net/intake/migrate`
- Auth: none declared

Move the inbox before C1 to the proven address, once (Р18; until the
removal): `{old_address}` answers the old challenge, sealed to the old key;
`{old_address, old_proof}` moves the rows.

## Request body

- MigrateRequest
  - `old_address` string, required: The address before C1: the X25519 key, 43 base64url characters.
  - `old_proof` string, nullable: `<ts>.<token>` the old key opened; without it, the challenge.

## Response `200`

Successful Response

- union
  - ProofChallenge
    - `address` string, required
    - `ts` integer, required: Decimal Unix second the challenge was made at.
    - `challenge` string, required: The server's HMAC of the address and `ts`, 43 characters, for the identity key to sign (seal_address.json proof); for the old address of a migration, a token sealed to its X25519 key.
    - `expires_at` string, date-time, required
  - Migrated
    - `moved` integer, required: Rows of the old inbox now under this address; zero is a success.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/seal/apis/seal-api.md) · [All operations](https://skmtc.dev/seal/apis/seal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/seal/apis/seal-api/revisions/68460cfa1957?raw)
