---
title: "Create an org readiness criterion"
method: POST
path: "/readiness/criteria"
tags: ["readiness"]
---

# Create an org readiness criterion

`POST /readiness/criteria`

## Request

- Base URL: `https://api.onplana.com/api`
- URL: `https://api.onplana.com/api/readiness/criteria`
- Auth: one of:
  - HTTP bearer
  - API key in header `Authorization`

Requires org.compliance.manage. An `ai` criterion cannot be required (400 AI_CRITERION_CANNOT_BE_REQUIRED); an `auto` criterion needs an autoRule.

## Headers

- `X-Organization-Id` string, required

## Request body

- object
  - `category` string, required
  - `title` string, required
  - `description` string, nullable
  - `required` boolean
  - `transition` 'COMPLETE' | 'ARCHIVE'
  - `appliesToProjectType` 'STRATEGIC' | 'OPERATIONAL', nullable: Null = every project
  - `applicabilityHint` string, nullable
  - `defaultOwnerRole` string, nullable
  - `order` integer
  - `active` boolean
  - `checkKind` 'auto' | 'manual' | 'ai'
  - `autoRule` 'all_tasks_done' | 'no_open_blocked_tasks' | 'all_milestones_complete' | 'no_unresolved_issues' | 'custom_field_set' | 'budget_set' | 'baseline_captured' | 'closeout_signed_off', nullable
  - `autoRuleParams` object, nullable

## Response `201`

Criterion created

## Other responses

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

---

[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)
