Campaigns

Schedule a campaign run

Schedules an email campaign run at the absolute ISO-8601 instant in scheduledFor, or immediately when omitted.

POST
/v1/campaigns/{id}/runs

Schedules an email campaign run at the absolute ISO-8601 instant in scheduledFor, or immediately when omitted. The optional Idempotency-Key header is scoped to the organization and replays return the original run. An email campaign must carry the brand footer: it is refused with CampaignFooterRequiredError when its footer is off and its template renders no BrandFooter, and with BrandAddressRequiredError when a brand that signs it off has no postal address.

Authorization

apiKey
headerx-api-key<token>

Path Parameters

id*string
Match^camp_[0-9a-hjkmnp-tv-z]{16,24}$

Header Parameters

idempotency-key?string
Length1 <= length <= 255

Request Body

application/json
  1. body
scheduledFor?string|null

Response Body

Success

application/json
  1. response
id*CampaignRunId
Match^crun_[0-9a-hjkmnp-tv-z]{16,24}$
campaignId*CampaignId
Match^camp_[0-9a-hjkmnp-tv-z]{16,24}$
status*string
Value in"scheduled""resolving""dispatching""paused""completed""cancelled""failed"
scheduledFor*string
idempotencyKey*string|null
startedAt*string|null
completedAt*string|null
contentSnapshot*||
audienceSnapshot*
policySnapshot*
totalRecipients*number
dispatchedCount*number
failedCount*number
skippedCount*number
pendingCount*number
skippedReasons*array<>
estimatedCompletionAt*string|null
failureReason*string|null
holdReason*string|null
holdDomainId*|null
holdUntil*string|null
capacityWarning*string|null
lastContactId*string|null
createdBy*string|null
actorEmail*string
memberRole*string
createdAt*string
updatedAt*string
Example Request
import { createClient } from "samva";const samva = createClient({ apiKey: process.env.SAMVA_API_KEY! });const result = await samva.campaigns.scheduleRun({  "id": "example"});
Example Response
{  "id": "string",  "campaignId": "string",  "status": "scheduled",  "scheduledFor": "string",  "idempotencyKey": "string",  "startedAt": "string",  "completedAt": "string",  "contentSnapshot": {    "channel": "email",    "email": {      "subject": "string",      "html": "string",      "text": "string",      "attachments": [        {          "filename": "string",          "content": "string",          "mediaId": "string",          "contentType": "string",          "size": 1        }      ],      "publicationId": "string",      "inputContractId": "string",      "templateId": "string",      "templateSlug": "string",      "templateData": {        "property1": "string",        "property2": "string"      },      "locale": "string",      "timeZone": "string",      "inReplyToMessageId": "string",      "replyTo": [        "string"      ],      "topicId": "string",      "tracking": {        "opens": true,        "clicks": true      },      "footer": {        "enabled": true      },      "headers": {        "property1": "string",        "property2": "string"      },      "preheader": "string"    },    "issue": {      "path": "string",      "commit": "string"    },    "from": {      "email": "string",      "name": "string"    },    "replyMailboxId": "string",    "conversationId": "string",    "metadata": {      "property1": "string",      "property2": "string"    }  },  "audienceSnapshot": {    "topicId": "string",    "includeTags": [      "string"    ],    "excludeTags": [      "string"    ],    "contactIds": [      "string"    ],    "groupIds": [      "string"    ]  },  "policySnapshot": {    "pageSize": 100  },  "totalRecipients": 0,  "dispatchedCount": 0,  "failedCount": 0,  "skippedCount": 0,  "pendingCount": 0,  "skippedReasons": [    {      "reason": "unsubscribed",      "count": 0    }  ],  "estimatedCompletionAt": "string",  "failureReason": "string",  "holdReason": "string",  "holdDomainId": "string",  "holdUntil": "string",  "capacityWarning": "string",  "lastContactId": "string",  "createdBy": "string",  "actorEmail": "string",  "memberRole": "string",  "createdAt": "string",  "updatedAt": "string"}

Related documentation