Get the activation preflight
/v1/campaigns/{campaign_id}/preflightThe readiness verdict that activating with Update a campaign enforces, without activating: the sequence and its step content, variables and lead data coverage, the assigned senders and whether they're connected, sender email authentication, account conflicts and limits, enrolled leads, and the subscription.
ok is true when nothing blocks. Each entry in checks carries an id, a label, a status of pass, warn or fail, and a detail; blocking_count and warning_count total them. issues lists each problem with a code, a severity, a message and a suggested fix.
Useful on a live campaign too: a failing check there says why it has stopped sending.
Headers
AuthorizationstringRequiredBearerfollowed by a space and your API key, for exampleBearer vk_….
Path parameters
campaign_idstring · uuidRequiredID of the campaign.
Response
200
campaign_idstringRequiredokbooleanRequiredTrue when nothing blocks activation
blocking_countintegerDefault0checksarray of objectsEvery check: {id, label, status: pass|warn|fail, detail, tab, route}
issuesarray of objectsMachine-readable problems: {code, severity, message, fix}
successbooleanDefaulttruewarning_countintegerDefault0
Errors
Errors share one JSON body: success, error, message, optional details, and request_id.
| Status | Code | Meaning |
|---|---|---|
| 401 | UNAUTHORIZED | The |
| 401 | API_KEY_EXPIRED | The API key is past its expiry date. Create a new key in the Victoria AI app. |
| 403 | INSUFFICIENT_SCOPE | The API key doesn't have the scope this endpoint requires, such as |
| 403 | ORGANIZATION_DEACTIVATED | The organization that owns this API key has been deactivated. |
| 404 | CAMPAIGN_NOT_FOUND | No campaign with this ID exists in your organization. |
| 404 | NOT_FOUND | No endpoint matches the path. A resource ID in the path that isn't a valid UUID also answers |
| 429 | RATE_LIMITED | Too many requests for this API key: more than 100 a minute to one endpoint, or 600 a minute in total. Retry after the number of seconds in the |
| 500 | INTERNAL_ERROR | Something failed on our side. The response never includes internal details; quote its |
| 503 | UPSTREAM_TIMEOUT | A service the API depends on timed out. The request is safe to retry. |
| 503 | AUTH_UNAVAILABLE | The API key couldn't be checked because the authentication service was unavailable. The request is safe to retry. |
Response headers
| Header | Description |
|---|---|
X-Request-ID | Correlation ID for the request, also returned as |
RateLimit-Limit | Requests allowed to this endpoint per minute. |
RateLimit-Remaining | Requests you can still send to this endpoint right now. |
RateLimit-Reset | Seconds until the endpoint's full limit is available again. |
Retry-After | On a |