---
title: "Create one Outreach (campaign container) in draft."
method: POST
path: "/outreach"
---

# Create one Outreach (campaign container) in draft.

`POST /outreach`

## Request

- Base URL: `https://forbiz.io/api/public/agent`
- URL: `https://forbiz.io/api/public/agent/outreach`
- Auth: HTTP bearer

REUSE BEFORE CREATE: an Outreach is a commercial thread. Before creating one, call GET /outreach (or GET /search?type=outreach) and reuse the existing Outreach whenever it already represents the same thread — same audience, same angle, same reason. Create a new one only when no existing Outreach represents it.

This creates the CONTAINER ONLY. No targets, executions, actions, messages or sends are created implicitly. Attach targets afterwards with POST /targets using the returned id as campaignId, and record real sends with POST /outreach/{id}/executions.

The server always sets the state: outreach_status = draft, status = active, ownership = the credential's user, workspace = the credential's workspace, created_by = the credential's user. An Outreach can never be created in ready_to_send, waiting_for_responses or executed state — those are facts derived from recorded executions, not declarable at creation.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `name` string: Required. The commercial thread this Outreach represents.
  - `reasonNow` string: Why this Outreach exists now.
  - `expectedSignals` string[]: Free-form strings. Not validated against a fixed list.
  - `funnelId` string, nullable: Optional. Must belong to the caller when given.
  - `channelMode` string: Optional. Defaults to copy_paste, matching the UI.
  - `vertical` string
  - `intendedAudience` string
  - `productAngle` string
  - `messageAngle` string
  - `callToAction` string
  - `senderName` string
  - `senderEmail` string

## Response `201`

Outreach created in draft. Container only.

- object
  - `ok` boolean
  - `outreach` object
  - `owner` Owner: Ownership of the record. Never means the performer of an operation — use /actions/{id}/history for actor semantics.
    - `type` 'human'
    - `user_id` string: Owning Forbiz user. Action payloads never repeat raw ownership UUIDs.
    - `workspace_id` string, nullable
    - `note` string
  - `created` object

## Other responses

- `208`: Idempotent replay of a previous request with the same Idempotency-Key. Nothing was applied again.
- `400`: Missing name, unknown funnel, or a forbidden creation state
- `409`: Credential is not bound to a workspace

---

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