---
title: "Create website campaign draft"
method: POST
path: "/api/v1/tools/create_website_campaign_draft"
tags: ["default"]
---

# Create website campaign draft

`POST /api/v1/tools/create_website_campaign_draft`

## Request

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

Create a DRAFT campaign for sites from list_websites (one project), with the website sequence autopilot's affiliate lane sends unless you pass steps, and an optional schedule. The copy must pass the same check enrolment runs (rendered for a sample site: no links, bare domains, stock phrases, unknown tokens or empty offer), else nothing is created. Website copy personalises with tokens such as {{greeting}}, {{opener}}, {{tease_pitch}}, {{offer_pitch}} and {{signoff}}: get_campaign shows a campaign's templates and preview_campaign_step renders one for a site. DRAFT ONLY: nothing is enrolled or sent; launch_campaign (guarded) starts it.

## Request body

- object
  - `site_ids` string[], required: Site ids from list_websites, all in one project.
  - `name` string
  - `offer` string: The commission the emails promise, e.g. "30% recurring". Default: the program commission in App settings.
  - `steps` object[]: Your own sequence instead of the default website one.
    - `subject` string: Step 1 only: follow-ups reply in its thread as Re: plus this subject.
    - `body` string, required
    - `delay_days` integer: Days after step 1.
  - `daily_limit` integer: Most emails this campaign sends a day. The mailbox's own daily cap still applies.
  - `days` string[]: Sending days. Default Mon to Fri.
  - `hour_from` integer: Window start hour, 24h, in timezone. Default 9.
  - `hour_to` integer: Window end hour, exclusive. Default 17.
  - `timezone` string: IANA timezone, e.g. "Europe/London". Default America/New_York.
  - `followup_gaps_days` integer[]: Day offset of each follow-up from step 1, e.g. [4,14,28,42].
  - `confirm` boolean: Set true after the user confirmed an action the guard flagged as hard to undo.

## 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)
