---
title: "Approve autopilot action"
method: POST
path: "/api/v1/tools/approve_autopilot_action"
tags: ["guarded"]
---

# Approve autopilot action

`POST /api/v1/tools/approve_autopilot_action`

## Request

- Base URL: `https://www.affiliatespy.io`
- URL: `https://www.affiliatespy.io/api/v1/tools/approve_autopilot_action`
- Auth: HTTP bearer

Approve a queued autopilot action and EXECUTE it. Depending on its type: a website batch enrols its sites and their cold first emails go out on the lane campaign's schedule; a sister-program intro, a welcome or a check-in is sent to that partner; a follow-up or a reply is sent into its thread; a campaign proposal reveals missing contacts (metered) and launches. The approval summary names what this one does, and an edit after it was shown needs a fresh approval. Same gated paths as the dashboard's approve button, including its edits: body replaces the drafted text, remove_ids drops sites from a website batch (they are flagged so autopilot never proposes them again). Guarded: without approval_token it returns {error:"approval_required", approval_token, summary} for the user to confirm; call again with the token. Every dashboard guardrail still applies: this is exactly what a user clicking the dashboard could do, no more. GUARDED: requires the account's Unrestricted MCP setting; returns 403 {error:'restricted'} otherwise.

## Request body

- object
  - `action_id` string, uuid, required: An id from get_autopilot's queue.
  - `body` string: Your edited text for a drafted email, sent instead of the draft.
  - `remove_ids` string[]: Sites to drop from a website batch (ids from get_autopilot_action).
  - `approval_token` string: Approval token from a previous approval_required response, after the user said yes.

## Response `200`

The tool's JSON result (same payload the MCP tool returns).

- unknown

## Other responses

- `400`: Arguments failed validation; body lists the issues.
- `401`: Missing or invalid API key.
- `403`: Guarded tool with Unrestricted MCP off.
- `429`: Rate limited (60 requests per minute per key).

---

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