---
title: "Create a campaign for a selected group"
method: POST
path: "/campaigns/from-audience"
tags: ["Campaigns"]
---

# Create a campaign for a selected group

`POST /campaigns/from-audience`

Creates a blank draft and freezes distinct contacts from a complete contact selection or email-activity drilldown. Requires campaigns:write and subscribers:read, plus analytics:read for activity. Maximum 100,000 contacts and 8 MiB stored audience JSON. No sending domain or send permission is required for drafting. Membership is saved now; active status and email eligibility are checked again at send time. Deleted historical analytics contacts are omitted. Read, replace or clear targetLists using the existing campaign endpoints.

## Request body

- object
  - `name` string
  - `selection` object, required
    - `source` 'contacts' | 'email_activity', required — Provide only the matching contacts or activity object.
    - `contacts` object
      - `subscriberIds` string[] — Explicit selected IDs, all owned by this company. Omit to select all matching contacts.
      - `excludedSubscriberIds` string[]
      - `filters` object[] — Subscriber filters. Mutually exclusive with root and segmentId.
        - `id` string, required
        - `field` string, required
        - `operator` string, required
        - `value` string, required
      - `root` object — Nested subscriber filter tree, maximum depth 8. Mutually exclusive with filters and segmentId.
        - `kind` 'group', required
        - `id` string, required
        - `joinOperator` 'and' | 'or', required
        - `children` object[], required
      - `filterJoinOperator` 'and' | 'or'
      - `activeOnly` boolean
      - `search` string
      - `listId` string
      - `segmentId` string — Saved segment. Do not also provide filters or root.
    - `activity` object — Choose at most one campaign/automation/node/transactional source. With no source, audience is required. An audience can also narrow a source. Includes every matching contact across pages. Marketers can use only marketing email sources.
      - `eventType` 'send' | 'delivery' | 'open' | 'click' | 'bounce' | 'unsubscribe', required
      - `campaignId` string
      - `automationId` string
      - `automationNodeId` string
      - `transactionalId` string
      - `audience` object
        - `type` 'list' | 'segment', required
        - `id` string, required
      - `period` 'all' | '1h' | '24h' | '7d' | '30d' | '90d'
      - `includeMachineEngagement` boolean
      - `search` string
      - `bounceType` 'Permanent' | 'Transient' — Only for bounce activity.
      - `bounceSubType` string — Only for bounce activity.
      - `mailboxProvider` string

## Response `201`

Draft created; no email sent

- object
  - `campaign` object, required
    - `id` string, required
    - `companyId` string, required
    - `name` string, required
    - `status` 'draft', required
    - `emailId` string, required
    - `targetLists` object, required
      - `type` 'rules', required
      - `include` unknown[], required
        - unknown
      - `includedSubscriberIds` string[], required
    - `email` object — Linked blank email draft.
  - `audience` object, required
    - `source` 'contacts' | 'email_activity', required
    - `selectedCount` integer, required
    - `eligibleCount` integer, required
    - `selectedAt` string, date-time, required

## Other responses

- `400` — Invalid or ambiguous selection, oversized explicit ID arrays, incompatible filters, or no matching live contacts
- `401` — Missing or invalid API key
- `403` — Missing scopes or role access, including transactional sources for marketers
- `404` — Company, contact, list, segment or email source is missing or outside the selected company
- `413` — Selection exceeds 100,000 contacts or 8 MiB; narrow it or use a saved segment

## Changes

- **2026-09-11** `1938006077ff` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/campaigns/from-audience/post.md)

---

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