---
title: "Create a verification period"
method: POST
path: "/api/v1/verification-periods"
tags: ["Verifications"]
---

# Create a verification period

`POST /api/v1/verification-periods`

## Request

- Base URL: `https://api.getcortexapp.com`
- URL: `https://api.getcortexapp.com/api/v1/verification-periods`
- Auth: HTTP bearer

Opens a verification campaign over the entities its scope selects. Every selected entity gets a PENDING verification immediately, except under a cqlQuery scope, which is evaluated in the background, so the counts read zero until it finishes.

## Request body

- UpsertVerificationPeriodRequest: A verification period to create, or the full replacement state for one
  - `description` string: What owners are being asked to confirm
  - `endDate` string, date-time, required: The day the period closes, inclusive
  - `name` string, required: Display name
  - `reasonRequired` boolean: Whether a reason is required to mark an entity incorrect. Marking an entity correct never requires one. Defaults to false.
  - `requiredCustomRoleTags` string[], required: Tags of custom Cortex roles a user must hold to verify
  - `requiredRoles` string[], required: Cortex roles a user must hold to verify. Empty means any owner of the entity may verify.
  - `requiredTeamRoleTags` string[], required: Tags of team roles a user must hold on a team that owns the entity in order to verify
  - `scope` VerificationScope, required: Which entities a verification period covers. An empty scope covers every entity. Combined conditions all have to hold.
    - `cqlQuery` string: Cover the entities this CQL query returns. Evaluated in the background, so a period created with one reports zero entities until that finishes.
    - `entityGroups` string[], required: Cover only entities in these entity groups. Empty means every group.
    - `excludedEntityGroups` string[], required: Exclude entities in these entity groups
    - `types` string[], required: Cover only entities of these types. Empty means every type.
  - `startDate` string, date-time, required: The day the period opens, inclusive

## Response `200`

The created verification period

- VerificationPeriodSummary: A verification period and how far along it is
  - `cid` string, required: Stable identifier, usable wherever a period CID is accepted
  - `counts` VerificationCounts, required: Entity counts for one verification period
    - `pending` integer, required: Entities not yet verified
    - `verifiedCorrect` integer, required: Entities confirmed correct
    - `verifiedIncorrect` integer, required: Entities flagged incorrect
  - `description` string: What owners are being asked to confirm
  - `endDate` string, date-time, required: When the period closes
  - `isActive` boolean, required: Whether the period is open today, and so still accepting verifications
  - `name` string, required: Display name
  - `reasonRequired` boolean, required: Whether a reason is required when an entity is marked incorrect
  - `requiredCustomRoleTags` string[], required: Tags of custom Cortex roles a user must hold to verify
  - `requiredRoles` string[], required: Cortex roles a user must hold to verify
  - `requiredTeamRoleTags` string[], required: Tags of team roles a user must hold on an owning team to verify
  - `scope` VerificationScope, required: Which entities a verification period covers. An empty scope covers every entity. Combined conditions all have to hold.
    - `cqlQuery` string: Cover the entities this CQL query returns. Evaluated in the background, so a period created with one reports zero entities until that finishes.
    - `entityGroups` string[], required: Cover only entities in these entity groups. Empty means every group.
    - `excludedEntityGroups` string[], required: Exclude entities in these entity groups
    - `types` string[], required: Cover only entities of these types. Empty means every type.
  - `startDate` string, date-time, required: When the period opens

## Other responses

- `400`: endDate is before startDate, or a named role does not exist
- `429`: The client has exceeded the rate limit by performing too many requests in a short period. Retry the request after a delay.

## Changes

- **2026-11-03** `a7b058663c95`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/cortex/apis/cortex-api/changes/api/v1/verification-periods/post.md)

---

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