---
title: "End campaign early"
method: POST
path: "/access-certification/campaign-runs/{runId}/end-early"
tags: ["Access Certification"]
---

# End campaign early

`POST /access-certification/campaign-runs/{runId}/end-early`

## Request

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

Closes an active campaign run before its scheduled review window ends.

Use `remediationMode` in the request body to control what happens to pending remediations:
- `execute_remediation` — Run remediation for all revoked identities according to policy
- `cancel_remediation` — Close without executing pending remediations

Returns **409 Conflict** if the run is not active.

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

## Path parameters

- `runId` string, required

## Request body

- JumpcloudHttpAccesscertificationEndEarlyRequest
  - `remediationMode` 'execute_remediation' | 'cancel_remediation', required: Whether to execute or cancel pending remediations when ending a campaign early

## Response `200`

Campaign run closed early

- JumpcloudHttpAccesscertificationCloseCampaignResponse: System or admin-initiated close result
  - `campaignId` string, required
  - `runId` string, required
  - `status` 'closed', required
  - `closedAt` string, date-time, required
  - `remediationStatus` 'in_progress' | 'scheduled' | 'completed' | 'canceled'
  - `auditReportStatus` 'generating' | 'exports_ready': Initial audit artifact status after close

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