---
title: "Create a draft campaign"
method: POST
path: "/v1/finder/campaigns"
tags: ["RecruitAffiliates.ai"]
---

# Create a draft campaign

`POST /v1/finder/campaigns`

## Request

- Base URL: `https://api.affiliaterail.com`
- URL: `https://api.affiliaterail.com/v1/finder/campaigns`
- Auth: HTTP bearer

A draft, with who's in checked straight away. Nothing sends: someone reviews and approves the emails, then starts it, in the app.

**Scope:** `finder:write`

## Request body

- FinderCampaignCreate
  - `brand_id` string: Which brand. Defaults to the organization's oldest.
  - `name` string, required
  - `inbox_id` string, required: One of your connected inboxes, from `GET /settings`
  - `list_id` string: Who to email: a list. Leave out for everyone saved and not yet contacted.
  - `segment_id` string: Who to email: a segment, as it matches when the campaign is checked. Send `list_id` or `segment_id`, not both.

## Response `201`

The draft

- FinderCampaignDetail
  - `id` string, required: Prefixed id (`fca_…`)
  - `object` 'finder_campaign', required
  - `brand_id` string, required: Prefixed id (`fbr_…`)
  - `inbox_id` string, nullable, required
  - `name` string, required
  - `state` 'draft' | 'running' | 'paused' | 'stopped' | 'finished', required
  - `audience` object, nullable, required
    - `source` object, required
      - `kind` 'list' | 'stage' | 'segment', required
      - `list_id` string, nullable, required
      - `stage` string, nullable, required
      - `segment_id` string, nullable, required: The segment the campaign was picked from, when `kind` is `segment`
    - `checked_at` string, date-time, nullable, required: ISO-8601, UTC
    - `included` integer, required
    - `excluded` object, required
      - `existing_affiliate` integer
      - `do_not_contact` integer
      - `rule_excluded` integer
      - `same_person` integer
      - `no_email` integer
      - `invalid_email` integer
      - `unverified_email` integer
      - `suppressed` integer
      - `already_contacted` integer
      - `not_open` integer
      - `over_limit` integer
  - `approved` boolean, required: True once someone approved the current emails in the app
  - `created_at` string, date-time, required: ISO-8601, UTC
  - `updated_at` string, date-time, required: ISO-8601, UTC
  - `stats` FinderCampaignStats, required
    - `members` integer, required
    - `enrolled` integer, required
    - `sent` integer, required
    - `replied` integer, required
    - `bounced` integer, required
    - `unsubscribed` integer, required

## Other responses

- `400`: Invalid request
- `401`: Missing or unknown API key
- `402`: The organization's Recruit Affiliates plan does not include the API
- `403`: Key lacks the required scope
- `404`: No such object in your organization
- `409`: In conflict with the object's state, or the same idempotent request is still running
- `422`: The request was understood and refused
- `429`: Rate limited, by key or by organization: see Retry-After and X-RateLimit-Scope
- `501`: Not available to a test key (`sandbox_no_send`)

---

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