Get a brand's public image
The media.public.get operation: GET /api/v1/public/media/{fileId} in the REST API and the media_public_get tool in the MCP server.
GET
/api/v1/public/media/{fileId}Returns a brand's uploaded logo or icon (type, size, SHA-256 and path) without authentication: customers see
them on checkout, the portal and in emails. Only brand images of brands in test or live mode are public; any
other file ID is resource_not_found.
At a glance
- REST:
GET /api/v1/public/media/{fileId} - MCP tool:
media_public_get - Operation ID:
media.public.get - Scope: Brand
- Permission:
brands:read - Risk tier:
read - Dry run: Not supported
- Idempotency: Not needed (read only)
- Modes: Test and live
- Authentication: None (a public endpoint, rate-limited per IP address)
- Since: M13
Request
Path parameters
| Field | Type | Description |
|---|---|---|
fileId | file_… ID | The image's file ID (file_…), as in its /media path. |
Query parameters
This operation takes no query parameters.
Response
200 OK with a JSON object:
| Field | Type | Description |
|---|---|---|
id | file_… ID | |
object | "media" | |
kind | one of org_avatar, entity_avatar, brand_logo, brand_icon, user_avatar | |
contentType | one of image/png, image/jpeg, image/webp | |
size | integer (at least 0) | |
sha256 | string | Hex SHA-256 of the bytes; the route checks it. |
url | string | /media/{fileId}/{sha256}.{ext}, relative to the app's URL. |
visibility | one of public, private | public: anyone may load it (brand logos and icons); private: only who may see it. |
Examples
A brand's icon
HTTP
GET /api/v1/public/media/file_01m4tx5nj8emwbyf7y9vcf47yc
Response (200):
JSON
{
"id": "file_01m4tx5nj8emwbyf7y9vcf47yc",
"object": "media",
"kind": "brand_icon",
"contentType": "image/png",
"size": 68,
"sha256": "63ef318d96b5d0d0ceba6e04a4e622b1158335cdc67c49e27839132c6f655058",
"url": "/media/file_01m4tx5nj8emwbyf7y9vcf47yc/63ef318d96b5d0d0ceba6e04a4e622b1158335cdc67c49e27839132c6f655058.png",
"visibility": "public"
}
Errors
| Code | HTTP status | When | What to do |
|---|---|---|---|
validation_failed | 400 | fileId isn't a file ID. | Fix the fields listed in details.issues and send the request again. |
resource_not_found | 404 | There is no such brand image, or its brand isn't in test or live mode. | Check the ID and that your credentials are scoped to the right organization, entity, brand and mode. |
It can also return these common errors: api_version_unsupported, scope_required, dry_run_not_supported, rate_limited, internal_error.