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.

POST/campaigns

create (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: create_campaign

Request body: application/json

FieldRequiredType / constraints
nameYesstring
descriptionNo / conditionalstring
subjectYesstring
bodyYesstring
fromYesstring, email
fromNameNo / conditionalstring, nullable
replyToNo / conditionalstring, email, nullable
typeNo / conditionalstring (TRANSACTIONAL, MARKETING, HEADLESS)
audienceTypeYesstring (ALL, FILTERED, SEGMENT)
audienceConditionNo / conditionalobject
segmentIdNo / conditionalstring, uuid
isABTestNo / conditionalboolean
abVariantSubjectNo / conditionalstring
abVariantBodyNo / conditionalstring
abSplitPercentNo / conditionalinteger
abTestDurationNo / conditionalinteger
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.

GET/campaigns

list (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: list_campaigns

ParameterLocationRequiredType
statusqueryNostring
searchqueryNostring
pagequeryNostring
pageSizequeryNostring
sortqueryNostring
dirqueryNostring

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.

POST/campaigns/bulk-update

bulk Update (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: campaigns_bulk_update

Request body: application/json

FieldRequiredType / constraints
idsYesarray
deleteNo / conditionalboolean
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.

GET/campaigns/:id

get (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: get_campaign

ParameterLocationRequiredType
idpathYesstring

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.

PUT/campaigns/:id

update (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: campaigns_update

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
nameNo / conditionalstring
descriptionNo / conditionalstring
subjectNo / conditionalstring
bodyNo / conditionalstring
fromNo / conditionalstring
fromNameNo / conditionalstring, nullable
replyToNo / conditionalstring, nullable
typeNo / conditionalstring (TRANSACTIONAL, MARKETING, HEADLESS)
audienceTypeNo / conditionalstring (ALL, FILTERED, SEGMENT)
audienceConditionNo / conditionalobject
segmentIdNo / conditionalstring
isABTestNo / conditionalboolean
abVariantSubjectNo / conditionalstring, nullable
abVariantBodyNo / conditionalstring, nullable
abSplitPercentNo / conditionalinteger
abTestDurationNo / conditionalinteger
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.

DELETE/campaigns/:id

delete (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: campaigns_delete

ParameterLocationRequiredType
idpathYesstring

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.

POST/campaigns/:id/duplicate

duplicate (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: campaigns_duplicate

ParameterLocationRequiredType
idpathYesstring

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.

POST/campaigns/:id/send

send (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: send_campaign

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
scheduledForNo / conditionalJSON
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.

POST/campaigns/:id/cancel

cancel (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: cancel_campaign

ParameterLocationRequiredType
idpathYesstring

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.

GET/campaigns/:id/stats

stats (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: get_campaign_stats

ParameterLocationRequiredType
idpathYesstring

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.

POST/campaigns/:id/pick-winner

pick Winner (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: campaigns_pick_winner

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
variantYesstring (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.

GET/campaigns/:id/analytics

analytics (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: campaigns_analytics

ParameterLocationRequiredType
idpathYesstring

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.

POST/campaigns/:id/test

send Test (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: campaigns_send_test

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
emailYesstring, 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.

Select an endpoint
to see request details