Для AI-агентов: markdown этой страницы — /docs-content/entities/users/photo-delete.md индекс документации — /llms.txt
Удалить фотографию сотрудника
DELETE /v1/users/:id/personal-photo
Снимает фотографию профиля сотрудника. Это единственная команда, которая её удаляет: запись поля personalPhoto на обновлении фотографию не снимает ни на одной поверхности. Операция необратима — Битрикс24 удаляет сам файл, поэтому повторная загрузка того же изображения даст новый идентификатор и новый URL. Требует прав администратора портала либо владения этим профилем — решение принимает Битрикс24.
Параметры
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
id (path) |
number | да | ID сотрудника. Список: GET /v1/users |
Тела у запроса нет.
Примеры
curl — личный ключ
curl -X DELETE "https://vibecode.bitrix24.tech/v1/users/1331/personal-photo" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth-приложение
curl -X DELETE "https://vibecode.bitrix24.tech/v1/users/1331/personal-photo" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/users/1331/personal-photo', {
method: 'DELETE',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { success, data } = await res.json()
if (success && data.removed) {
console.log(`Фотография сотрудника ${data.id} удалена`)
}
JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/users/1331/personal-photo', {
method: 'DELETE',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data } = await res.json()
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | Всегда true при успешном удалении |
data.id |
number | ID сотрудника, у которого снята фотография |
data.personalPhoto |
null | Всегда null — состояние поля после вызова |
data.removed |
boolean | Всегда true — явный маркер семантики операции |
data.user |
object | Полная запись сотрудника после удаления. Поле отсутствует, если повторное чтение записи не сработало — фотография при этом удалена |
Пример ответа
{
"success": true,
"data": {
"id": 1331,
"personalPhoto": null,
"removed": true,
"user": {
"id": 1331,
"name": "Иван",
"lastName": "Петров",
"email": "ivan.petrov@example.com",
"active": true,
"workPosition": "Менеджер",
"departmentId": [1]
}
}
}
Пример ответа при ошибке
403 — Битрикс24 отказал в записи, фотография осталась на месте:
{
"success": false,
"error": {
"code": "UPDATE_FAILED",
"message": "Bitrix24 rejected user.update for the photo removal (result: false)",
"hint": "Bitrix24 returns false when the calling user lacks portal admin rights (a user may still edit their OWN profile), or when the target user id does not exist. The photo is unchanged."
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | INVALID_ID |
:id не является положительным целым числом |
| 401 | MISSING_API_KEY |
Не передан заголовок X-Api-Key |
| 401 | TOKEN_MISSING |
API-ключ не имеет настроенных токенов |
| 403 | SCOPE_DENIED |
API-ключ не имеет скоупа user |
| 403 | WRITE_BLOCKED_READONLY_KEY |
Ключ выдан в режиме только для чтения |
| 403 | UPDATE_FAILED |
Битрикс24 вернул result: false. Так отвечает вызов по чужому профилю без прав администратора портала, а также вызов по несуществующему :id. Фотография не изменилась |
| 429 | RATE_LIMITED |
Превышена частота запросов на стороне Битрикс24 |
| 429 | OPERATION_TIME_LIMIT |
Битрикс24 приостановил этот метод для вашего ключа: исчерпан бюджет рабочего времени метода. Срок повтора приходит полем error.retryAfter и заголовком Retry-After |
| 429 | QUEUE_OVERFLOW, QUEUE_TIMEOUT |
Очередь запросов портала переполнена или запрос не дождался очереди. Заголовок Retry-After подсказывает задержку |
Полный список общих ошибок API — Ошибки.
Известные особенности
Идемпотентность. У сотрудника без фотографии вызов тоже отвечает 200 с removed: true. Проверять
наличие фотографии перед очисткой не нужно.
Запись поля фотографию не снимает. До этой команды пустая строка в personalPhoto доезжала до
Битрикс24 как приказ снять фотографию, и обновление отвечало успехом уже после удаления. Теперь
поведение поля на обновлении такое:
| Поверхность обновления | значение, из которого не собрать файл | personalPhoto: null |
|---|---|---|
PATCH /v1/users/:id |
400 INVALID_PARAMS до вызова Битрикс24 |
принимается, до ветки удаления не доходит, фотография остаётся |
POST /v1/users/batch (action: update) |
отклоняется с 400 BATCH_ITEM_VALIDATION, весь пакет не отправлен |
принимается, ключ не доезжает до Битрикс24, фотография остаётся |
POST /v1/batch (action: update) |
отклоняется с INVALID_PARAMS в data.errors этого подвызова |
отклоняется с INVALID_PARAMS в data.errors этого подвызова |
Различие по null не случайность: причина в том, как каждая поверхность кодирует запрос. Одиночный PATCH отправляет тело JSON, где null
остаётся null и Битрикс24 его пропускает. Подзапрос пакета по одной сущности едет строкой запроса, и
кодировщик выбрасывает ключ с null целиком. Кодировщик общего пакета вместо этого пишет
PERSONAL_PHOTO=, то есть пустую строку — ту же команду снять фотографию, поэтому там null
отклоняется. Значение поля не удаляет фотографию ни на одной из трёх поверхностей — удаляет только эта
команда.
Пакетные вызовы её не умеют. Подвызов пакета адресуется парой «сущность плюс действие»
(list, get, create, update, delete, fields, search), и вложенного ресурса в этой форме не
выразить. Снимайте фотографию одиночным вызовом.
Замена вместо удаления. Чтобы поставить другую фотографию, удаление не нужно: отправьте пару
[имя файла, base64] в personalPhoto на POST /v1/users или
PATCH /v1/users/:id.