---
title: "Preview campaign email"
method: POST
path: "/api/v1/tools/preview_campaign_step"
tags: ["default"]
---

# Preview campaign email

`POST /api/v1/tools/preview_campaign_step`

## Request

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

The exact email one step sends to one site: subject and body rendered the way the send engine renders them (program facts, offer ladder, the site's page and receipts, its contact name, an approved opener, the opt-out footer and postal address), for a website campaign, or without campaign_id for an autopilot lane's campaign (its default sequence before autopilot made one). refused_at_send names a content rule the send would fail. Read-only.

## Request body

- object
  - `site_id` string, uuid, required: A site id from list_websites.
  - `campaign_id` string, uuid: A website campaign from list_campaigns. Omit for the autopilot lane.
  - `lane` 'prospects' | 'featured' | 'link_exchange': Without campaign_id: prospects (affiliate sites, default), featured (sites that list you) or link_exchange.
  - `step` integer: Step number as the engine lays the sequence out (raise steps repeat per ladder rung). Default 1.

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