For AI agents: markdown of this page — /docs-content-en/infra/servers/update.md documentation index — /llms.txt

Update the server name and description

PATCH /v1/infra/servers/:id

Changes the server's display name and its description — two text fields visible in your Vibecode account and on the application card in the Bitrix24 catalog. The technical server identifier is set at creation and is not changed by this endpoint.

Parameters

Parameter In Type Required Description
id path string (UUID) yes Server ID from POST /v1/infra/servers or GET /v1/infra/servers

Request fields (body)

Field Type Required Description
displayName string yes Display name in any language or script, emoji included. 2–100 characters, no control bytes, trimmed at both ends. Send it in every call, including when you change only the description
description string | null no Application description for the Bitrix24 catalog card, up to 500 characters. Line breaks and tabs are allowed, other control bytes are not. The value is trimmed at both ends, so a string of spaces clears the description. An empty string and null also clear the description. If the field is omitted, the previous description is kept

The body accepts no other fields — for example, sending the technical identifier name in the body returns 400.

Examples

curl — personal key

Terminal
curl -X PATCH https://vibecode.bitrix24.com/v1/infra/servers/6b23309f-7d0b-4cc3-a8f0-24183d48770e \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "displayName": "Deal assistant",
    "description": "A bot for CRM. Answers questions about deals."
  }'

curl — OAuth application

Terminal
curl -X PATCH https://vibecode.bitrix24.com/v1/infra/servers/SERVER_ID \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "displayName": "Deal assistant",
    "description": "A bot for CRM. Answers questions about deals."
  }'

JavaScript — personal key

javascript
const res = await fetch(
  `https://vibecode.bitrix24.com/v1/infra/servers/${serverId}`,
  {
    method: 'PATCH',
    headers: {
      'X-Api-Key': 'YOUR_API_KEY',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      displayName: 'Deal assistant',
      description: 'A bot for CRM. Answers questions about deals.',
    }),
  }
)
const { data } = await res.json()
console.log(data.displayName, data.description)

JavaScript — OAuth application

javascript
const res = await fetch(
  `https://vibecode.bitrix24.com/v1/infra/servers/${serverId}`,
  {
    method: 'PATCH',
    headers: {
      'X-Api-Key': 'YOUR_APP_KEY',
      'Authorization': 'Bearer USER_SESSION_TOKEN',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      displayName: 'Deal assistant',
      description: 'A bot for CRM. Answers questions about deals.',
    }),
  }
)

Response fields

Field Type Description
success boolean Always true on success
data.id string (UUID) Server ID
data.name string Technical server identifier. The value is immutable and is returned for verification
data.displayName string Display name after the update
data.description string | null Description after the update. The key is returned only if the description field was present in the request. A call without it neither touches the description nor shows it in the response. Full server state — GET /v1/infra/servers/:id
warnings array<string> Returned only when there is something to report. The single reason today is a value that lost its non-ASCII characters on the way in (see "Known specifics"). The write still happens and the response stays 200

Response example

JSON
{
  "success": true,
  "data": {
    "id": "6b23309f-7d0b-4cc3-a8f0-24183d48770e",
    "name": "my-crm-app",
    "displayName": "Deal assistant",
    "description": "A bot for CRM. Answers questions about deals."
  }
}

A call without the description field — the previous description is kept, the key is absent from the response:

JSON
{
  "success": true,
  "data": {
    "id": "6b23309f-7d0b-4cc3-a8f0-24183d48770e",
    "name": "my-crm-app",
    "displayName": "Deal assistant"
  }
}

Error response example

404 — a server with this ID does not exist or belongs to another API key while you are not on its development team:

JSON
{
  "success": false,
  "error": {
    "code": "SERVER_NOT_FOUND",
    "message": "Server not found"
  }
}

Errors

HTTP Code Description
400 INVALID_BODY Body validation failed: displayName was not sent, the name is shorter than 2 or longer than 100 characters, the description is longer than 500 characters, the body contains an unknown field. message carries the text of the first check that fired, and it does not always name the field
401 MISSING_API_KEY The X-Api-Key header was not sent
401 INVALID_API_KEY Invalid or expired API key
403 INFRA_FORBIDDEN_FOR_COWORK_KEY The call was made with a Cowork/Code key — such a key works with data only and cannot perform write operations. To issue a key that can, see Project key for deploy
403 SERVER_ROLE_FORBIDDEN You are on this server's development team with the Developer role, and this operation is open to the Administrator role. error.hint carries your role, the required threshold and the list of calls that are open to you. Role breakdown — List servers
404 SERVER_NOT_FOUND Server not found or belongs to another API key while you are not on its development team. GET and DELETE on the same resource use a different code — NOT_FOUND
404 NOT_FOUND The server belongs to a Bitrix24 portal that the platform marked as deleted. Operations on such servers are not available
429 RATE_LIMITED The platform's overall request limit was exceeded

The full list of common API errors — Errors.

Known specifics

  • The update propagates to the application card in the Bitrix24 catalog. The display name is sent as the card title, the description as its description. A background process performs the synchronization, so the value appears in the catalog some time after the response. The card is updated only for an application that is already published in the catalog.
  • The application in your account shows the same two values. When the server is linked to an application, the account takes the name and the description from the server, so the update is visible there as soon as the response arrives. The reverse holds too: a name changed on the application in your account changes the server's displayName — it is one value with two ways to edit it, and the last edit wins.
  • A call that changed nothing has no effect. If the sent values match the current ones, the platform writes nothing to the database, records no audit log entry, and schedules no catalog synchronization. The response is the usual 200 — it cannot tell you whether the record changed.
  • Non-ASCII characters in displayName and description from Windows PowerShell. Sent without explicit UTF-8 serialization, they are stored as question marks (?): the bytes are lost on the client side, before the request is sent. A ready-to-run call with UTF8.GetBytesWindows / PowerShell and UTF-8. The platform accepts such a value and stores it as is, but it reports the loss: the response carries warnings listing the affected fields. The warning is emitted only for a field this call actually changed — re-sending the same value stays silent.
  • An application key is not accepted here. GET /v1/infra/servers/:id also returns the server for the personal key of the application the server is bound to. The update does not work that way: it requires exactly the key that manages the server, otherwise the response is 404. How to change the managing key — Server access recovery.

See also