---
title: "Submit review for a paused workflow run"
method: POST
path: "/api/v1/workflows/runs/{id}/review"
tags: ["Workflows"]
---

# Submit review for a paused workflow run

`POST /api/v1/workflows/runs/{id}/review`

## Request

- Base URL: `https://api.korala.ai`
- URL: `https://api.korala.ai/api/v1/workflows/runs/{id}/review`
- Auth: one of:
  - API key in header `X-API-Key`
  - `bearer` (a scheme the document does not define)

Approve or reject a workflow run that is paused at a review step.

## Path parameters

- `id` string, required

## Headers

- `X-Korala-Mode` 'live' | 'test'

## Request body

- ReviewWorkflowStepDto
  - `action` 'approve' | 'reject', required: Whether to approve or reject the review
  - `stepRunId` string, uuid: Exact paused step being reviewed. Supply it for safe retries; required after any earlier review has been decided on this run.
  - `editedData` object: Edited field values (only for approve)
  - `reason` string: Reason for rejection (only for reject)

## Response `200`

- WorkflowRunWithStepsDto
  - `sandbox` boolean, required: Persisted execution mode: true for test data
  - `id` string, required
  - `workflowDefinitionId` string, required
  - `organizationId` string, nullable
  - `status` 'pending' | 'running' | 'paused' | 'completed' | 'failed', required
  - `inputData` object, nullable
  - `outputData` object, nullable
  - `currentStep` number, required
  - `errorMessage` string, nullable
  - `inputFileUrl` string, nullable
  - `inputFileMimeType` string, nullable
  - `startedAt` string, date-time, nullable
  - `completedAt` string, date-time, nullable
  - `createdAt` string, date-time, required
  - `stepRuns` WorkflowStepRunDto[], required
    - `id` string, required
    - `workflowRunId` string, required
    - `stepIndex` number, required
    - `stepType` 'capture' | 'ocr' | 'extract' | 'validate' | 'enrich' | 'check' | 'risk' | 'output' | 'review' | 'webhook', required
    - `status` 'pending' | 'running' | 'paused' | 'completed' | 'failed' | 'skipped', required
    - `inputData` object, nullable
    - `outputData` object, nullable
    - `errorMessage` string, nullable
    - `processingTimeMs` number, nullable
    - `createdAt` string, date-time, required
    - `completedAt` string, date-time, nullable

## Other responses

- `400`: Malformed UUID in path parameter (`id`).
- `409`: The review cannot be decided now: it is not the current paused review step, it already has a different decision, or the session no longer permits it. reason: session_expired when the session has expired (its status is expired, or the person had not finished when expiresAt passed), or when an approval would send a session in review back to in progress after expiresAt with a resubmissionMinimumWindowMinutes of 0; create a new session. A session in review never expires.

---

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