Public API

Introduction

The Dashmaster 2k Public API lets you manage your devices and dashboards programmatically. The most common use case is remotely updating which dashboard is shown on a device, but you can also list your devices and dashboards, fetch the current state of a device, and trigger the on-screen “identify” overlay.

The full machine-readable reference is published as a Swagger / OpenAPI document:

View the interactive Swagger documentation →

This page is a quick human-friendly summary of the available calls.

Authentication

All requests must be authenticated with an API token sent as a Bearer token in the Authorization header. API tokens are prefixed with dm_.

  1. Sign in to your Dashmaster 2k account.
  2. Go to https://app.dashmaster2k.com/api and generate a new API token.
  3. Copy the token (it will look like dm_xxx…) and keep it secret — treat it like a password.
  4. Include it on every request:
Authorization: Bearer dm_xxx

For requests with a JSON body (e.g. PATCH /devices/{id}) you must also send a Content-Type header:

Content-Type: application/json

If the token is missing or invalid you’ll receive a 401 Unauthorized response.

Base URL

All endpoints are served from:

https://app.dashmaster2k.com/api-v1

For example, to list your devices:

curl https://app.dashmaster2k.com/api-v1/devices \
  -H "Authorization: Bearer dm_xxx"

Endpoints

Dashboards

GET /dashboards — List dashboards

Returns all dashboards owned by the authenticated user.

curl https://app.dashmaster2k.com/api-v1/dashboards \
  -H "Authorization: Bearer dm_xxx"

Response:

{
  "dashboards": [
    {
      "id": "DASH789",
      "name": "Lobby screen",
      "created": "2026-01-12T09:30:00.000Z",
      "updated": "2026-04-02T14:11:00.000Z"
    }
  ]
}

Devices

GET /devices — List devices

Returns all devices owned by the authenticated user.

curl https://app.dashmaster2k.com/api-v1/devices \
  -H "Authorization: Bearer dm_xxx"

Response:

{
  "devices": [
    {
      "id": "DEVICE123",
      "name": "Reception TV",
      "dashboardId": "DASH789",
      "rotation": 0,
      "created": "2026-01-12T09:30:00.000Z",
      "updated": "2026-05-10T11:20:00.000Z",
      "identifiedAt": null
    }
  ]
}

GET /devices/{id} — Get a device

Returns a single device by its ID.

curl https://app.dashmaster2k.com/api-v1/devices/DEVICE123 \
  -H "Authorization: Bearer dm_xxx"

PATCH /devices/{id} — Update the dashboard and/or rotation of a device

Change which dashboard is being shown on a device and/or how it’s rotated on screen. This is the call you’ll want for remotely updating displays.

Provide at least one of the following fields in the request body. Fields you don’t include are left unchanged.

FieldTypeDescription
dashboardIdstring | nullID of the dashboard to display. Pass null or an empty string to clear the dashboard from the device.
rotationintegerClockwise rotation applied to the dashboard on this device, in degrees. Must be one of 0, 90, 180, or 270.

Update the dashboard and rotation in one call:

curl -X PATCH https://app.dashmaster2k.com/api-v1/devices/DEVICE123 \
  -H "Authorization: Bearer dm_xxx" \
  -H "Content-Type: application/json" \
  -d '{"dashboardId": "DASH789", "rotation": 90}'

Or rotate the device without changing its dashboard:

curl -X PATCH https://app.dashmaster2k.com/api-v1/devices/DEVICE123 \
  -H "Authorization: Bearer dm_xxx" \
  -H "Content-Type: application/json" \
  -d '{"rotation": 270}'

Response:

{
  "device": {
    "id": "DEVICE123",
    "name": "Reception TV",
    "dashboardId": "DASH789",
    "rotation": 90,
    "created": "2026-01-12T09:30:00.000Z",
    "updated": "2026-05-14T10:00:00.000Z",
    "identifiedAt": null
  }
}

POST /devices/{id}/identify — Identify a device

Flashes the device ID overlay on the device’s screen for about three seconds. Useful for confirming which physical screen a device record corresponds to.

curl -X POST https://app.dashmaster2k.com/api-v1/devices/DEVICE123/identify \
  -H "Authorization: Bearer dm_xxx"

Response:

{
  "identifiedAt": "2026-05-14T10:00:00.000Z"
}

Errors

Errors are returned as JSON with a consistent shape:

{
  "error": {
    "code": "unauthorized",
    "message": "Missing or invalid API token"
  }
}

Common status codes:

  • 400 Bad Request — the request body was missing required fields or contained invalid values.
  • 401 Unauthorized — the API token is missing or invalid.
  • 404 Not Found — the requested device or dashboard does not exist, or is not owned by the authenticated user.