TABLE OF CONTENTS


NOTE: The DAKboard API is available on the Plus subscription (and legacy Pro accounts).


The DAKboard API lets your own scripts, smart-home tools, and apps work with your DAKboard account: switch what a Display shows, update a Block on a Screen, or send your own data, such as a temperature or a sales total, to show on your Screens. This article explains what you can do, how to get your API key, and how to make your first requests, with step-by-step examples.


The DAKboard API follows the REST style: each request is a web address (URL) plus a method such as GET (read) or PUT (change), and the answer comes back in JSON. For every endpoint and field, see the full DAKboard API documentation (Postman).



What You Can Do with the API:


What you want to doHow
See your Screens, Blocks, Loops, and Displays (with their IDs)GET /screens, /screens/{id}/blocks, /loops, /devices
Change which Screen or Loop a Display showsPUT /devices/{id} with screen_id. The Display switches right away.
Change the text in a Text Block, the photo links in a Photo Block using Photo URLs, or the address in a Website BlockPUT /screens/{id}/blocks/{id}, then refresh the Screen
Show, hide, move, or resize a BlockPUT /screens/{id}/blocks/{id} (is_disabled, x, y, w, h), then refresh the Screen
Rename a Screen or Display, or refresh a ScreenPUT /screens/{id} or /devices/{id}
Send your own numbers or text to show on a ScreenPOST /metrics/{name}, shown with the Metrics Data Block


Not possible yet: creating, copying, or deleting Screens, Blocks, or Loops; changing what is in a Loop; Screen Schedules or the TouchHub; and changing other Block settings, such as calendar sources or weather locations.



Who Can Use the API:


  • The API is available on Plus (and legacy Pro accounts). Essential and Free accounts cannot create an API key.
  • Each DAKboard account has one API key. It belongs to the account, not to a person, and anything you do with it changes that account.
  • Team members can view, create, or remove the key only if they have the API key permissions in their team settings.



Get Your API Key:


  1. Log in to your DAKboard account.
  2. Click your account name (or the circle with your initial) in the upper right to open the account menu, then click API Keys.
  3. Click Add API Key. Your key is shown on the page.


Keep your key secret. Anyone with your key can change your Screens and Displays. Do not post it online, put it in shared code, or send it in a support ticket. If your key may have been seen by someone else, go back to the API Keys page, click Revoke, and then add a new key. Anything using the old key stops working until you update it.



Make Your First Request:


  • Every request starts with https://dakboard.com/api/2.
  • Your key goes at the end of the address, as ?api_key=YOUR_API_KEY. Sending it in a header does not work.
  • Always use https://.
  • IDs start with a short prefix: scr_ for Screens, blk_ for Blocks, lop_ for Loops, and dev_ for Displays.


The easiest first request lists your Screens. You can paste this address into a web browser (with your key) or run it with curl:


curl "https://dakboard.com/api/2/screens?api_key=YOUR_API_KEY"


You get back a list of your Screens, each with its id (for example scr_a1b2c3...), name, size, and orientation. To list your Displays or Loops, use /devices or /loops instead of /screens.



Common Tasks, Step by Step:


Replace YOUR_API_KEY and the example IDs with your own. The examples use curl, which is built into macOS, Linux, and Windows 10 and later (in Windows Command Prompt, type curl as shown; in Windows PowerShell, type curl.exe instead of curl).



Change Which Screen or Loop a Display Shows:


  1. Get your Display IDs: curl "https://dakboard.com/api/2/devices?api_key=YOUR_API_KEY"
  2. Get the Screen ID (/screens) or Loop ID (/loops) you want to show.
  3. Switch the Display:


curl -X PUT "https://dakboard.com/api/2/devices/dev_DISPLAYID?api_key=YOUR_API_KEY" -d "screen_id=scr_SCREENID"


Use a Loop ID (lop_...) instead of a Screen ID to show a Loop. The Display switches right away.



Update a Block on Your Screen:


  1. Get the Block IDs on your Screen: curl "https://dakboard.com/api/2/screens/scr_SCREENID/blocks?api_key=YOUR_API_KEY"
  2. Update the Block. For a Text Block:


curl -X PUT "https://dakboard.com/api/2/screens/scr_SCREENID/blocks/blk_BLOCKID?api_key=YOUR_API_KEY" -d "text=Dinner at 6:30"


Other things you can change the same way: photo_urls[] for a Photo Block that uses Photo URLs, url for a Website Block, is_disabled=1 to hide a Block (0 to show it), and x, y, w, h to move or resize it.


Then refresh the Screen so your Displays show the change. Updating a Block on its own does not refresh your Displays:


curl -X PUT "https://dakboard.com/api/2/screens/scr_SCREENID?api_key=YOUR_API_KEY" -d "refresh=true"



Send Your Own Data to a Screen (Metrics):


Metrics let you send your own values to DAKboard and show them with the Metrics Data Block, without hosting anything yourself. Send a value like this:


curl -X POST "https://dakboard.com/api/2/metrics/outside_temp?api_key=YOUR_API_KEY" -H "Content-Type: application/json" -d '[{"value": 21.5}]'


On Windows, the quotes need to be written a little differently, or the data arrives incomplete and returns "Invalid request data. Expected array".


Command Prompt: Command Prompt does not treat single quotes as quotes, so put the data in double quotes with a backslash before each inner quote:


curl -X POST "https://dakboard.com/api/2/metrics/outside_temp?api_key=YOUR_API_KEY" -H "Content-Type: application/json" -d "[{\"value\": 21.5}]"


