---
title: "Create a check run"
method: POST
path: "/v2/deployments/{deploymentId}/check-runs"
tags: ["checks-v2"]
---

# Create a check run

`POST /v2/deployments/{deploymentId}/check-runs`

## Request

- Base URL: `https://api.vercel.com`
- URL: `https://api.vercel.com/v2/deployments/{deploymentId}/check-runs`
- Auth: HTTP bearer

Creates a new check run for a deployment.

## Path parameters

- `deploymentId` string, required

## Query parameters

- `teamId` string
- `slug` string

## Request body

- object
  - `checkId` string, required

## Response `200`

- union
  - object: Check run backed by a project-level `check` definition.
    - `blocks` 'build-start' | 'deployment-alias' | 'deployment-promotion' | 'deployment-start' | 'none'
    - `completedAt` number
    - `conclusion` 'canceled' | 'failed' | 'neutral' | 'skipped' | 'succeeded' | 'timeout'
    - `conclusionText` string
    - `createdAt` number, required
    - `deploymentId` string, required
    - `expectationRef` object
      - `invocationAttempt` number, required
      - `invocationId` string, required
      - `jobDefinitionId` string, required
      - `jobRunAttempt` number, required
    - `expectationRevision` number: Latest aggregate revision applied to this check run.
    - `externalId` string
    - `externalUrl` string
    - `id` string, required
    - `name` string, required
    - `output` object
    - `ownerId` string, required
    - `projectId` string
    - `requires` 'build-ready' | 'deployment-url' | 'none'
    - `startedAt` number
    - `status` 'completed' | 'queued' | 'running', required
    - `targets` string[]
    - `taskSummary` object
      - `failed` number, required
      - `pending` number, required
      - `succeeded` number, required
      - `total` number, required
    - `timeout` number, required
    - `updatedAt` number, required
    - `checkId` string, required
    - `source` union, required
      - object
        - `externalResourceId` string
        - `integrationConfigurationId` string, required
        - `integrationId` string, required
        - `kind` 'integration', required
        - `resourceId` string
      - object
        - `kind` 'webhook', required
        - `webhookId` string
      - object
        - `externalCheckName` string, required
        - `kind` 'git-provider', required
        - `provider` 'bitbucket' | 'github' | 'gitlab', required
      - object: Native Vercel checks — check definition and check run `source`.
        - `origin` 'api' | 'platform'
        - `subKind` 'vercel-native-check'
      - object: Project-defined CI requirement; its selection is frozen on each check run.
        - `origin` 'api', required
        - `selection` union, required
          - object
            - `kind` 'invocation', required
          - object
            - `kind` 'deployment', required
          - object
            - `failIfNoMatch` false | true
            - `filters` string[], required
            - `job` 'Turborepo', required
            - `kind` 'turborepo', required
            - `task` string, required
        - `subKind` 'vercel-ci-check', required
  - object: Vercel CI check run without a parent `check` (no `checkId` field).
    - `blocks` 'build-start' | 'deployment-alias' | 'deployment-promotion' | 'deployment-start' | 'none'
    - `completedAt` number
    - `conclusion` 'canceled' | 'failed' | 'neutral' | 'skipped' | 'succeeded' | 'timeout'
    - `conclusionText` string
    - `createdAt` number, required
    - `deploymentId` string, required
    - `expectationRef` object
      - `invocationAttempt` number, required
      - `invocationId` string, required
      - `jobDefinitionId` string, required
      - `jobRunAttempt` number, required
    - `expectationRevision` number: Latest aggregate revision applied to this check run.
    - `externalId` string
    - `externalUrl` string
    - `id` string, required
    - `name` string, required
    - `output` object
    - `ownerId` string, required
    - `projectId` string
    - `requires` 'build-ready' | 'deployment-url' | 'none'
    - `startedAt` number
    - `status` 'completed' | 'queued' | 'running', required
    - `targets` string[]
    - `taskSummary` object
      - `failed` number, required
      - `pending` number, required
      - `succeeded` number, required
      - `total` number, required
    - `timeout` number, required
    - `updatedAt` number, required
    - `source` union, required
      - object: Config-driven CI task — check run `source` only (no parent check).
        - `invocationAttempt` number
        - `invocationId` string, required
        - `jobDefinitionId` string, required
        - `origin` 'config', required
        - `subKind` 'vercel-ci', required
      - object: CI sentinel — check run `source` only (no parent check).
        - `origin` 'platform', required
        - `subKind` 'vercel-ci-sentinel', required

## Other responses

- `400`: One of the provided values in the request body is invalid. One of the provided values in the request query is invalid.
- `401`: The request is not authorized.
- `403`: You do not have permission to access this resource.
- `404`
- `410`
- `500`

## Changes

- **2026-10-20** `e78cd78343b7`: 1 info
  - removed `subschema #3` from the `oneOf[subschema #1]/source/oneOf[subschema #5]/selection` response property `oneOf` list for the response status `200`
- **2026-10-08** `b426de1e3932`: 1 breaking, 1 info
  - added `subschema #1, subschema #2` to the response body `oneOf` list for the response status `200`
  - removed `subschema #1, subschema #2` from the response body `oneOf` list for the response status `200`
- **2026-10-06** `d8abdc297e36`: 1 breaking, 1 info
  - added `subschema #1, subschema #2` to the response body `oneOf` list for the response status `200`
  - removed `subschema #1, subschema #2` from the response body `oneOf` list for the response status `200`
- **2026-10-02** `41e24ae097d4`: 1 breaking, 1 info
  - added `subschema #1, subschema #2` to the response body `oneOf` list for the response status `200`
  - removed `subschema #1, subschema #2` from the response body `oneOf` list for the response status `200`
- …earlier changes not shown

[Operation history](https://skmtc.dev/vercel/apis/vercel-api/changes/v2/deployments/:deploymentId/check-runs/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)
