Campaigns
Canonical request fields, permissions, and MCP coverage generated from the Sendbound API.
This page uses the same generated contract as the OpenAPI download and remote MCP server. Project API keys never grant access to another project's resources. See the inbound guide for receiving setup, webhook payloads, signatures, retries, and attachments.
This reference is generated from the API’s routes and request validators. Download the OpenAPI specification. JSON bodies go directly to the API; MCP tools use a body object and a query object.
Generated request examples contain placeholders. Replace addresses, URLs, resource IDs and other placeholder values before sending. Conditional rules and refinements are enforced by the API at runtime.
/campaignscreate (campaigns)
Authentication: Secret project API key. Resources are scoped to that project.
MCP: create_campaign
Request body: application/json
| Field | Required | Type / constraints |
|---|---|---|
name | Yes | string |
description | No / conditional | string |
subject | Yes | string |
body | Yes | string |
from | Yes | string, email |
fromName | No / conditional | string, nullable |
replyTo | No / conditional | string, email, nullable |
type | No / conditional | string (TRANSACTIONAL, MARKETING, HEADLESS) |
audienceType | Yes | string (ALL, FILTERED, SEGMENT) |
audienceCondition | No / conditional | object |
segmentId | No / conditional | string, uuid |
isABTest | No / conditional | boolean |
abVariantSubject | No / conditional | string |
abVariantBody | No / conditional | string |
abSplitPercent | No / conditional | integer |
abTestDuration | No / conditional | integer |
Complete request JSON Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
},
"subject": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"from": {
"type": "string",
"format": "email"
},
"fromName": {
"type": "string",
"maxLength": 100,
"nullable": true
},
"replyTo": {
"type": "string",
"format": "email",
"nullable": true
},
"type": {
"type": "string",
"enum": [
"TRANSACTIONAL",
"MARKETING",
"HEADLESS"
],
"default": "MARKETING"
},
"audienceType": {
"type": "string",
"enum": [
"ALL",
"FILTERED",
"SEGMENT"
]
},
"audienceCondition": {
"type": "object",
"properties": {
"logic": {
"type": "string",
"enum": [
"AND",
"OR"
]
},
"groups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"minLength": 1
},
"operator": {
"type": "string",
"enum": [
"equals",
"notEquals",
"contains",
"notContains",
"greaterThan",
"lessThan",
"greaterThanOrEqual",
"lessThanOrEqual",
"exists",
"notExists",
"within",
"olderThan",
"triggered",
"triggeredWithin",
"triggeredOlderThan",
"notTriggered",
"notTriggeredWithin",
"memberOfSegment",
"notMemberOfSegment"
]
},
"value": {},
"unit": {
"type": "string",
"enum": [
"days",
"hours",
"minutes"
]
}
},
"required": [
"field",
"operator"
],
"additionalProperties": false
}
},
"conditions": {}
},
"required": [
"filters"
],
"additionalProperties": false
},
"minItems": 1
}
},
"required": [
"logic",
"groups"
],
"additionalProperties": false
},
"segmentId": {
"type": "string",
"format": "uuid"
},
"isABTest": {
"type": "boolean"
},
"abVariantSubject": {
"type": "string",
"minLength": 1
},
"abVariantBody": {
"type": "string",
"minLength": 1
},
"abSplitPercent": {
"type": "integer",
"minimum": 1,
"maximum": 99
},
"abTestDuration": {
"type": "integer",
"minimum": 1,
"maximum": 168
}
},
"required": [
"name",
"subject",
"body",
"from",
"audienceType"
],
"additionalProperties": false
}Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.
Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.
/campaignslist (campaigns)
Authentication: Secret project API key. Resources are scoped to that project.
MCP: list_campaigns
| Parameter | Location | Required | Type |
|---|---|---|---|
status | query | No | string |
search | query | No | string |
page | query | No | string |
pageSize | query | No | string |
sort | query | No | string |
dir | query | No | string |
Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.
Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.
/campaigns/bulk-updatebulk Update (campaigns)
Authentication: Secret project API key. Resources are scoped to that project.
MCP: campaigns_bulk_update
Request body: application/json
| Field | Required | Type / constraints |
|---|---|---|
ids | Yes | array |
delete | No / conditional | boolean |
Complete request JSON Schema
{
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"minItems": 1,
"maxItems": 1000
},
"delete": {
"type": "boolean"
}
},
"required": [
"ids"
],
"additionalProperties": false
}Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.
Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.
/campaigns/:idget (campaigns)
Authentication: Secret project API key. Resources are scoped to that project.
MCP: get_campaign
| Parameter | Location | Required | Type |
|---|---|---|---|
id | path | Yes | string |
Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.
Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.
/campaigns/:idupdate (campaigns)
Authentication: Secret project API key. Resources are scoped to that project.
MCP: campaigns_update
| Parameter | Location | Required | Type |
|---|---|---|---|
id | path | Yes | string |
Request body: application/json
| Field | Required | Type / constraints |
|---|---|---|
name | No / conditional | string |
description | No / conditional | string |
subject | No / conditional | string |
body | No / conditional | string |
from | No / conditional | string |
fromName | No / conditional | string, nullable |
replyTo | No / conditional | string, nullable |
type | No / conditional | string (TRANSACTIONAL, MARKETING, HEADLESS) |
audienceType | No / conditional | string (ALL, FILTERED, SEGMENT) |
audienceCondition | No / conditional | object |
segmentId | No / conditional | string |
isABTest | No / conditional | boolean |
abVariantSubject | No / conditional | string, nullable |
abVariantBody | No / conditional | string, nullable |
abSplitPercent | No / conditional | integer |
abTestDuration | No / conditional | integer |
Complete request JSON Schema
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"subject": {
"type": "string"
},
"body": {
"type": "string"
},
"from": {
"type": "string"
},
"fromName": {
"type": "string",
"maxLength": 100,
"nullable": true
},
"replyTo": {
"type": "string",
"nullable": true
},
"type": {
"type": "string",
"enum": [
"TRANSACTIONAL",
"MARKETING",
"HEADLESS"
]
},
"audienceType": {
"type": "string",
"enum": [
"ALL",
"FILTERED",
"SEGMENT"
]
},
"audienceCondition": {
"type": "object",
"properties": {
"logic": {
"type": "string",
"enum": [
"AND",
"OR"
]
},
"groups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"minLength": 1
},
"operator": {
"type": "string",
"enum": [
"equals",
"notEquals",
"contains",
"notContains",
"greaterThan",
"lessThan",
"greaterThanOrEqual",
"lessThanOrEqual",
"exists",
"notExists",
"within",
"olderThan",
"triggered",
"triggeredWithin",
"triggeredOlderThan",
"notTriggered",
"notTriggeredWithin",
"memberOfSegment",
"notMemberOfSegment"
]
},
"value": {},
"unit": {
"type": "string",
"enum": [
"days",
"hours",
"minutes"
]
}
},
"required": [
"field",
"operator"
],
"additionalProperties": false
}
},
"conditions": {}
},
"required": [
"filters"
],
"additionalProperties": false
},
"minItems": 1
}
},
"required": [
"logic",
"groups"
],
"additionalProperties": false
},
"segmentId": {
"type": "string"
},
"isABTest": {
"type": "boolean"
},
"abVariantSubject": {
"type": "string",
"minLength": 1,
"nullable": true
},
"abVariantBody": {
"type": "string",
"minLength": 1,
"nullable": true
},
"abSplitPercent": {
"type": "integer",
"minimum": 1,
"maximum": 99
},
"abTestDuration": {
"type": "integer",
"minimum": 1,
"maximum": 168
}
},
"additionalProperties": false
}Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.
Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.
/campaigns/:iddelete (campaigns)
Authentication: Secret project API key. Resources are scoped to that project.
MCP: campaigns_delete
| Parameter | Location | Required | Type |
|---|---|---|---|
id | path | Yes | string |
Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.
Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.
/campaigns/:id/duplicateduplicate (campaigns)
Authentication: Secret project API key. Resources are scoped to that project.
MCP: campaigns_duplicate
| Parameter | Location | Required | Type |
|---|---|---|---|
id | path | Yes | string |
Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.
Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.
/campaigns/:id/sendsend (campaigns)
Authentication: Secret project API key. Resources are scoped to that project.
MCP: send_campaign
| Parameter | Location | Required | Type |
|---|---|---|---|
id | path | Yes | string |
Request body: application/json
| Field | Required | Type / constraints |
|---|---|---|
scheduledFor | No / conditional | JSON |
Complete request JSON Schema
{
"type": "object",
"properties": {
"scheduledFor": {}
},
"additionalProperties": true
}Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.
Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.
/campaigns/:id/cancelcancel (campaigns)
Authentication: Secret project API key. Resources are scoped to that project.
MCP: cancel_campaign
| Parameter | Location | Required | Type |
|---|---|---|---|
id | path | Yes | string |
Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.
Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.
/campaigns/:id/statsstats (campaigns)
Authentication: Secret project API key. Resources are scoped to that project.
MCP: get_campaign_stats
| Parameter | Location | Required | Type |
|---|---|---|---|
id | path | Yes | string |
Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.
Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.
/campaigns/:id/pick-winnerpick Winner (campaigns)
Authentication: Secret project API key. Resources are scoped to that project.
MCP: campaigns_pick_winner
| Parameter | Location | Required | Type |
|---|---|---|---|
id | path | Yes | string |
Request body: application/json
| Field | Required | Type / constraints |
|---|---|---|
variant | Yes | string (A, B) |
Complete request JSON Schema
{
"type": "object",
"properties": {
"variant": {
"type": "string",
"enum": [
"A",
"B"
]
}
},
"required": [
"variant"
],
"additionalProperties": false
}Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.
Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.
/campaigns/:id/analyticsanalytics (campaigns)
Authentication: Secret project API key. Resources are scoped to that project.
MCP: campaigns_analytics
| Parameter | Location | Required | Type |
|---|---|---|---|
id | path | Yes | string |
Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.
Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.
/campaigns/:id/testsend Test (campaigns)
Authentication: Secret project API key. Resources are scoped to that project.
MCP: campaigns_send_test
| Parameter | Location | Required | Type |
|---|---|---|---|
id | path | Yes | string |
Request body: application/json
| Field | Required | Type / constraints |
|---|---|---|
email | Yes | string, email |
Complete request JSON Schema
{
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email"
}
},
"required": [
"email"
],
"additionalProperties": false
}Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.
Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.