---
title: "Waive one readiness criterion on a project"
method: POST
path: "/readiness/projects/{id}/waivers"
tags: ["readiness"]
---

# Waive one readiness criterion on a project

`POST /readiness/projects/{id}/waivers`

## Request

- Base URL: `https://api.onplana.com/api`
- URL: `https://api.onplana.com/api/readiness/projects/{id}/waivers`
- Auth: one of:
  - HTTP bearer
  - API key in header `Authorization`

Requires org.compliance.manage. While active the criterion counts as passed for the gate. One active waiver per criterion (409 ALREADY_WAIVED). Audited as READINESS_WAIVER_GRANTED.

## Path parameters

- `id` string, required

## Headers

- `X-Organization-Id` string, required

## Request body

- object
  - `criterionId` string, required
  - `reason` string, required
  - `checkId` string

## Response `201`

The waiver

## Other responses

- `400`: Validation error
- `401`: Unauthorized - missing or invalid JWT
- `403`: Forbidden - insufficient role
- `404`: Not found

---

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