Restore saved agent version

Copies a saved version into staging by default. Use target=default only when an immediate live restore is intentional; staging restores still require publish.

OpenAPI

````yaml post /api/v2/agent/{agentConfigId}/versions/{versionId}/restore
openapi: 3.0.0
info:
version: 2.0.0
title: GetVoiceBot API
description: GetVoiceBot API Documentation
servers:
- url: https://api.getvoicebot.com
description: GetVoiceBot Production
variables:
baseUrl:
default: api.getvoicebot.com
description: Production API Root
security: []
tags:
- name: Agents
- name: Inbound Email
description: Control which senders may create inbound email work for an Agent.
- name: Features
description: Inspect capabilities available within an account hierarchy.
- name: Conversation Logs
description: Query conversation activity and calculate account-level metrics.
- name: Computer Agents
description: Set up, configure, inspect, and manage GetVoiceBot Computer Agents.
- name: Computer Agent Sessions
description: View and reset Computer Agent sessions.
- name: Accounts
- name: Agent Templates
description: Create, manage, and apply reusable Agent configurations.
paths:
/api/v2/agent/{agentConfigId}/versions/{versionId}/restore:
post:
tags:
- Agents
summary: Restore saved agent version
description: >-
Copies a saved version into staging by default. Use target=default only
when an immediate live restore is intentional; staging restores still
require publish.
parameters:
- name: agentConfigId
in: path
required: true
schema:
type: string
description: Live agent configuration ID used for this account version history.
- name: versionId
in: path
required: true
schema:
type: string
description: Epoch-ms score of the snapshot
example: 1750195000123
- name: targetAccountId
in: query
description: Account whose configuration should be restored.
required: true
schema:
type: integer
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
target:
type: string
enum:
- staging
- default
default: staging
responses:
'200':
description: Snapshot restored
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
restored:
$ref: '#/components/schemas/AgentConfigurationRead'
security:
- apiKeyAuth: []
components:
schemas:
AgentConfigurationRead:
allOf:
- type: object
description: >-
Writable staging configuration. Omitted fields retain their current
values.
properties:
title:
type: string
description: Display name for the agent.
description:
type: string
description: Short description of the agent.
brandName:
type: string
description: Brand name the agent represents.
agentInstructions:
type: string
description: >-
Primary instructions for voice, messaging, and Computer Agent
work.
welcomeMessage:
type: string
description: >-
Greeting used at the beginning of a conversation. Prefix with
prompt: to generate the greeting from instructions.
links:
type: array
items:
type: string
format: uri
description: Web pages supplied as agent knowledge.
keywords:
type: array
items:
type: string
description: Searchable labels for the agent.
agentModel:
type: string
description: Model identifier returned by GET /api/v2/models/supported.
agentThinking:
type: string
enum:
- low
nullable: true
description: Reasoning budget for supported models; null disables it.
agentThinkingModel:
type: string
nullable: true
description: >-
Model used by Pause & Think and optional post-conversation
reasoning.
postConvoForceThinking:
type: boolean
description: >-
Use the thinking model for post-conversation work when the
primary model is not reasoning-enabled.
timezone:
type: string
description: >-
IANA timezone used for scheduling and time-sensitive
instructions.
example: America/Chicago
agentVoice:
type: string
description: Exact voice ID returned by GET /api/v2/agent/voices.
agentTtsEngine:
type: string
nullable: true
description: >-
Text-to-speech engine used when speech-to-speech mode is
disabled.
agentLang:
type: string
enum:
- en-US
- multi
- es-MX
- es-ES
- es-US
description: >-
Primary spoken language. Use multi only with a compatible voice
and speech mode.
agentS2SEngine:
type: string
enum:
- openai
- gemini
nullable: true
description: >-
Speech-to-speech engine; null uses separate speech recognition
and synthesis.
agentSttEngine:
type: string
enum:
- google
- deepgram
- deepgramflux
- openai
description: >-
Speech recognition engine used when speech-to-speech mode is
disabled.
agentSttSmartFormatting:
type: boolean
description: >-
Apply smart formatting when supported by the selected speech
recognition engine.
actions:
type: array
items:
type: object
required:
- name
properties:
name:
type: string
description: >-
Function identifier returned by GET
/api/v2/agent/functions.
instructions:
type: string
description: When and how the agent should use this function.
description: Functions enabled for this agent.
reportingFields:
type: array
items:
type: object
required:
- key
- label
- instructions
- values
properties:
key:
type: string
description: Stable field key used in conversation results.
label:
type: string
description: Human-readable field name.
instructions:
type: string
description: How the agent should determine the field value.
values:
type: object
required:
- kind
additionalProperties: false
properties:
kind:
type: string
enum:
- boolean
- choices
- number
- text
description: Value type the agent must return for this field.
choices:
type: array
minItems: 1
uniqueItems: true
items:
type: string
minLength: 1
description: >-
Allowed values when kind is choices; omit for other
kinds.
description: Agent-level structured fields collected after a conversation.
apps:
type: array
items:
type: object
required:
- appId
- version
- instructions
properties:
appId:
type: string
description: App identifier returned by GET /api/v2/apps.
version:
type: string
description: Installed app version.
instructions:
type: string
description: When and how the agent should use the app.
enabled:
type: boolean
default: true
description: Whether this app assignment is enabled for the agent.
description: Installed apps assigned to this agent.
skills:
type: array
items:
type: object
required:
- slug
- instructions
properties:
slug:
type: string
description: Computer Agent skill identifier.
instructions:
type: string
description: Agent-specific instructions for using the skill.
description: Computer Agent skills assigned at publish time.
computerDelegateAccountId:
type: integer
nullable: true
description: >-
Account ID of the Computer Agent that performs delegated
Computer work.
heartbeatInstructions:
type: string
description: >-
Work the Computer Agent should perform during scheduled
check-ins.
heartbeatEvery:
type: string
description: Heartbeat interval such as 15m, 1h, or 1h30m.
heartbeatConfig:
type: object
description: >-
Advanced Computer Agent heartbeat settings. This object replaces
the previous advanced settings when supplied, so preserve fields
you do not intend to remove.
additionalProperties: false
properties:
activeHours:
type: object
required:
- start
- end
additionalProperties: false
description: Daily window in which scheduled heartbeat work may start.
properties:
start:
type: string
pattern: ^([01]\d|2[0-3]):[0-5]\d$
description: Window start in 24-hour HH:MM format.
example: '08:00'
end:
type: string
pattern: ^(?:([01]\d|2[0-3]):[0-5]\d|24:00)$
description: Window end in 24-hour HH:MM format; 24:00 is allowed.
example: '18:00'
timezone:
type: string
description: >-
IANA timezone, user, or local. Omit to use the Computer
Agent default.
example: America/Chicago
model:
type: string
minLength: 1
description: >-
Model label attached to heartbeat work. This does not
replace the Agent configuration's agentModel.
session:
type: string
minLength: 1
description: Session identifier used for heartbeat work.
target:
type: string
minLength: 1
description: >-
Delivery target type or channel selected for heartbeat
results.
to:
type: string
minLength: 1
description: Destination within the selected heartbeat target.
accountId:
type: string
minLength: 1
description: >-
Channel account identifier used for heartbeat delivery when
a channel has multiple accounts.
directPolicy:
type: string
enum:
- allow
- block
description: >-
Whether heartbeat results may be delivered to direct-message
destinations.
includeReasoning:
type: boolean
description: Include model reasoning in heartbeat output when supported.
includeSystemPromptSection:
type: boolean
description: >-
Include the Computer Agent system-prompt section in
heartbeat context.
ackMaxChars:
type: integer
description: >-
Maximum length treated as a simple heartbeat acknowledgement
rather than a result that should be delivered.
minimum: 0
suppressToolErrorWarnings:
type: boolean
description: >-
Suppress automatic raw tool-error notices while still
allowing the agent to report an unrecovered problem
intentionally.
timeoutSeconds:
type: integer
description: Maximum heartbeat execution time in seconds.
minimum: 1
lightContext:
type: boolean
description: Use a smaller context for heartbeat work.
isolatedSession:
type: boolean
description: >-
Run heartbeat work in a separate session from the agent's
main conversation.
skipWhenBusy:
type: boolean
description: Skip a scheduled heartbeat while the agent is already busy.
backgroundAudio:
oneOf:
- type: string
format: uri
- type: object
required:
- url
properties:
url:
type: string
format: uri
loop:
type: boolean
default: true
gain:
type: integer
default: 0
startAfterGreeting:
type: boolean
default: true
track:
type: string
enum:
- bg
- fx
description: Optional HTTP(S) audio played during calls.
waitOnAnswer:
type: integer
description: Milliseconds to wait before speaking the greeting.
minimum: 0
waitToGreet:
type: boolean
description: Wait for the caller to speak before delivering the greeting.
postAnswerDtmf:
type: string
description: DTMF digits sent immediately after an outbound call is answered.
interruptionWordCount:
type: integer
description: Words required before caller speech interrupts the agent.
minimum: 0
interruptionMinimumSpeakingTime:
type: number
description: Seconds the agent must speak before interruption is allowed.
minimum: 0
speakingTimeout:
type: integer
description: Milliseconds of silence used to detect the end of caller speech.
minimum: 0
speechProcessingDelay:
type: integer
description: >-
Milliseconds to wait before sending recognized speech to the
model.
minimum: 0
speechProcessingDelayInterruptionStep:
type: integer
description: >-
Milliseconds added to speech processing delay after an
interruption.
minimum: 0
speechProcessingDelayMaxMultiplier:
type: integer
description: >-
Maximum interruption multiplier applied to speech processing
delay.
minimum: 0
callerResponseTimeout:
type: number
description: Seconds of caller silence before the agent checks in.
minimum: 0
callerResponseTimeoutHangupCounter:
type: integer
description: Unanswered check-ins before the agent ends the call.
minimum: 0
ignoreSpeech:
type: array
items:
type: string
description: Caller phrases that should not be treated as a response.
noContactInjection:
type: boolean
description: Exclude the caller contact record from agent context.
noConvoHistory:
type: boolean
description: Exclude prior conversation summaries from agent context.
autoRecordingNotification:
type: string
enum:
- 'true'
- 'false'
- always
description: >-
Recording notice policy: jurisdiction-based, never, or every
call.
recordingNotificationPhrase:
type: string
description: Phrase spoken when a recording notice is required.
preAnswerRingTime:
type: integer
description: Seconds to ring before answering an inbound call.
minimum: 0
maximum: 60
nullable: true
preAnswerSkipProcessingResults:
type: boolean
description: >-
Place raw Pre Answer results directly into context without an
additional model pass.
useAgentNumberForTransfers:
type: boolean
description: Use the agent phone number as caller ID for transfers.
confirmTransfers:
type: boolean
description: Require the recipient to confirm before completing a transfer.
monitorTransfers:
type: boolean
description: Continue monitoring the call after a transfer.
attendedTransfers:
type: boolean
description: Keep the agent with the caller while the recipient is reached.
attendedTransferBridgeTrigger:
type: string
nullable: true
description: Recipient response required to bridge an attended transfer.
attendedTransferCheckInTimeout:
type: integer
description: Seconds before the agent checks in during an attended transfer.
minimum: 0
transferConfirmTimeout:
type: integer
description: Seconds to wait for transfer confirmation.
minimum: 0
announceTransferConnecting:
type: boolean
description: Announce that a transfer is being connected.
announceTransferConnected:
type: boolean
description: Announce when a transfer has connected.
preTransferNotificationStart:
type: string
description: Message spoken when Pre Transfer work begins.
preTransferNotificationEnd:
type: string
description: Message spoken when Pre Transfer work completes.
enableRingback:
type: boolean
description: Play ringback while the agent is connecting an outbound call.
enableTransferRingback:
type: boolean
description: Play ringback while a transfer is connecting.
cnamAutoRejectRegex:
type: string
nullable: true
description: >-
Pattern used to reject matching inbound caller names before
answer.
cnamAutoRejectCode:
type: integer
description: SIP response code used when the reject pattern matches.
cnamAutoTransferRegex:
type: string
nullable: true
description: >-
Pattern used to transfer matching inbound caller names before
answer.
cnamAutoTransferDestination:
type: string
nullable: true
description: >-
Phone number, extension, or PBX destination used by automatic
transfer.
- type: object
properties:
id:
type: string
readOnly: true
description: This configuration record's agentConfigId.
actions:
type: array
items:
allOf:
- type: object
required:
- name
properties:
name:
type: string
description: >-
Function identifier returned by GET
/api/v2/agent/functions.
instructions:
type: string
description: When and how the agent should use this function.
- type: object
properties:
placeholder:
type: string
readOnly: true
description: Configuration guidance for this function.
allowed:
type: boolean
readOnly: true
description: >-
Whether the selected account can currently use the
function.
reason:
type: string
nullable: true
readOnly: true
description: Why the function is unavailable.
missingRequirement:
type: string
nullable: true
readOnly: true
description: >-
Account setup required before the function can be
used.
activeEventRules:
type: array
items:
type: string
readOnly: true
description: Slots that currently reference this configuration.
effectiveReportingFields:
type: array
items:
allOf:
- type: object
required:
- key
- label
- instructions
- values
properties:
key:
type: string
description: Stable field key used in conversation results.
label:
type: string
description: Human-readable field name.
instructions:
type: string
description: How the agent should determine the field value.
values:
type: object
required:
- kind
additionalProperties: false
properties:
kind:
type: string
enum:
- boolean
- choices
- number
- text
description: Value type the agent must return for this field.
choices:
type: array
minItems: 1
uniqueItems: true
items:
type: string
minLength: 1
description: >-
Allowed values when kind is choices; omit for
other kinds.
- type: object
required:
- source
properties:
source:
type: string
enum:
- reseller
- organization
- campaign
readOnly: true
readOnly: true
description: >-
Final reporting fields after reseller, organization, and
agent-level overrides.
securitySchemes:
apiKeyAuth:
type: apiKey
in: query
name: token
description: GetVoiceBot API Token

````