Для AI-агентов: markdown этой страницы — /docs-content/infra/app-icon.md индекс документации — /llms.txt
Иконка приложения
Иконка приложения показывается в каталоге приложений Битрикс24 и как фавикон во вкладке браузера. Платформа иконку не генерирует — вы загружаете свою через Deploy API. Эта страница — единый источник по формату и порядку загрузки, промпт «Иконка приложения» в кабинете ссылается сюда.
Скоуп: vibe:infra · Базовый URL: https://vibecode.bitrix24.tech/v1 · Авторизация: заголовок X-Api-Key
Формат
- SVG (
image/svg+xml) — до 256 КБ, холст до 4096×4096 после растеризации: платформа приводит SVG к PNG, и слишком большой холст отклоняется кодомICON_TOO_MANY_PIXELSдаже у файла в пару сотен байт. Без скриптов, обработчиков событий и внешних ссылок: никаких<script>,on*-атрибутов,<foreignObject>, ссылок на внешние ресурсы. Иконка проходит очистку при загрузке, небезопасное содержимое — причина отказа. - Растровые форматы — PNG, JPG, GIF, WEBP, до 5 МБ и до 4 мегапикселей (например, 2000×2000). Формат определяется по содержимому файла, а не по имени и не по
Content-Type. У SVG есть исключение: содержимое тоже читается, но вместе с ним нужен согласованный признак типа —Content-Type, начинающийся сimage/svg, либо имя файла с расширением.svg, иначе загрузка отклоняется кодомICON_NOT_SVG. - Что бы вы ни загрузили, отдаётся PNG 256×256. По URL отдачи иконка всегда возвращается как PNG (
Content-Type: image/png): платформа масштабирует изображение в квадрат 256×256 с сохранением пропорций и прозрачными полями. Если файл не удаётся прочитать, загрузка отклоняется с ошибкойICON_RASTERIZE_FAILED, слишком большой по весу —ICON_TOO_LARGE, слишком большой по числу точек —ICON_TOO_MANY_PIXELS, неизвестный формат —ICON_UNSUPPORTED_FORMAT.
Загрузка иконки — обязательный шаг (без исходников)
Подготовьте изображение и загрузите его на сервер:
POST /v1/infra/servers/:id/icon
Content-Type: multipart/form-data — поле file
Это единственный обязательный шаг, и он не требует исходников приложения: иконка сразу появляется в каталоге приложений Битрикс24 и доступна по стабильному анонимному URL отдачи …/api/server-icons/:id. Перезаливка/перегенерация позже — повторный тот же POST.
Фавикон во вкладке — одна строка в HTML
Чтобы иконка стала ещё и фавиконом во вкладке браузера, добавьте в HTML приложения одну строку:
<link rel="icon" href="/_gw/icon">
/_gw/icon — платформенный путь на том же домене приложения (его обслуживает платформа, а не ваше приложение), который всегда отдаёт текущую загруженную иконку. Строка не содержит id сервера и одинакова для всех приложений — её можно вписать при сборке в один заход (в том числе при создании приложения одним запросом).
Свой статический файл иконки (/icon.svg и подобные) в приложение класть не нужно — статический файл нельзя поменять через интерфейс платформы Вайбкод. /_gw/icon же обновляется сам: перезалили иконку через POST …/icon — фавикон обновится в течение ~5 минут, пересобирать приложение не надо.
Смена иконки — без пересборки
Иконка каталога и фавикон во вкладке — одно и то же изображение, и обе управляются одной загрузкой:
- Загрузите новый файл тем же
POST …/icon— обновятся и карточка в каталоге Битрикс24, и фавикон во вкладке (/_gw/icon, в течение ~5 минут). - Исходники приложения для этого не нужны, пересобирать и разворачивать заново не надо — при условии, что строка
<link rel="icon" href="/_gw/icon">была вписана при сборке. - Если строку
<link>не добавляли — фавикона во вкладке не будет (это ожидаемо), но иконка в каталоге работает. Добавить фавикон можно при следующей пересборке, вписав строку<link>(id при этом не нужен).
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | ICON_NO_FILE |
В теле нет части с файлом: тело не multipart/form-data либо поле названо не file и не icon |
| 400 | ICON_EMPTY |
Файл пустой |
| 400 | ICON_TOO_LARGE |
Файл тяжелее предела своего формата — пределы в разделе «Формат» выше |
| 400 | ICON_TOO_MANY_PIXELS |
Слишком много точек — код приходит на обоих форматах: у растрового изображения при превышении 4 мегапикселей, у SVG при холсте больше 4096×4096 после растеризации |
| 400 | ICON_UNSUPPORTED_FORMAT |
Формат не распознан по содержимому файла |
| 400 | ICON_NOT_SVG |
По содержимому это SVG, но ни Content-Type не начинается с image/svg, ни имя файла не кончается на .svg. Тот же код приходит, когда разметка не образует корректный SVG-контейнер |
| 400 | ICON_RASTERIZE_FAILED |
Формат распознан, но изображение не удалось привести к PNG 256×256 |
| 400 | ICON_SVG_SCRIPT, ICON_SVG_EVENT_HANDLER, ICON_SVG_EXTERNAL_REF и другие коды семейства ICON_SVG_* |
SVG не прошёл очистку: в нём скрипт, обработчик события, внешняя ссылка или другая запрещённая конструкция. Код называет сработавшую проверку |
| 401 | MISSING_API_KEY |
Не передан заголовок X-Api-Key |
| 401 | INVALID_API_KEY |
Неверный или просроченный API-ключ |
| 403 | INFRA_FORBIDDEN_FOR_COWORK_KEY |
Вызов сделан ключом Cowork/Code — такой ключ работает только с данными, изменяющие операции ему закрыты. Что делать — Проектный ключ для деплоя |
| 404 | SERVER_NOT_FOUND |
Сервера с таким id нет, он удалён или принадлежит другому API-ключу. Членство в команде разработки сервера эту операцию не открывает — она требует управляющего ключа при любой роли. |
| 429 | RATE_LIMITED |
Превышен лимит: 10 запросов в минуту на пару «API-ключ и сервер» |
| 502 | ICON_STORAGE_FAILED |
Иконка прошла проверки, но объектное хранилище её не приняло. Повторите загрузку |
Полный список общих ошибок API — Ошибки.