---
id: approval-dry-run
title: "Dry-run an approval"
description: "Resolves the approval action a real request would resolve and previews the result without creating a request. In checklist mode, conditions are evaluated for real while manual and external items report what they would wait for."
sidebar_label: "Dry-run an approval"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "post api-method"
info_path: docs/api/approval
custom_edit_url: null
---

import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import ParamsDetails from "@theme/ParamsDetails";
import RequestSchema from "@theme/RequestSchema";
import StatusCodes from "@theme/StatusCodes";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";
import Heading from "@theme/Heading";

<Heading
  as={"h1"}
  className={"openapi__heading"}
  children={"Dry-run an approval"}
>
</Heading>

<MethodEndpoint
  method={"post"}
  path={"/approval/dry-run"}
  context={"endpoint"}
>
  
</MethodEndpoint>



Resolves the approval action a real request would resolve and previews the result without creating a request. In checklist mode, conditions are evaluated for real while manual and external items report what they would wait for.

<Heading
  id={"request"}
  as={"h2"}
  className={"openapi-tabs__heading"}
  children={"Request"}
>
</Heading>

<ParamsDetails
  parameters={undefined}
>
  
</ParamsDetails>

<RequestSchema
  title={"Body"}
  body={{"content":{"application/json":{"schema":{"required":["nrn","action"],"properties":{"nrn":{"type":"string","description":"Where the request would be made.","example":"organization=1:account=2:namespace=3:application=4"},"action":{"type":"string","description":"The action the request would perform.","example":"deployment:create"},"approval_mode":{"type":"string","enum":["auto","checklist","policy"],"description":"Which branch to evaluate. `auto` picks the checklist when the action has one.","example":"checklist"},"entity_id":{"type":"integer","description":"The entity the request would act on.","example":9876},"dimensions":{"type":"object","description":"Dimensions used to match the approval action."},"requested":{"type":"object","description":"The request payload the context is built from.","example":{"scope_id":5521,"release_id":7710}},"context":{"type":"object","description":"Supply a context to evaluate against instead of the one nullplatform would build."}}}}}}}
>
  
</RequestSchema>

<StatusCodes
  id={undefined}
  label={undefined}
  responses={{"200":{"description":"The operation was successful.","content":{"application/json":{"schema":{"properties":{"mode":{"type":"string","enum":["checklist","policy"],"description":"Which branch was evaluated.","example":"checklist"},"approvalAction":{"type":"object","description":"The approval action the request matched. Every field is emitted twice, in camelCase and in snake_case.","example":{"id":1842,"nrn":"organization=1:account=2:namespace=3","entity":"deployment","action":"deployment:create","checklistSpecificationId":"spec_abc123def456ghij","checklist_specification_id":"spec_abc123def456ghij"}},"specification_snapshot":{"type":"object","description":"The specification that was evaluated. Checklist mode only."},"preview":{"type":"object","description":"The predicted run. Checklist mode only.","properties":{"items":{"type":"array","description":"One entry per item, with its predicted status and whether it would run.","items":{"type":"object"}},"aggregate_prediction":{"type":"object","description":"Best and worst case outcome given what is already known."}}},"policies":{"type":"array","description":"One entry per requirement, in the shape policy mode returns.","items":{"type":"object"}},"action":{"type":"string","enum":["approve","manual","deny"],"description":"Whether the request would be approved, sent to a person, or denied.","example":"manual"}}}}}},"4XX":{"description":"Client error responses due to invalid input or missing parameters.","content":{"application/json":{"schema":{"type":"object","required":["statusCode","error","message"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code representing the specific client error (e.g., 400, 401, 403, 404).","example":400},"code":{"type":"string","description":"A machine-readable error code that categorizes the server failure.","example":"bad_request"},"error":{"type":"string","description":"A brief, human-readable description of the error type (e.g., \"Bad Request\", \"Unauthorized\").","example":"Bad Request"},"message":{"type":"string","description":"Additional details about the error.","example":"The request was malformed or contained invalid parameters."}}}}}},"5XX":{"description":"Server error responses indicating an issue on the API side.","content":{"application/json":{"schema":{"type":"object","required":["statusCode","error","message"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code representing the specific server error (e.g., 500, 502, 503).","example":500},"code":{"type":"string","description":"A machine-readable error code that categorizes the server failure.","example":"internal_server_error"},"error":{"type":"string","description":"A brief, human-readable description of the error type (e.g., \"Internal Server Error\", \"Service Unavailable\").","example":"Internal Server Error"},"message":{"type":"string","description":"Additional details about the error.","example":"An unexpected error occurred. Please try again later."}}}}}}}}
>
  
</StatusCodes>


      