Preview a campaign's messages
/v1/campaigns/{campaign_id}/previewRenders every step of variation_a for a few leads enrolled in the campaign, the way the sender renders them. AI fields are shown at their fallback value, the worst case, so no credits are spent; their names are listed in ai_fields_at_fallback.
Send lead_ids to choose the leads (up to 10), or leave it out for the first limit enrolled leads (default 3, at most 10). When the campaign has no enrolled leads, one preview is rendered with placeholder values and lead is null.
Each preview carries the lead and its steps. A step reports its position (step, such as 2.yes.1 for the first step of a conditional's yes branch), type, delay, rendered subject and body, the body's length in chars, over_limit when a connection note is over LinkedIn's 300 characters, and an error naming any variable the sender couldn't fill. view_profile steps are left out.
Headers
AuthorizationstringRequiredBearerfollowed by a space and your API key, for exampleBearer vk_….
Path parameters
campaign_idstring · uuidRequiredID of the campaign.
Request body
lead_idsarray of strings or nullLeads in the campaign; defaults to the first few
limitinteger≥ 1≤ 10Default3
Response
200
campaign_idstringRequiredai_fields_at_fallbackarray of stringspreviewsarray of objectssuccessbooleanDefaulttrue
Errors
Errors share one JSON body: success, error, message, optional details, and request_id.
| Status | Code | Meaning |
|---|---|---|
| 400 | VALIDATION_ERROR | The request didn't match the endpoint's schema: a missing or malformed field, a bad query parameter, or a value out of range. |
| 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 |
| 413 | PAYLOAD_TOO_LARGE | The request body is larger than 1 MB. |
| 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 |