Update a sequence step

PATCH/v1/campaigns/{campaign_id}/sequence/steps/{step_id}
Scope: campaigns:write

Changes one step's message, subject, content or delay. The step is found by its id anywhere in the sequence, including inside conditional branches, and the whole sequence is validated again before it's saved.

If the sequence changed after it was read, the request answers 409 SEQUENCE_MODIFIED instead of overwriting the other change. Retrieve the campaign again and retry.

Headers

  • AuthorizationstringRequired

    Bearer followed by a space and your API key, for example Bearer vk_….

Path parameters

  • campaign_idstring · uuidRequired

    ID of the campaign.

  • step_idintegerRequired

    ID of the step.

Request body

  • updatesobjectRequired

    Fields to change on the step. Only message, subject, content and delay may be patched; id, type and branches are structural and require PUT .../sequence.

Response

200

  • messagestringRequired
  • campaign_idstring or null
  • successboolean
    Default true

Errors

Errors share one JSON body: success, error, message, optional details, and request_id.

StatusCodeMeaning
400VALIDATION_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. details.errors lists each failing field with its field, message and type.

400NO_SEQUENCE

The campaign has no sequence, so there's no step to update.

400SEQUENCE_VALIDATION_FAILED

The sequence breaks a structural rule, such as an unknown step type or a linkedin_connection step without a conditional after it. The message lists every rule that failed.

401UNAUTHORIZED

The Authorization header is missing or malformed, or the API key is unknown or has been deactivated.

401API_KEY_EXPIRED

The API key is past its expiry date. Create a new key in the Victoria AI app.

403INSUFFICIENT_SCOPE

The API key doesn't have the scope this endpoint requires, such as leads:write.

403ORGANIZATION_DEACTIVATED

The organization that owns this API key has been deactivated.

404CAMPAIGN_NOT_FOUND

No campaign with this ID exists in your organization.

404STEP_NOT_FOUND

No step with this ID exists in the campaign's sequence, including inside conditional branches.

404NOT_FOUND

No endpoint matches the path. A resource ID in the path that isn't a valid UUID also answers NOT_FOUND.

409STEP_ID_AMBIGUOUS

More than one step in the sequence has this ID, so the update can't tell which one to change.

409SEQUENCE_MODIFIED

The sequence changed after it was read. Retrieve the campaign again and retry.

413PAYLOAD_TOO_LARGE

The request body is larger than 1 MB.

429RATE_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 Retry-After header. See Rate limits.

500INTERNAL_ERROR

Something failed on our side. The response never includes internal details; quote its request_id when you contact support.

503UPSTREAM_TIMEOUT

A service the API depends on timed out. The request is safe to retry.

503AUTH_UNAVAILABLE

The API key couldn't be checked because the authentication service was unavailable. The request is safe to retry.

Response headers

HeaderDescription
X-Request-ID

Correlation ID for the request, also returned as request_id in error bodies. Send your own X-Request-ID, up to 128 letters, digits, ., _, : or -, and it's used instead.

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 429: seconds to wait before retrying.