---
title: "Update agent metadata"
method: PATCH
path: "/agent/{id}"
tags: ["Agents"]
---

# Update agent metadata

`PATCH /agent/{id}`

Update agent fields. Behavior depends on whether the agent has versioning enabled:

**Versioned agents** (have an active published version): only metadata fields are accepted —
`name`, `description`, `avatarUrl`, `telephonyProductId`, `allowInboundCall`, `visibleToEveryone`.
Submitting any config-level field returns 400 with
`"Agent has versioning enabled. Config changes must be made through drafts."`.
Use `PATCH /agent/{id}/drafts/{draftId}/config` instead.

**Non-versioned agents** (no active version): all configuration fields are accepted,
the same full set as `POST /agent`.

**400 is also returned when:**
- The agent is locked (`"Agent is locked, please unlock it to update"`)
- Cross-field constraint violated (e.g. `north_indic` language requires `transcriberType: pulse`)

**403** is returned when selecting a gated model (`gpt-5.2`, `electron-kogta`, `electron-kogta-v2`)
without org-level access.

## Path parameters

- `id` string, required

## Request body

- UpdateAgentRequest — Agent update payload. Behavior depends on whether the agent has versioning enabled: **Versioned agents**: only the metadata fields below are accepted. Config-level fields (language, synthesizer, slmModel, etc.) return 400. **Non-versioned agents**: all configuration fields are accepted — the same full set as `POST /agent` (see `CreateAgentRequest`).
  - `name` string — Name of the agent.
  - `description` string — Description of the agent.
  - `avatarUrl` string — URL of the agent's avatar image.
  - `telephonyProductId` string[] — IDs of telephony products (phone numbers) to associate with the agent.
  - `allowInboundCall` boolean — Whether the agent accepts inbound calls.
  - `visibleToEveryone` boolean — Whether the agent is visible to all members of the organization.

## Response `200`

Agent updated successfully

- object
  - `status` boolean
  - `data` string — The ID of the updated agent

## Other responses

- `400` — Invalid input
- `401` — Unauthorized access
- `403` — Forbidden access
- `404` — Agent not found
- `500` — Internal server error

## Changes

- **2026-05-26** `7131fe74f3cb` — 1 breaking, 1 warning, 5 info
  - the `telephonyProductId` request property type/format changed from `string`/`` to `array`/``
  - removed the optional property `data` from the response with the `401` status
  - added the new optional request property `avatarUrl`
  - added the new optional request property `visibleToEveryone`
  - …3 more
- **2026-04-20** `801f1d220d57` — 6 warning, 1 info
  - removed the request property `defaultVariables`
  - removed the request property `globalKnowledgeBaseId`
  - removed the request property `globalPrompt`
  - removed the request property `language`
  - …3 more
- **2026-01-28** `8e52b2362d0a` — 1 breaking
  - removed the enum value `kn` of the request property `language/enabled`

[Change history](https://skmtc.dev/smallest-inc/apis/agent-management-api/changes/agent/:id/patch.md)

---

[API](https://skmtc.dev/smallest-inc/apis/agent-management-api.md) · [All operations](https://skmtc.dev/smallest-inc/apis/agent-management-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/smallest-inc/agent-management-api/revisions/0eac753eb5dd/schema)
