# Move a project to Minket

> A project on the resend SDK moves by changing two environment variables; its code stays as it is.

Canonical: https://minket.com/migrate. Updated: 2026-10-28.

*The two variables.* RESEND_BASE_URL set to Minket's API and RESEND_API_KEY to a Minket key, and a send as the resend SDK writes it.

## 5 SDK versions, held by contract tests

Each version runs against the API, error names and statuses included.

**The resend SDK versions tested**

- Pinned: 6.10.0, 6.12.4, 6.17.1, 6.22.1
- Latest: 6.34.1

## Error handling keeps working

Paths keep Resend's spelling and answers keep its shapes, errors included.

**A missing field, as the resend SDK reads it**

```json
{
  "statusCode": 422,
  "message": "Missing `to` field.",
  "name": "validation_error"
}
```

## Webhooks verify with the code you have

Deliveries are signed the svix way Resend uses, so `resend.webhooks.verify` accepts them with the new endpoint's secret.

**The headers every delivery carries**

```http
svix-id  svix-timestamp  svix-signature
```

## One project at a time

Each step can be undone by putting the two variables back, until the last one.

1. **Add the domain.** Add it to Minket while it stays on Resend: the DKIM selectors and the `bounce.` host differ, so both sets of records stay valid.
2. **Try the preview.** Set the two variables with a `minket_test_` key on a preview deployment and run every email path.
3. **Swap production.** Set the live key and the new webhook secret, then send one real email.
4. **Move inbound mail.** Point the domain's MX record at Minket's receiving record.
5. **Bring the suppressions.** Add the addresses already suppressed with `POST /v1/suppressions` and `reason: "imported"`.
6. **Remove Resend's records.** After a week of clean sending, remove Resend's records and the domain from Resend.

## Before you move

- **6.10.0**: It reads the base URL once, at import: set it before the first `import`.
- **Plain fetch**: Calls that write `api.resend.com` out need the host read from the same variable.
- **[Guide](https://docs.minket.com/migrate/)**: Every mirrored path and what differs.

## Questions

### Do I have to change code?

Not on resend 6.12.4 or later: setting the two variables is enough.

### Do webhook secrets carry over?

No. Add each endpoint in Minket and use the secret it shows you.

More: Read the migration guide, https://docs.minket.com/migrate/
