# Get auth code to move a domain away

> The auth code that moves a domain from manitu to another provider.

- Effect: Write - Changes the account. Agents ask first.
- Idempotent: no
- Stability: beta
- MCP tool: `manitu_domain_transfer_out_authcode_get` on https://mcp.manitu.de/mcp
- REST: `POST https://api.manitu.de/v1/domain/transfer/out/authcode/get`
- Needs: `service_domain`
- Page: /reference/domain/transfer/out/authcode/get/

**Changes the account. Agents say what will happen and wait for an explicit yes before calling it.**

## MCP tool

`manitu_domain_transfer_out_authcode_get`

### Description for the model

Gets the auth code (EPP or transfer code) that moves a domain from manitu to another provider - the customer gives it to the new provider. Needs the customer's consent: the first call is refused with a conflict consent_required carrying consent_list (the AGB) and a consent_token. Show the customer every item - title with link, in its language (the binding wording) - and ask for an explicit yes; only then make the same call again with consent_token (valid 15 minutes, once). Never agree on the customer's behalf. The code itself is withheld here (secrets_withheld): tell the customer to take it from the customer panel (mein.manitu.de) - he also gets a mail. auto_nack true: at this registry a transfer away is refused unless manitu lets it through - the customer should tell manitu once he started it at the new provider. Refused with a conflict when the domain cannot be moved (not_transferable: not active, or a subdomain).

### Arguments

- `name` (string, required) - The domain name, with international characters or in ASCII. (minLength `1`; maxLength `253`)
- `regenerate` (boolean) - true: a new code - the old one stops working. Default false.
- `consent_token` (string, write-only) - The consent_token from the consent_required answer of the same call - only after the customer agreed to everything in its consent_list. Valid 15 minutes, once. (minLength `1`; maxLength `255`)

### Example

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "manitu_domain_transfer_out_authcode_get",
    "arguments": {
      "name": "example.com"
    }
  }
}
```

## REST

`POST https://api.manitu.de/v1/domain/transfer/out/authcode/get`

### Authentication

One of `X-API-Key`, `Authorization: Bearer …` - never more than one in a request.

### Request body

JSON; unknown fields are refused.

- `name` (string, required) - The domain name, with international characters or in ASCII. (minLength `1`; maxLength `253`)
- `regenerate` (boolean) - true: a new code - the old one stops working. Default false.
- `consent_token` (string, write-only) - The consent_token from the consent_required answer of the same call - only after the customer agreed to everything in its consent_list. Valid 15 minutes, once. (minLength `1`; maxLength `255`)

### Response

In `data`; the rest of the body as on every call.

- `name` (string, required) - The domain, with international characters.
- `authcode` (string | null, required) - The auth code - a secret; null where it is withheld (secrets_withheld), or where the registry has none to give.
- `expires_at` (string | null, required) - Until when the code is valid; null: no end known. (format `date-time`)
- `auto_nack` (boolean, required) - true: at this registry a transfer away is refused unless manitu lets it through.
- `secrets_withheld` (boolean, required) - The code is left out here (an answer to an agent).

### Statuses

- `200` Success.
- `400` The request does not match the declared input schema.
- `401` No credential was presented, or it was not recognised.
- `403` The credential is not permitted to use this operation.
- `500` The server failed. Nothing about the request was wrong. Whether a change took effect is not known - check before trying it again.
- `503` The channel this operation forwards through is unavailable.

### Example

```sh
curl -X POST 'https://api.manitu.de/v1/domain/transfer/out/authcode/get' \
  -H 'X-API-Key: $API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"name":"example.com"}'
```

## Example result

```json
{
  "name": "example.com",
  "authcode": "string",
  "expires_at": "2026-10-23T12:00:00+02:00",
  "auto_nack": true,
  "secrets_withheld": true
}
```
