Update the reply agent
/v1/campaigns/{campaign_id}/responderUpdates 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
AuthorizationstringRequiredBearerfollowed by a space and your API key, for exampleBearer vk_….
Path parameters
campaign_idstring · uuidRequiredID of the campaign.
Request body
agent_namestring or nullat most 100 charactersassetsarray of objects or nullLinks the agent may share, e.g. a walkthrough video
Show 2 child attributesHide child attributes
descriptionstringRequiredWhen to share the link, in a sentence the agent can act on.
at most 300 characterslinkstringRequiredhttps:// URL
at most 2,000 characters
campaign_descriptionstring or nullat most 8,000 characterscompany_namestring or nullat most 200 characterscustom_instructionsstring or nullat most 8,000 charactersgoal_linkstring or nullWhere the agent sends an interested prospect, e.g. a booking page
at most 2,000 charactersis_enabledboolean or nullAnswer replies automatically
tonestring or nullOne of"friendly""direct""formal"
Response
200
campaign_idstring or nullmessagestring or nullresponderobject or nullShow 16 child attributesHide child attributes
agent_namestring or nullagent_versioninteger or null2is the current agent. Configurations created through the API are always version 2.assetsarray of objects or nullLinks the agent may share, each with a
linkand adescriptionof when to share it.campaign_descriptionstring or nullcampaign_idstring or nullcompany_namestring or nullcustom_instructionsstring or nullfirst_message_modestring or nullgoalstring or nullgoal_linkstring or nullWhere the agent sends an interested prospect, such as a booking page.
idstring or nullis_enabledboolean or nullWhether the agent answers replies. Mirrors the campaign's
responder_enabled.max_repliesinteger or nullmodestring or nulltonestring or nullfriendly,directorformal.updated_atstring · date-time or null
successbooleanDefaulttrue
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. |
| 400 | NO_UPDATES | The update request contained no fields to change. |
| 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 |