---
title: "Add an existing domain to the Vercel platform"
method: POST
path: "/v7/domains"
tags: ["domains"]
---

# Add an existing domain to the Vercel platform

`POST /v7/domains`

This endpoint is used for adding a new apex domain name with Vercel for the authenticating user. Note: This endpoint is no longer used for initiating domain transfers from external registrars to Vercel. For this, please use the endpoint [Transfer-in a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/transfer-in-a-domain).

## Query parameters

- `teamId` string
- `slug` string

## Request body

- union
  - object — add
    - `method` string — The domain operation to perform.
    - `name` string, required — The domain name you want to add.
    - `cdnEnabled` boolean — Whether the domain has the Vercel Edge Network enabled or not.
    - `zone` boolean — Whether to create a DNS zone on Vercel. Set `true` if using Vercel nameservers.
  - object — move-in
    - `method` string, required — The domain operation to perform.
    - `name` string, required — The domain name you want to add.
    - `token` string — The move-in token from Move Requested email.

## Response `200`

- object
  - `domain` object, required
    - `expiresAt` number, nullable, required — Timestamp in milliseconds at which the domain is set to expire. null if not bought with Vercel.
    - `verified` false | true, required — If the domain has the ownership verified.
    - `nameservers` string[], required — A list of the current nameservers of the domain.
    - `intendedNameservers` string[], required — A list of the intended nameservers for the domain to point to Vercel DNS.
    - `customNameservers` string[] — A list of custom nameservers for the domain to point to. Only applies to domains purchased with Vercel.
    - `creator` object, required — An object containing information of the domain creator, including the user's id, username, and email.
      - `username` string, required
      - `email` string, required
      - `customerId` string, nullable
      - `isDomainReseller` false | true
      - `id` string, required
    - `name` string, required — The domain name.
    - `teamId` string, nullable, required
    - `boughtAt` number, nullable, required — If it was purchased through Vercel, the timestamp in milliseconds when it was purchased.
    - `createdAt` number, required — Timestamp in milliseconds when the domain was created in the registry.
    - `id` string, required — The unique identifier of the domain.
    - `renew` false | true — Indicates whether the domain is set to automatically renew.
    - `serviceType` 'external' | 'na' | 'zeit.world', required — The type of service the domain is handled by. `external` if the DNS is externally handled, `zeit.world` if handled with Vercel, or `na` if the service is not available.
    - `transferredAt` number, nullable — Timestamp in milliseconds at which the domain was successfully transferred into Vercel. `null` if the transfer is still processing or was never transferred in.
    - `transferStartedAt` number — If transferred into Vercel, timestamp in milliseconds when the domain transfer was initiated.
    - `userId` string, required

## Other responses

- `400` — One of the provided values in the request body is invalid.
- `401` — The request is not authorized.
- `402` — The account is missing a payment so payment method must be updated
- `403` — You do not have permission to access this resource.
- `404`
- `409` — The domain is not allowed to be used
- `410`

---

[API](https://skmtc.net/vercel/apis/api.md) · [All operations](https://skmtc.net/vercel/apis/api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/vercel/api/versions/61d1ba3f6dac/schema)
