---
title: "Record review decision"
method: POST
path: "/access-certification/review-items/{reviewItemId}/decisions"
tags: ["Access Certification"]
---

# Record review decision

`POST /access-certification/review-items/{reviewItemId}/decisions`

## Request

- Base URL: `https://console.jumpcloud.com/api/v2`
- URL: `https://console.jumpcloud.com/api/v2/access-certification/review-items/{reviewItemId}/decisions`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/jumpcloud/apis/jumpcloud-api-2/docs/access-certification/review-items/:reviewItemId/decisions/post.ts> (a function with typed inputs; its response is checked against the schema)

Records a Keep, Revoke, or Override decision for one review item.

- **keep** — Confirms the identity should retain access.
- **revoke** — Removes or suspends access according to the campaign remediation policy.
- **override** — (Administrators only) Changes a prior final decision. Requires
  `overrideTargetDecision` indicating which decision is being overridden.

The API returns immediately. Remediation for Revoke decisions runs asynchronously —
check `remediationAction` on the response or poll the review item for status updates.

Reviewers can only decide on items assigned to them. Administrators can decide on any
item and may use Override.

**Required permission:** `accesscertification` (Full Access)

## Path parameters

- `reviewItemId` string, required

## Request body

- JumpcloudHttpAccesscertificationRecordDecisionRequest
  - `decision` 'keep' | 'revoke' | 'override', required: Decision action submitted by reviewer or admin
  - `justification` string: Required when campaign requires justification or decision is override
  - `overrideTargetDecision` 'pending' | 'keep' | 'revoke': Recorded outcome for an identity or stage

## Response `200`

Decision recorded successfully

- JumpcloudHttpAccesscertificationRecordDecisionResponse
  - `reviewItemId` string, required
  - `finalDecision` 'pending' | 'keep' | 'revoke', required: Recorded outcome for an identity or stage
  - `remediationAction` 'no_action' | 'pending' | 'scheduled' | 'completed' | 'failed' | 'canceled', required: Remediation status for one identity after a Revoke decision
  - `remediationEnqueued` boolean: True when a RemediationWorkflow was enqueued (Revoke + immediate timeline)

## Other responses

- `400`: Validation error with field-level details
- `401`: Missing or invalid credentials
- `403`: Forbidden — principal not assigned or lacks required role
- `404`: Resource not found
- `409`: Conflict — resource state prevents the requested action
- `default`: Unexpected error

---

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