Agentic - Agents

Update agent configuration

Update any aspect of an AI agent's configuration including behavior, settings, and integrations. All fields are optional - only provide fields you want to change.

What You Can Update:

  • name: Agent display name
  • systemPrompt: Core behavior instructions
  • language: Supported languages
  • agentPhoneSettings: Voice, model, transcription, VoIP connections, transfer settings
  • agentEmailSettings: Email handling configuration
  • knowledgeFileIds: Connect/disconnect knowledge bases
  • workflowsIds: Connect/disconnect workflow automations
  • appointmentSettings: Calendar sync and booking configuration
  • dynamicVariables: Custom variables for personalization
  • nodes / connections: Flow configuration (node-based agents only)
  • integrations: External system connections (CRM, calendar, etc.)

Common Update Scenarios:

  • Refine agent behavior by updating system prompt
  • Connect agent to VoIP phone via agentPhoneSettings.voipConnectionIds
  • Add knowledge bases for better responses
  • Change voice or language settings
  • Enable/disable appointment booking
  • Configure post-call analysis and notifications
  • Update transfer settings and hold music

Response: Returns the complete updated agent configuration with all settings.

put/api/v1/agentic/agents/:id

Request

  • Base URL: https://api.voicelogica.ai
  • URL: https://api.voicelogica.ai/api/v1/agentic/agents/:id
  • Auth: API key in header x-api-key

Headers

x-api-keystring required

Your API key for authentication. Required for all endpoints.

x-company-idstring

Optional company ID for resellers. When provided, the API request will operate on behalf of the specified subsidiary company. The API key must have access to the specified company.

Request body

namestring required

The name of the agent

agentType'prompt-based' | 'analysis-agent' | 'ai-assistant' | 'node-based'

The type of agent architecture that determines its capabilities and behavior. prompt-based: Standard conversational agent that can answer calls, transfer calls, handle emails, book appointments, and execute workflows. Best for general-purpose use cases. analysis-agent: Specialized agent for call analysis only. Used to analyze calls after they have been transferred to humans. Monitors and extracts insights from ongoing calls. See: https://docs.voicelogica.ai/transfer-calls/introduction ai-assistant: Personal AI assistant/voicemail. Designed ONLY for individual use as your own AI voicemail or personal assistant. Handles calls when you are unavailable. node-based: Advanced agent with visual flow builder. Supports complex branching logic, conditional routing, and multi-step reasoning. Best for sophisticated conversational workflows.

systemPromptstring

The system prompt that defines the agent's behavior

navigateToNodeToolboolean

Whether the agent can navigate to a specific node tool based on instructions

syncWithContactsboolean

Whether the agent is synced with Contacts

language'ar-AE' | 'ar-BH' | 'ar-EG' | 'ar-KW' | 'ar-OM' | 'ar-QA' | 'ar-SA' | 'ar-LB' | 'ar-MA' | 'el-GR' | 'en-US' | 'es-ES' | 'fr-FR' | 'el-CY' | 'en-DK' | 'he-IL' | 'bg-BG' | 'ru-RU' | 'de-DE' | 'it-IT' | 'pt-PT' | 'ru-RU' | 'tr-TR' | 'zh-CN' | 'ja-JP' | 'ko-KR' | 'ja-JP' | 'ar-SA' | 'hi-IN' | 'bn-BD' | 'pa-IN' | 'ta-IN' | 'te-IN' | 'ur-IN' | 'vi-VN' | 'th-TH' | 'id-ID' | 'ms-MY' | 'fil-PH' | 'nl-NL' | 'sv-SE' | 'no-NO' | 'da-DK' | 'fi-FI' | 'is-IS' | 'gl-ES' | 'ca-ES' | 'eu-ES' | 'pt-BR' | 'zh-TW' | 'zh-HK' | 'zh-MO' | 'zh-SG' | 'zh-CH' | 'zh-CHT' | 'zh-CHS' | 'zh-CHT' | 'ro-RO' | 'hu-HU' | 'pl-PL' | 'sr-RS' | 'mk-MK' | 'bg-BG' | 'uk-UA' | 'en-GB' | 'en-AU' | 'en-CA' | 'en-NZ' | 'en-ZA' | 'en-IN' | 'en-IE' | 'en-PH' | 'en-SG' | 'en-HK' | 'en-MO' | 'en-CN' | 'en-TW' | 'en-MY' | 'nl-BE' | 'de-AT' | 'de-CH' | 'sv-SE' | 'no-NO' | 'da-DK' | 'fi-FI' | 'is-IS' | 'gl-ES' | 'ca-ES' | 'eu-ES' | 'pt-BR' | 'zh-TW' | 'zh-HK' | 'cs-CZ' | 'sk-SK' | 'sl-SI' | 'hr-HR' | 'lt-LT' | 'lv-LV' | 'et-EE' | 'mt-MT' | 'lb-LU' | 'sq-AL' | 'bs-BA' | 'ca-AD' | 'fr-MC' | 'it-SM' | 'it-VA' | 'ur-PK'

