StatusDashboard
DashboardsBranding

Get branding upload URL

Get a pre-signed upload URL for a branding image.

View Markdown

POST /app/dashboards/{id}/branding/upload-url

Returns a short-lived pre-signed URL for uploading a branding image (header logo, main logo, favicon, or email logo) to tenant asset storage. Use this endpoint, then pass the returned assetUrl and s3Key to Update branding.


Path parameters

ParameterDescription
idThe UUID of the dashboard.

Request

See API Basics for required headers.

Request body

FieldTypeDescription
assetTypestringThe branding slot to upload for. One of headerLogo, mainLogo, favicon, or emailLogo.
contentTypestringMIME type of the file being uploaded. Must be one of the allowed types (see below).

Allowed content types

MIME typeFormat
image/pngPNG
image/jpegJPEG
image/gifGIF
image/webpWebP
image/svg+xmlSVG
image/x-iconICO

Sample request

curl -X POST https://api.statusdashboard.com/app/dashboards/a1b2c3d4-e5f6-7890-abcd-ef1234567890/branding/upload-url \
  -H "Authorization: Bearer bcf847abf5c6:def456" \
  -H "Content-Type: application/json" \
  -d '{
    "assetType": "mainLogo",
    "contentType": "image/png"
  }'

Sample response

Status: 200 OK

{
  "uploadUrl": "https://upload.statusdashboard.com/tenant-assets/org-id/dash-id/mainLogo.png?signature=...",
  "assetUrl": "https://assets.statusdashboard.com/tenant-assets/org-id/dash-id/mainLogo.png",
  "s3Key": "tenant-assets/org-id/dash-id/mainLogo.png"
}
FieldDescription
uploadUrlPre-signed upload URL. Upload the image file directly to this URL using an HTTP PUT request with the Content-Type header matching what you specified. Expires in 5 minutes.
assetUrlPublic URL that will serve the uploaded image once the PUT completes. Pass this as headerLogoUrl, mainLogoUrl, faviconUrl, or emailLogoUrl in an Update dashboard call.
s3KeyStorage key for the uploaded asset. Pass this as headerLogoKey, mainLogoKey, faviconKey, or emailLogoKey alongside the URL in the update call.

Uploading the file

After receiving the response, upload the image with a PUT request directly to uploadUrl:

curl -X PUT "<uploadUrl>" \
  -H "Content-Type: image/png" \
  --data-binary @logo.png

The Content-Type header must match exactly what you specified in the request body. The pre-signed URL is signed for that specific content type.

Once the upload completes, call Update branding with both the URL and key to save the branding and enable future cleanup:

curl -X PUT https://api.statusdashboard.com/app/dashboards/a1b2c3d4-e5f6-7890-abcd-ef1234567890/branding \
  -H "Authorization: Bearer bcf847abf5c6:def456" \
  -H "Content-Type: application/json" \
  -d '{
    "mainLogoUrl": "https://assets.statusdashboard.com/tenant-assets/org-id/dash-id/mainLogo.png",
    "mainLogoKey": "tenant-assets/org-id/dash-id/mainLogo.png"
  }'

Error responses

StatusWhen
400Missing or invalid assetType or contentType.
403Insufficient permissions, or the required feature is not enabled.
404Dashboard not found or does not belong to the caller's organization.

On this page

We use cookies

We use essential cookies to keep the site working, and optional analytics cookies to understand how it's used. Read our Privacy Policy.