---
title: "Approve or discard a draft"
method: POST
path: "/runs/{id}/actions/{actionId}/decision"
tags: ["Tasks"]
---

# Approve or discard a draft

`POST /runs/{id}/actions/{actionId}/decision`

## Request

- Base URL: `https://app.italic.com/api/v2`
- URL: `https://app.italic.com/api/v2/runs/{id}/actions/{actionId}/decision`
- Auth: HTTP bearer

Required permission: agent:chat or actions:review. A chat run's draft needs agent:chat; a workflow run's needs actions:review. Approving runs the action (it sends the email, adds the event), checked again as the apps check it: the app must still be on and the fields valid. Approving names the draft's tool. The returned action status says whether it worked.

## Path parameters

- `id` string, required
- `actionId` string, required

## Request body

- Decision
  - `decision` 'approve' | 'reject', required
  - `tool` string: The draft's `tool`, as you showed it to the person. Required to approve.
  - `args` object: Edited fields of an email, event or reminder draft, replacing its `args`. Omit to approve it as drafted.

## Response `200`

Success. Writes without read permission return an ID and revision only.

- RunResult
  - `run` Run, required
    - `id` string, required
    - `source` 'chat' | 'recording', required: `recording`: a workflow run a recording started.
    - `recordingId` string
    - `status` 'running' | 'awaiting_approval' | 'completed' | 'failed' | 'cancelled', required
    - `reply` string: Italic's answer, in Markdown.
    - `error` string
    - `prompt` string: Chat runs: what was asked.
    - `workflows` object[]
      - `id` string, required
      - `name` string, required
    - `actions` RunAction[], required
      - `id` string, required
      - `tool` string, required: What the draft does: send_email, create_event, create_reminder, trash_email, send_webhook, create_notion_page, send_slack_message, save_to_drive, mcp_call and others.
      - `status` 'proposed' | 'approved' | 'executing' | 'succeeded' | 'failed' | 'rejected' | 'uncertain', required: `proposed`: waiting for approval. `approved`: an iPhone adds it (reminders). `uncertain`: it may or may not have happened.
      - `executor` 'cloud' | 'device', required
      - `args` object, required: The draft's fields, as the apps' card shows them.
      - `result` object
      - `link` string: Opens what a finished action made, such as the sent email.
      - `workflowId` string
    - `questions` Question[], required
      - `id` string, required
      - `prompt` string, required
      - `about` string
      - `kind` 'recipient' | 'account' | 'text', required
      - `choices` object[], required
        - `label` string, required
        - `detail` string
    - `createdAt` integer, required
    - `updatedAt` integer, required
  - `replayed` boolean

## Other responses

- `default`: Request failed. Errors include a stable code and a readable message.

---

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