Locale code

knowledgeFileIdsstring[]

Array of knowledge file IDs that the agent can reference

playWaitMusicOnDuringCallToolsboolean

When true (default), play keyboard wait music while mid-call tools run (SMS, email, CRM/ERP lookups, during-call workflows). Instant tools like end_call are never included.

workflowsIdsstring[]

Array of workflow action IDs that the agent can execute

allowedToCopy'sameCompany' | 'public' | 'publicWithPassword' | 'private'

Defines who can copy this agent

passwordstring

Password for the agent

passwordTriesnumber

Number of password attempts allowed

externalDialnumber

External dial number for the agent

internalDialstring

Internal Voice Logica dial-plan extension. When a UserEndpoint or another internal source dials this extension, the inbound router lands the call on this agent. Unique within the agent's company. Leave empty if the agent is not reachable by internal dial.

dataRetentionDaysinteger

Days before the retention policy applies (0–180; 0 = at the next nightly run). Playable audio is kept at most 30 days. Only a super admin can set up to 365 (1 year, audio included).

dataRetentionPolicy'none' | 'only-phone-number' | 'transcript' | 'all'

What call data to keep. all: messages, summary and analysis stay; audio and transcript files are deleted after the retention period. transcript: audio is kept for the retention period, then deleted; messages, summary and analysis stay. only-phone-number: caller number only. none: the call is anonymized.

archiveRecordingForRetrievalboolean

When true, after the playable period (max 1 month) the audio is hidden and kept in Glacier Instant Retrieval until 3 months from the call, then deleted automatically. Default off.

requirePassingTestsToPublishboolean

Opt-in publish gate: putting a version live for the first time is refused unless a test suite run after its last save passed completely. Rollback is never gated. Default off.

coreProvidersOnlyboolean

Core-providers mode: auxiliary AI on this agent's calls (knowledge lookup during calls, in-call assistant, unanswered questions, analytics enrichment, image analysis) runs on the platform's core model instead of Groq (US) / Gemini. For customers that only accept the core sub-processors. Default off.

skipParametersNotUsedInPromptboolean

When true, parameters/variables not explicitly referenced in the prompt will not be appended as additional context

customerInstructionsstring

The customer instructions for the agent

Example request

{
  "name": "Customer Support Agent",
  "agentType": "prompt-based",
  "systemPrompt": "You are a helpful customer support assistant. Always be polite and provide accurate information.",
  "language": "en-US",
  "secondaryLanguages": [
    {
      "language": "es-ES",
      "type": "other_agent",
      "agentId": "agent-123e4567-e89b-12d3-a456-426614174000",
      "voiceConfig": {
        "voiceProvider": "elevenlabs",
        "voiceId": "21m00Tcm4TlvDq8ikWAM"
      },
      "enabled": true
    }
  ],
  "knowledgeFileIds": [
    "kb-123",
    "kb-456"
  ],
  "playWaitMusicOnDuringCallTools": true,
  "workflowsIds": [
    "workflow-123",
    "workflow-456"
  ],
  "allowedToCopy": "sameCompany",
  "agentEmailSettings": {
    "model": {
      "completionProvider": "openai",
      "model": "gpt-4o-mini",
      "temperature": 0.5,
      "maxCompletionTokens": 500
    },
    "systemPrompt": "You are a helpful email assistant. Always be professional and courteous.",
    "functionCallIds": [
      "fc-123",
      "fc-456"
    ],
    "mailboxIds": [
      "507f1f77bcf86cd799439011"
    ],
    "ccOptions": [
      "manager@company.com"
    ],
    "powerUps": [
      "appointment-booking"
    ],
    "displayBusinessDetails": {
      "name": true,
      "address": true,
      "website": true,
      "email": true,
      "phone": true,
      "operatingHours": true,
      "isOpenNow": true,
      "utcOffset": true,
      "wheelchairAccessibleEntrance": false
    }
  },
  "agentPhoneSettings": {
    "model": {
      "completionProvider": "openai",
      "model": "gpt-5.6-terra",
      "temperature": 0.5,
      "maxCompletionTokens": 500
    },
    "systemPrompt": "You are a helpful customer support assistant.",
    "voiceConfig": {
      "voiceProvider": "google",
      "voiceId": "en-US-Wavenet-1",
      "speed": 1,
      "backgroundSound": "none",
      "stability": 0.5,
      "similarity_boost": 0.5,
      "backgroundVolume": 0.2
    },
    "phoneFirstMessageAiGenerated": true,
    "transcriptionConfig": {
      "transcriptionProvider": "google",
      "silenceDurationMs": 1000,
      "enhanced": false
    },
    "voipConnectionIds": [
      "voip-123"
    ],
    "connectDynamically": false,
    "firstMessageSenderOnOutgoingCall": "agent",
    "saveRecording": true,
    "transferType": "warm"
  },
  "appointmentSettings": {
    "parameters": [
      {
        "name": "parameterName",
        "displayName": "Parameter Name",
        "index": 0,
        "description": "A sample parameter",
        "aiGenerated": false,
        "type": "string",
        "required": true,
        "value": "default value",
        "isConstantForContactEntity": false
      }
    ]
  },
  "passwordTries": 3,
  "externalDial": 1234567890,
  "internalDial": "4002",
  "nodes": [
    {
      "id": "1",
      "name": "Welcome Message",
      "position": {
        "x": 100,
        "y": 100
      },
      "outputs": {
        "default": [
          {
            "node": "2",
            "output": "default"
          }
        ]
      },
      "inputs": {},
      "className": "conversation-node",
      "data": {
        "nodeType": "conversation",
        "nodeTitle": "Welcome Message",
        "transitions": [
          {
            "type": "success",
            "label": "Continue to next step"
          }
        ]
      },
      "html": "<div>Welcome Message</div>",
      "typenode": false
    }
  ],
  "connections": [
    {
      "node": "2",
      "input": "default",
      "output": "default",
      "label": "Continue"
    }
  ],
  "parameters": [
    {
      "name": "parameterName",
      "displayName": "Parameter Name",
      "index": 0,
      "description": "A sample parameter",
      "aiGenerated": false,
      "type": "string",
      "required": true,
      "value": "default value",
      "isConstantForContactEntity": false
    }
  ],
  "dataRetentionDays": 30,
  "dataRetentionPolicy": "all"
}

