---
title: creates-a-new-check
product: vercel
url: /docs/rest-api/checks/creates-a-new-check
canonical_url: "https://vercel.com/docs/rest-api/checks/creates-a-new-check"
last_updated: 2026-11-15
type: reference
prerequisites:
  []
related:
  - /docs/rest-api
summary: Learn about creates-a-new-check on Vercel.
install_vercel_plugin: npx plugins add vercel/vercel-plugin
search_with_vercel_cli: npx vercel@latest docs search "<query>"
---

# Creates a new Check

> **Deprecated**: This endpoint is deprecated and may be removed in a future version.

```http
POST /v1/deployments/{deploymentId}/checks
```

Creates a new check. This endpoint must be called with an OAuth2 or it will produce a 400 error.

## Authentication

**bearerToken**: HTTP bearer

## Path parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `deploymentId` | string | Yes | The deployment to create the check for. |


## Query parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `teamId` | string | No | The Team identifier to perform the request on behalf of. |
| `slug` | string | No | The Team slug to perform the request on behalf of. |


## Request body

Required: Yes

Content-Type: `application/json`

```json
{
  "type": "object",
  "required": [
    "name",
    "blocking"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "The name of the check being created",
      "maxLength": 100
    },
    "path": {
      "type": "string",
      "description": "Path of the page that is being checked",
      "maxLength": 255
    },
    "blocking": {
      "type": "boolean",
      "description": "Whether the check should block a deployment from succeeding"
    },
    "detailsUrl": {
      "type": "string",
      "description": "URL to display for further details"
    },
    "externalId": {
      "type": "string",
      "description": "An identifier that can be used as an external reference"
    },
    "rerequestable": {
      "type": "boolean",
      "description": "Whether a user should be able to request for the check to be rerun if it fails"
    }
  }
}
```

## Example request

### TypeScript

```typescript
const response = await fetch('https://api.vercel.com/v1/deployments/deploymentId/checks?teamId=string&slug=string', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Performance Check",
    "path": "/",
    "blocking": "true",
    "detailsUrl": "http://example.com",
    "externalId": "1234abc",
    "rerequestable": "true"
  }),
});

const data = await response.json();
console.log(data);
```

### Next.js

```typescript
'use server';

export async function callEndpoint() {
  const response = await fetch('https://api.vercel.com/v1/deployments/deploymentId/checks?teamId=string&slug=string', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.VERCEL_ACCESS_TOKEN}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      "name": "Performance Check",
      "path": "/",
      "blocking": "true",
      "detailsUrl": "http://example.com",
      "externalId": "1234abc",
      "rerequestable": "true"
    }),
    next: { revalidate: 3600 }
  });

  if (!response.ok) {
    throw new Error('Request failed');
  }

  return response.json();
}
```

### cURL

```bash
curl -X POST 'https://api.vercel.com/v1/deployments/deploymentId/checks?teamId=string&slug=string' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d "{
    \"name\": \"Performance Check\",
    \"path\": \"/\",
    \"blocking\": \"true\",
    \"detailsUrl\": \"http://example.com\",
    \"externalId\": \"1234abc\",
    \"rerequestable\": \"true\"
  }"
```

## Example response

```json
{
  "blocking": "false",
  "completedAt": "123",
  "conclusion": "succeeded",
  "createdAt": "123",
  "deploymentId": "example_id",
  "detailsUrl": "https://example.com",
  "externalId": "example_id",
  "id": "chk_1a2b3c4d5e6f7g8h9i0j",
  "integrationId": "example_id",
  "name": "Performance Check",
  "output": {
    "metrics": {
      "CLS": {},
      "FCP": {},
      "LCP": {},
      "TBT": {},
      "virtualExperienceScore": {}
    }
  },
  "path": "/api/users",
  "rerequestable": "false",
  "startedAt": "123",
  "status": "completed",
  "updatedAt": "123"
}
```

## Responses

### 200: No description

Content-Type: `application/json`

```json
{
  "type": "object",
  "required": [
    "blocking",
    "createdAt",
    "deploymentId",
    "id",
    "integrationId",
    "name",
    "status",
    "updatedAt"
  ],
  "properties": {
    "blocking": {
      "type": "boolean",
      "enum": [
        false,
        true
      ]
    },
    "completedAt": {
      "type": "number"
    },
    "conclusion": {
      "type": "string",
      "enum": [
        "canceled",
        "failed",
        "neutral",
        "skipped",
        "stale",
        "succeeded"
      ]
    },
    "createdAt": {
      "type": "number"
    },
    "deploymentId": {
      "type": "string"
    },
    "detailsUrl": {
      "type": "string"
    },
    "externalId": {
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "integrationId": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "output": {
      "type": "object",
      "properties": {
        "metrics": {
          "type": "object",
          "required": [
            "CLS",
            "FCP",
            "LCP",
            "TBT"
          ],
          "properties": {
            "CLS": {
              "type": "object",
              "required": [
                "source",
                "value"
              ]
            },
            "FCP": {
              "type": "object",
              "required": [
                "source",
                "value"
              ]
            },
            "LCP": {
              "type": "object",
              "required": [
                "source",
                "value"
              ]
            },
            "TBT": {
              "type": "object",
              "required": [
                "source",
                "value"
              ]
            },
            "virtualExperienceScore": {
              "type": "object",
              "required": [
                "source",
                "value"
              ]
            }
          }
        }
      }
    },
    "path": {
      "type": "string"
    },
    "rerequestable": {
      "type": "boolean",
      "enum": [
        false,
        true
      ]
    },
    "startedAt": {
      "type": "number"
    },
    "status": {
      "type": "string",
      "enum": [
        "completed",
        "registered",
        "running"
      ]
    },
    "updatedAt": {
      "type": "number"
    }
  }
}
```

### 400: One of the provided values in the request body is invalid.
One of the provided values in the request query is invalid.
Cannot create check for finished deployment
The provided token is not from an OAuth2 Client

### 401: The request is not authorized.

### 403: You do not have permission to access this resource.

### 404: The deployment was not found

### 410: No description

---

## Related

- [checks endpoints](/docs/rest-api#checks)

- [REST API overview](/docs/rest-api)

- [OpenAPI spec](https://vercel.com/openapi.json) (machine-readable, all endpoints)

## Search the docs from your terminal

Search the Vercel docs and read pages as Markdown with the Vercel CLI. No login required.

```bash
# Find docs pages by keyword
npx vercel@latest docs search "environment variables"
npx vercel@latest docs search "function timeout"

# Print a docs page as Markdown, by path or URL
npx vercel@latest docs inspect <page>
```

---

[View full sitemap](/docs/sitemap)


If you encounter incorrect information, can’t find what you need, need a capability Vercel doesn’t currently offer, or have any other feedback to report, please do it by following the instructions at https://vercel.com/feedback.md.
