Update the reply agent

PATCH/v1/campaigns/{campaign_id}/responder
Scope: campaigns:write

Updates the fields you send and leaves the rest unchanged. When the campaign has no configuration yet, one is created for the current agent, answering on its own, with is_enabled: false unless you send it.

goal_link must be an https URL. Each entry in assets is a link (https) with a description of when to share it. tone is friendly, direct or formal. campaign_description, custom_instructions, company_name and agent_name are limited to 8,000 characters each.

is_enabled also sets the campaign's responder_enabled flag, the one Update a campaign changes, so the two never disagree.

Headers

  • AuthorizationstringRequired

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

Path parameters

  • campaign_idstring · uuidRequired

    ID of the campaign.

Request body

  • agent_namestring or null
    at most 100 characters
  • assetsarray of objects or null

    Links the agent may share, e.g. a walkthrough video

    Show 2 child attributes
    • descriptionstringRequired

      When to share the link, in a sentence the agent can act on.

      at most 300 characters
    • linkstringRequired

      https:// URL

      at most 2,000 characters
  • campaign_descriptionstring or null
    at most 8,000 characters
  • company_namestring or null
    at most 200 characters
  • custom_instructionsstring or null
    at most 8,000 characters
  • goal_linkstring or null

    Where the agent sends an interested prospect, e.g. a booking page

    at most 2,000 characters
  • is_enabledboolean or null

    Answer replies automatically

  • tonestring or null
    One of"friendly""direct""formal"

Response

200

  • campaign_idstring or null
  • messagestring or null
  • responderobject or null
    Show 16 child attributes
    • agent_namestring or null
    • agent_versioninteger or null

      2 is the current agent. Configurations created through the API are always version 2.

    • assetsarray of objects or null

      Links the agent may share, each with a link and a description of when to share it.

    • campaign_descriptionstring or null
    • campaign_idstring or null
    • company_namestring or null
    • custom_instructionsstring or null
    • first_message_modestring or null
    • goalstring or null
    • goal_linkstring or null

      Where the agent sends an interested prospect, such as a booking page.

    • idstring or null
    • is_enabledboolean or null

      Whether the agent answers replies. Mirrors the campaign's responder_enabled.

    • max_repliesinteger or null
    • modestring or null
    • tonestring or null

      friendly, direct or formal.

    • updated_atstring · date-time 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_UPDATES

The update request contained no fields to change.

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.

404NOT_FOUND

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

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.