Response

Agent updated successfully

idstring required

Unique identifier

createdAtstring date-time required

Creation timestamp

activeboolean required

Whether the entity is active

createdBystring required

Name of the user who created the entity

createdByIdstring required

ID of the user who created the entity

modifiedAtstring date-time

ISO 8601 date string

modifiedBystring

Name of the user who last modified the entity

modifiedByIdstring

ID of the user who last modified the entity

companyIdstring required

Company identifier

companyobject

Any valid JSON value

groupIdsstring[]

Linked group IDs

namestring required
agentType'prompt-based' | 'analysis-agent' | 'ai-assistant' | 'node-based'

The type of agent architecture that determines its capabilities and behavior. prompt-based: Standard conversational agent that can answer calls, transfer calls, handle emails, book appointments, and execute workflows. Best for general-purpose use cases. analysis-agent: Specialized agent for call analysis only. Used to analyze calls after they have been transferred to humans. Monitors and extracts insights from ongoing calls. See: https://docs.voicelogica.ai/transfer-calls/introduction ai-assistant: Personal AI assistant/voicemail. Designed ONLY for individual use as your own AI voicemail or personal assistant. Handles calls when you are unavailable. node-based: Advanced agent with visual flow builder. Supports complex branching logic, conditional routing, and multi-step reasoning. Best for sophisticated conversational workflows.

systemPromptstring
language'ar-AE' | 'ar-BH' | 'ar-EG' | 'ar-KW' | 'ar-OM' | 'ar-QA' | 'ar-SA' | 'ar-LB' | 'ar-MA' | 'el-GR' | 'en-US' | 'es-ES' | 'fr-FR' | 'el-CY' | 'en-DK' | 'he-IL' | 'bg-BG' | 'ru-RU' | 'de-DE' | 'it-IT' | 'pt-PT' | 'ru-RU' | 'tr-TR' | 'zh-CN' | 'ja-JP' | 'ko-KR' | 'ja-JP' | 'ar-SA' | 'hi-IN' | 'bn-BD' | 'pa-IN' | 'ta-IN' | 'te-IN' | 'ur-IN' | 'vi-VN' | 'th-TH' | 'id-ID' | 'ms-MY' | 'fil-PH' | 'nl-NL' | 'sv-SE' | 'no-NO' | 'da-DK' | 'fi-FI' | 'is-IS' | 'gl-ES' | 'ca-ES' | 'eu-ES' | 'pt-BR' | 'zh-TW' | 'zh-HK' | 'zh-MO' | 'zh-SG' | 'zh-CH' | 'zh-CHT' | 'zh-CHS' | 'zh-CHT' | 'ro-RO' | 'hu-HU' | 'pl-PL' | 'sr-RS' | 'mk-MK' | 'bg-BG' | 'uk-UA' | 'en-GB' | 'en-AU' | 'en-CA' | 'en-NZ' | 'en-ZA' | 'en-IN' | 'en-IE' | 'en-PH' | 'en-SG' | 'en-HK' | 'en-MO' | 'en-CN' | 'en-TW' | 'en-MY' | 'nl-BE' | 'de-AT' | 'de-CH' | 'sv-SE' | 'no-NO' | 'da-DK' | 'fi-FI' | 'is-IS' | 'gl-ES' | 'ca-ES' | 'eu-ES' | 'pt-BR' | 'zh-TW' | 'zh-HK' | 'cs-CZ' | 'sk-SK' | 'sl-SI' | 'hr-HR' | 'lt-LT' | 'lv-LV' | 'et-EE' | 'mt-MT' | 'lb-LU' | 'sq-AL' | 'bs-BA' | 'ca-AD' | 'fr-MC' | 'it-SM' | 'it-VA' | 'ur-PK'

