---
title: "Verify project domain"
method: POST
path: "/v9/projects/{idOrName}/domains/{domain}/verify"
tags: ["projects"]
---

# Verify project domain

`POST /v9/projects/{idOrName}/domains/{domain}/verify`

## Request

- Base URL: `https://api.vercel.com`
- URL: `https://api.vercel.com/v9/projects/{idOrName}/domains/{domain}/verify`
- Auth: HTTP bearer

Attempts to verify a project domain with `verified = false` by checking the correctness of the project domain's `verification` challenge.

## Path parameters

- `idOrName` string, required: The unique project identifier or the project name
- `domain` string, required: The domain name you want to verify

## Query parameters

- `teamId` string
- `slug` string

## Response `200`

The project domain was verified successfully
Domain is already verified

- object
  - `apexName` string, required
  - `createdAt` number
  - `customEnvironmentId` string, nullable
  - `gitBranch` string, nullable
  - `name` string, required
  - `projectId` string, required
  - `redirect` string, nullable
  - `redirectStatusCode` 301 | 302 | 307 | 308 | null, nullable
  - `updatedAt` number
  - `verified` false | true, required: `true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed.

## Other responses

- `400`: One of the provided values in the request query is invalid. There is an existing TXT record on the domain verifying it for another project The domain does not have a TXT record that attempts to verify the project domain The TXT record on the domain does not match the expected challenge for the project domain Project domain is not assigned to project
- `401`: The request is not authorized.
- `403`: You do not have permission to access this resource.
- `404`
- `410`

## Changes

- **2026-09-30** `099fbe1f521c`: 1 info
  - added the non-success response with the status `404`
- **2026-07-21** `2ae10ee9d21c`: 1 info
  - added the non-success response with the status `410`
- **2026-06-11** `14b4658f819e`: 1 warning
  - added the new `undefined` enum value to the `redirectStatusCode` response property for the response status `200`
- **2026-01-22** `c12186034433`: 2 warning
  - added the new `false` enum value to the `verified` response property for the response status `200`
  - added the new `true` enum value to the `verified` response property for the response status `200`
- **2025-03-19** `37b482c58c92`: 1 warning, 3 info
  - removed the optional property `verification` from the response with the `200` status
  - added the new optional `query` request parameter `slug`
  - added the non-success response with the status `401`
  - added the optional property `customEnvironmentId` to the response with the `200` status

[Operation history](https://skmtc.dev/vercel/apis/vercel-api/changes/v9/projects/:idOrName/domains/:domain/verify/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/60686c0e1f6a?raw)
