StatusDashboard
DashboardsDigital Signs

Get digital sign upload URL

Get a pre-signed upload URL for a per-sign logo.

View Markdown

POST /app/dashboards/{id}/digital-signs/upload-url

Returns a short-lived pre-signed URL for uploading a per-sign logo to tenant asset storage.


Path parameters

ParameterDescription
idThe UUID of the dashboard.

Request

See API Basics for required headers.

Request body

FieldTypeDescription
signIdstringUUID of the sign the logo belongs to.
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

Sample request

curl -X POST https://api.statusdashboard.com/app/dashboards/a1b2c3d4-e5f6-7890-abcd-ef1234567890/digital-signs/upload-url \
  -H "Authorization: Bearer bcf847abf5c6:def456" \
  -H "Content-Type: application/json" \
  -d '{
    "signId": "550e8400-e29b-41d4-a716-446655440000",
    "contentType": "image/png"
  }'

Sample response

Status: 200 OK

{
  "uploadUrl": "https://upload.statusdashboard.com/tenant-assets/org-id/dash-id/digital-signs/sign-id/logo.png?signature=...",
  "assetUrl": "https://assets.statusdashboard.com/tenant-assets/org-id/dash-id/digital-signs/sign-id/logo.png",
  "s3Key": "tenant-assets/org-id/dash-id/digital-signs/sign-id/logo.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 logoUrl on the sign in an Update digital signs call.
s3KeyStorage key for the uploaded asset. Pass this as logoKey alongside logoUrl on the same sign 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 @sign-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 digital signs with both logoKey and logoUrl on the sign. Send the full signs array on every save:

curl -X PUT https://api.statusdashboard.com/app/dashboards/a1b2c3d4-e5f6-7890-abcd-ef1234567890/digital-signs \
  -H "Authorization: Bearer bcf847abf5c6:def456" \
  -H "Content-Type: application/json" \
  -d '{
    "signs": [
      {
        "id": "550e8400-e29b-41d4-a716-446655440000",
        "path": "noc-lobby",
        "enabled": true,
        "title": "NOC Overview",
        "compact": false,
        "darkMode": false,
        "logoKey": "tenant-assets/org-id/dash-id/digital-signs/sign-id/logo.png",
        "logoUrl": "https://assets.statusdashboard.com/tenant-assets/org-id/dash-id/digital-signs/sign-id/logo.png",
        "groups": { "enabled": false, "items": [] },
        "components": {}
      }
    ]
  }'

Error responses

StatusWhen
400Missing or invalid signId 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.