API Reference
Campaigns
Overview

Campaigns API

The Campaigns API is the programmatic interface to the Experiture campaign engine. It covers the full campaign lifecycle: create a campaign, configure its audience and content, run preflight checks, schedule or send it, and observe execution state and metrics.

Base URL: https://api.experiture.ai/public/v1

Authentication: All endpoints require a bearer token with the appropriate campaigns:* scope. See Authentication.

v1 scope. Public Campaigns v1 supports broadcast campaign type only. Unsupported campaign-type operations return a stable 409 TYPE_UNSUPPORTED; summary/object reads for an existing unsupported campaign return 409 SUMMARY_TYPE_UNSUPPORTED.


Endpoint Index

Campaign Object

MethodPathScopeDescription
POST/campaignscampaigns:createCreate a new campaign
GET/campaignscampaigns:readList campaigns with filtering and search
GET/campaigns/:idcampaigns:readGet full campaign object
PATCH/campaigns/:idcampaigns:updateUpdate campaign metadata
DELETE/campaigns/:idcampaigns:deleteSoft-delete a campaign
POST/campaigns/:id/archivecampaigns:deleteArchive a campaign
POST/campaigns/:id/clonecampaigns:createClone a campaign into a new draft

Configuration

MethodPathScopeDescription
PUT/campaigns/:id/audiencecampaigns:updateReplace audience bindings
PUT/campaigns/:id/contentcampaigns:updateReplace content/template binding
PUT/campaigns/:id/schedulecampaigns:updateSet schedule intent

Execution

MethodPathScopeDescription
POST/campaigns/:id/preflightcampaigns:readRun pre-send validation checks
POST/campaigns/:id/schedule-jobscampaigns:scheduleSchedule the campaign send
POST/campaigns/:id/send-jobscampaigns:sendSend the campaign immediately

Observability

MethodPathScopeDescription
GET/campaigns/:id/summarycampaigns:readCampaign setup summary
GET/campaigns/:id/statuscampaigns:readExecution state and schedule
GET/campaigns/:id/metricsanalytics:readExecution pipeline counts

OAuth Scopes

ScopeGrants access to
campaigns:readList, get, summary, status, preflight
campaigns:createCreate and clone campaigns
campaigns:updateUpdate metadata, audience, content, schedule
campaigns:deleteSoft-delete and archive
campaigns:scheduleSchedule a send via POST /schedule-jobs
campaigns:sendTrigger an immediate send via POST /send-jobs
analytics:readRead execution metrics via GET /metrics

Grant only the scopes your integration needs. A reporting client needs only campaigns:read and analytics:read. A full authoring integration needs the full set.


Campaign Lifecycle

CREATE draft

    ├─ PUT /audience      bind include/exclude segments
    ├─ PUT /content       assign published template
    ├─ PUT /schedule      set send mode (now / at)

    ├─ POST /preflight    validate readiness

    ├─ POST /schedule-jobs   schedule future send  ─┐
    └─ POST /send-jobs        send immediately       │

                              execution in progress / completed / failed

                              GET /status            observe execution state
                              GET /metrics           observe pipeline counts

Configuration steps (audience, content, schedule) can be done in any order and are only available while the campaign is in draft status. Once a send job is created, the campaign moves out of draft and configuration is locked.


Campaign Types & Channels

Supported campaign type (v1): broadcast

Supported channels:

ChannelValue
Emailemail
SMSsms
Push notificationpush
Direct maildirect_mail

Campaign Categories

Categories are a classification hint stored in campaign settings. The valid values are:

acquisition · nurturing · retention · reactivation · seasonal · product · event · template · updates · general

Invalid or omitted categories default to general. The category is also automatically added to the campaign's tags array.


Idempotency

Create, clone, schedule-jobs, and send-jobs support idempotent requests via the Idempotency-Key header (UUID v4). Duplicate requests with the same key and body return the cached response for 24 hours, preventing duplicate campaigns or duplicate sends on network retry.


Error Namespace

All Campaigns API errors use the JOURNEY_API.PUBLIC.CAMPAIGNS.* code namespace. See each endpoint page for the specific codes.


See Also