---
title: "Create local controlled action draft"
method: POST
path: "/controlled-draft"
---

# Create local controlled action draft

`POST /controlled-draft`

## Request

- Base URL: `https://api.gravityads.dev` (the document declares no server; this is the origin it was published from)
- URL: `https://api.gravityads.dev/controlled-draft`
- Auth: HTTP bearer

Accepts candidate_id or action_packet. Never writes ad platforms.

## Request body

- object
  - `candidate_id` string
  - `action_packet` object
  - `operator_id` string
  - `requested_by` string
  - `request_id` string, required
  - `confirmation` string
  - `internal_override` boolean
  - `audit_context` object

## Response `200`

Draft result

- object
  - `schema_version` string
  - `status` string, required
  - `action_id` string
  - `request_id` string
  - `controlled_action` object
  - `authority_flags` object
    - `platform_write_allowed` boolean
  - `result` object

---

[API](https://skmtc.dev/gravityads/apis/gravityads-api.md) · [All operations](https://skmtc.dev/gravityads/apis/gravityads-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gravityads/apis/gravityads-api/revisions/124cd07d534d?raw)
