---
title: "Add websites to campaign"
method: POST
path: "/api/v1/tools/add_websites_to_campaign"
tags: ["guarded"]
---

# Add websites to campaign

`POST /api/v1/tools/add_websites_to_campaign`

## Request

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

Add sites to a campaign, as Add to campaign on the Websites tab does. A draft only grows its audience (nothing sends until launch). An active or paused campaign ENROLS them now through the enrol gate: a site needs a contact email, a clean review, status new or prospect, no earlier contact by either product, no opt-out or bounce, and must not be a competitor's or your own site; enrolled sites get the campaign's first email on the engine's schedule, window and daily cap (a paused campaign once resumed). Counts say why sites were skipped. Campaigns written for creators refuse websites. 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
  - `campaign_id` string, uuid, required: A campaign id from list_campaigns.
  - `site_ids` string[], required: Site ids from list_websites, in the campaign's project.
  - `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)
