---
title: "Upload System Broadcast Image"
method: POST
path: "/api/system-broadcast/image"
tags: ["System Broadcast"]
---

# Upload System Broadcast Image

`POST /api/system-broadcast/image`

Upload one image for use inside an announcement. system_admin only.

Returns {"url": "https://..."}. HTTPS is not incidental: the frontend
sanitizer (utils/richMessage.js) drops any <img> whose src is not https, so
an http URL here would vanish silently between the composer and the reader.
That is asserted before returning rather than assumed.

Everything is re-encoded to WebP, as in the user-photo upload: it is the
format the composer already accepts, and it takes a 4 MB screenshot down to
a few hundred KB for a banner that every user of the platform loads.

## Headers

- `x-api-token` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-26** `b65cead3236b` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/multigest/apis/multigest-protected-api/changes/api/system-broadcast/image/post.md)

---

[API](https://skmtc.dev/multigest/apis/multigest-protected-api.md) · [All operations](https://skmtc.dev/multigest/apis/multigest-protected-api/llms.txt) · [OpenAPI document](https://skmtc.dev/multigest/apis/multigest-protected-api/revisions/447243444af4?raw)