Locale code

knowledgeFileIdsstring[]
workflowsIdsstring[]
allowedToCopy'sameCompany' | 'public' | 'publicWithPassword' | 'private'
navigateToNodeToolboolean

Whether the agent can navigate to a specific node tool based on instructions

syncWithContactsboolean
playWaitMusicOnDuringCallToolsboolean
passwordstring
passwordTriesnumber
externalDialnumber
internalDialstring
dataRetentionDaysnumber
dataRetentionPolicy'none' | 'only-phone-number' | 'transcript' | 'all'
archiveRecordingForRetrievalboolean
requirePassingTestsToPublishboolean
coreProvidersOnlyboolean
skipParametersNotUsedInPromptboolean

When true, parameters/variables not explicitly referenced in the prompt will not be appended as additional context

customerInstructionsstring

Example response

{
  "id": "507f1f77bcf86cd799439011",
  "createdAt": "2024-01-15T10:30:00.000Z",
  "active": true,
  "createdBy": "John Doe",
  "createdById": "123",
  "modifiedAt": "2024-01-15T10:30:00.000Z",
  "modifiedBy": "Jane Doe",
  "modifiedById": "456",
  "companyId": "507f1f77bcf86cd799439012",
  "name": "Customer Support Agent",
  "agentType": "prompt-based",
  "systemPrompt": "You are a helpful customer support assistant. Always be polite and provide accurate information.",
  "dynamicVariables": [
    {
      "name": "company_name",
      "value": "{{company_name}}"
    }
  ],
  "language": "en-US",
  "secondaryLanguages": [
    {
      "language": "es-ES",
      "type": "other_agent",
      "agentId": "agent-123e4567-e89b-12d3-a456-426614174000",
      "enabled": true,
      "defaultContries": [
        "Greece",
        "United States"
      ]
    },
    {
      "language": "fr-FR",
      "type": "other_voice",
      "voiceConfig": {
        "voiceProvider": "elevenlabs",
        "voiceId": "21m00Tcm4TlvDq8ikWAM"
      },
      "enabled": true,
      "defaultContries": [
        "Greece",
        "United States"
      ]
    }
  ],
  "knowledgeFileIds": [
    "kb-123",
    "kb-456"
  ],
  "workflowsIds": [
    "workflow-123",
    "workflow-456"
  ],
  "tools": [
    {
      "enabled": true,
      "name": "send_sms",
      "prompt": "Send an SMS to the user",
      "type": "system"
    }
  ],
  "allowedToCopy": "sameCompany",
  "passwordTries": 3,
  "externalDial": 1234567890,
  "internalDial": "4002",
  "knowledgeFiles": [
    {
      "id": "kb-123",
      "name": "Product Manual",
      "description": "Complete product documentation"
    }
  ],
  "workflows": [
    {
      "id": "workflow-123",
      "name": "Send Email Notification",
      "description": "Automated email notification workflow",
      "triggers": [
        {
          "nodeType": "onCallStart",
          "nodeTitle": "Call Start Trigger",
          "triggerConfig": {
            "enabled": true,
            "triggerType": "onCallStart",
            "description": "Trigger when a new call starts"
          }
        }
      ],
      "nodes": [],
      "files": [],
      "parameters": [
        {
          "name": "company_name",
          "value": "{{company_name}}",
          "type": "string",
          "required": true,
          "aiGenerated": true
        }
      ],
      "dataRetentionDays": 30,
      "dataRetentionPolicy": "all"
    }
  ]
}

Changes

No recorded changes to this operation across all 2 revisions of this API.