---
title: "Transfer-in a domain"
method: POST
path: "/v1/registrar/domains/{domain}/transfer"
tags: ["domains-registrar"]
---

# Transfer-in a domain

`POST /v1/registrar/domains/{domain}/transfer`

## Request

- Base URL: `https://api.vercel.com`
- URL: `https://api.vercel.com/v1/registrar/domains/{domain}/transfer`
- Auth: HTTP bearer

Transfer a domain in from another registrar

## Path parameters

- `domain` string, required: A valid domain name

## Query parameters

- `teamId` string

## Request body

- object
  - `authCode` string, required: The auth code for the domain. You must obtain this code from the losing registrar.
  - `autoRenew` boolean, required: Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint.
  - `years` number, required: The number of years to renew the domain for once it is transferred in. This must be a valid number of transfer years for the TLD.
  - `expectedPrice` number, required
  - `contactInformation` object, required
    - `firstName` string, required: a non empty string
    - `lastName` string, required: a non empty string
    - `email` string, required: A valid RFC 5322 email address
    - `phone` string, required: A valid E.164 phone number
    - `address1` string, required: a non empty string
    - `address2` string: a non empty string
    - `city` string, required: a non empty string
    - `state` string, required: a non empty string
    - `zip` string, required: a non empty string
    - `country` string, required: A valid ISO 3166-1 alpha-2 country code
    - `companyName` string: a non empty string
    - `fax` string: A valid E.164 phone number

## Response `200`

Success

- object
  - `orderId` string, required: A valid order ID
  - `_links` object, required

## Other responses

- `400`: There was something wrong with the request
- `401`: Unauthorized
- `403`: Forbidden
- `429`: TooManyRequests
- `500`: InternalServerError

## Changes

- **2026-07-14** `314022afff45`: 1 info
  - added the optional property `reason` to the response with the `401` status
- **2026-02-02** `5264f094c3d3`: 250 breaking
  - removed the enum value `AD` of the request property `contactInformation/country`
  - removed the enum value `AE` of the request property `contactInformation/country`
  - removed the enum value `AF` of the request property `contactInformation/country`
  - removed the enum value `AG` of the request property `contactInformation/country`
  - …246 more
- **2026-01-22** `c12186034433`: 1 breaking, 2 warning, 252 info
  - request property `contactInformation/country` was restricted to a list of enum values
  - changed the pattern of the request property `contactInformation/fax` from `^(?=(?:\D*\d){7,15}$)\+[1-9]\d{0,2}\.?\d+$` to `^(?=(?:\D*\d){8,15}$)\+[1-9]\d{0,2}\.?\d+$`
  - changed the pattern of the request property `contactInformation/phone` from `^(?=(?:\D*\d){7,15}$)\+[1-9]\d{0,2}\.?\d+$` to `^(?=(?:\D*\d){8,15}$)\+[1-9]\d{0,2}\.?\d+$`
  - added the new `AD` enum value to the request property `contactInformation/country`
  - …251 more
- **2025-11-28** `45991e5c8b6d`: 2 info
  - added the new optional `query` request parameter `teamId`
  - added `#/components/schemas/DomainAlreadyOwned, #/components/schemas/DomainTooShort, #/components/schemas/DNSSECEnabled` to the response body `anyOf` list for the response status `400`
- **2025-10-09** `50caddad4ae7`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/vercel/apis/vercel-api/changes/v1/registrar/domains/:domain/transfer/post.md)

---

[API](https://skmtc.dev/vercel/apis/vercel-api.md) - [All operations](https://skmtc.dev/vercel/apis/vercel-api/llms.txt) - [OpenAPI document](https://skmtc.dev/vercel/apis/vercel-api/revisions/3311a68ee3e3?raw)