PowerShell: type curl.exe, keep the single quotes, and put a backslash before each inner quote:


curl.exe -X POST "https://dakboard.com/api/2/metrics/outside_temp?api_key=YOUR_API_KEY" -H "Content-Type: application/json" -d '[{\"value\": 21.5}]'


  • The part after /metrics/ is the metric name (here outside_temp). It is created the first time you send to it.
  • Always include Content-Type: application/json (without it, the request is rejected), and send a list in square brackets, even for one value. You can send up to 100 values in one request. A successful request returns 201.
  • Each value can include an optional timestamp (when it was measured; the default is now) and expires (when it should be removed).


Then add a Metrics Data Block to your Screen and choose your metric. It can show the latest value as text, a gauge, or a graph, and it updates on its own at the Refresh Frequency you choose, so there is no need to refresh the Screen. See DAKboard Metrics for the Block settings.


To see your values, send a GET request to the same address: curl "https://dakboard.com/api/2/metrics/outside_temp?api_key=YOUR_API_KEY". Each value comes back with its timestamp.


To remove values, send a DELETE request to the same address, again with the Content-Type: application/json header. Without the header, it returns an error.

  • To remove one value, send its timestamp as the data, for example {"timestamp": "2026-10-20T14:00:00+00:00"}, using the same quoting as the examples above for your system.
  • To remove the whole metric and all its values, send no data.


curl -X DELETE "https://dakboard.com/api/2/metrics/outside_temp?api_key=YOUR_API_KEY" -H "Content-Type: application/json"



Limits and Good Practice:


  • 30 requests per minute per account, counting every request. More than that returns error 429 until a minute has passed.
  • Metrics: up to 100 values per request, and the newest 1,000 values are kept for each metric (older ones are removed). Text values can be up to 255 characters, and metric names up to 50.
  • Refresh only when something changed. Each refresh reloads every Display showing that Screen, and each reload counts toward your Screen Usage. Refreshing on a timer can lead to a disabled Screen; see High Screen Usage or Disabled Screen (error 429). For values that change often, use Metrics, which update without a refresh.



Errors:


Errors come back like this: {"status":"error","code":401,"message":"Missing or invalid API key"}. The most common ones:


CodeMessageWhat it means
401Missing or invalid API keyThe key is missing, mistyped, revoked, or sent in a header instead of the address.
401Subscription level does not support this requestYour plan does not include the API.
429Request limit of 30 exceededMore than 30 requests in a minute. Wait a minute and slow down.
400Invalid request data. Expected array.A Metrics request is missing the Content-Type: application/json header, is not a list in square brackets, or arrived incomplete (see the FAQ).
400Varies, for example Missing or invalid device IDSomething else in the request is wrong: an ID, a value, or the format.
403 / 404Forbidden / Missing or invalid block IDThe Block is not on that Screen, or does not exist.


A successful request returns 200 (or 201 when you add metric values).



Using the Postman Documentation:


The DAKboard API documentation (Postman) lists every endpoint and field, with examples. If you try the requests in Postman:

  • Add your key on the Params tab as api_key (not on the Authorization tab).
  • For Metrics, add the header Content-Type: application/json and send the body as raw JSON.



Frequently Asked Questions:


Below are the most frequently asked questions about the DAKboard API.



Can I Create a New Screen or Change a Loop with the API?


Not yet. The API can update existing Screens, Blocks, and Displays, and read your Loops, but Screens and Loops are created and changed in your DAKboard account.



Why Didn't My Display Change After I Updated a Block?


Why this happens: Updating a Block saves the change but does not refresh your Displays.


How to fix it: Send a refresh for the Screen: PUT /screens/scr_SCREENID with refresh=true (see Update a Block on Your Screen).



Why Do I Get Missing or Invalid API Key?


Why this happens: The key is missing from the address, mistyped, sent in a header, or has been revoked.


How to fix it: Add ?api_key=YOUR_API_KEY to the end of the address, and check the key on your API Keys page.



Why Do I Get Subscription Level Does Not Support This Request?


Why this happens: The API is available on Plus (and legacy Pro accounts).


How to fix it: Upgrade to Plus to use the API.



Why Do I Get Request Limit of 30 Exceeded?


Why this happens: Your account sent more than 30 requests in one minute.


How to fix it: Wait a minute, then send requests less often. For Metrics, send several values in one request (up to 100).



Why Do I Get Invalid Request Data. Expected Array?


Why this happens: DAKboard did not receive a list of values it could read. This happens when the Content-Type: application/json header is missing, when the data is not in square brackets, or, on Windows, when the quotes are not written the Windows way, so the data arrives incomplete (for example, single quotes in Command Prompt).


How to fix it: Include the Content-Type: application/json header, put the values in square brackets, and on Windows use the Command Prompt or PowerShell example in Send Your Own Data to a Screen (Metrics).



Can I Share My API Key or Give One to a Team Member?


We recommend you do not share your key: anyone with it can change your Screens and Displays. Each account has one key, and team members with the API key permissions can view it. If your key is exposed, Revoke it on the API Keys page and add a new one.



Can the API Pull Data from Another Website?


No. The API lets you change your own DAKboard account and send data to it. To show data from another website or service on a Screen, use a Block that loads it, such as the Fetch Block; see External Data / JSON - Formatting Options.



Helpful Articles:


Having trouble? See if these articles help.


DAKboard Metrics

How to Access and Update the Account Defaults

High Screen Usage or Disabled Screen (error 429)

External Data / JSON - Formatting Options

DAKboard API documentation (Postman)