Vestaboard Note Arrays
A Vestaboard Note Array is a group of Vestaboard Notes configured together as a single device in the Vestaboard app. Once set up, the Cloud API treats the array as one logical board — you send a single combined message and the cloud automatically slices it and delivers the right piece to each Vestaboard Note.
This is the key difference from the Local API Note Arrays: with the Cloud API you do not have to manage the splitting yourself.
Setting Up a Vestaboard Note Array
Configure your Vestaboard Note Array in the Vestaboard app before using the API. Once the array is created, generate a Cloud API token scoped to that array — the token is what ties your API requests to the group of boards.
See Authentication for how to create a token.
Message Dimensions
The dimensions of the message you send depend on the layout of your Vestaboard Note Array. Each Vestaboard Note is a 3×15 grid, so the combined dimensions for 2 to 4 stacked Vestaboard Notes are:
| Arrangement | Vestaboard Notes | Message dimensions |
|---|---|---|
| 2 side-by-side | 2 | 3 rows × 30 cols |
| 4 side-by-side | 4 | 3 rows × 60 cols |
| 2 stacked | 2 | 6 rows × 15 cols |
| 4 stacked | 4 | 12 rows × 15 cols |
| 2×2 grid | 4 | 6 rows × 30 cols |
Sending a Message
Use the same POST https://cloud.vestaboard.com/ endpoint as a single board, but provide the full combined character array matching your array's dimensions.
Side-by-Side (3×30)
- CURL
- Javascript
curl -X POST \
-H "X-Vestaboard-Token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"characters": [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]}' \
https://cloud.vestaboard.com/
await fetch("https://cloud.vestaboard.com/", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Vestaboard-Token": "YOUR_API_KEY",
},
body: JSON.stringify({
characters: [
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
],
],
}),
}).then((res) => res.json());
2×2 Grid (6×30)
- CURL
- Javascript
curl -X POST \
-H "X-Vestaboard-Token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"characters": [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]}' \
https://cloud.vestaboard.com/
await fetch("https://cloud.vestaboard.com/", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Vestaboard-Token": "YOUR_API_KEY",
},
body: JSON.stringify({
characters: [
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
],
],
}),
}).then((res) => res.json());
Example Response
{
"status": "ok",
"id": "9b4f13f0-4623-4fb9-8fbf-09ae13350da1",
"created": 1681154452865
}
Reading the Current Message
A GET to https://cloud.vestaboard.com/ returns the full combined layout for your array. The layout string will reflect the combined dimensions of your Vestaboard Note Array.
- CURL
- Javascript
curl -H "X-Vestaboard-Token: YOUR_API_KEY" -H "Content-Type: application/json" https://cloud.vestaboard.com/
await fetch("https://cloud.vestaboard.com/", {
headers: {
"Content-Type": "application/json",
"X-Vestaboard-Token": "YOUR_API_KEY",
},
method: "GET",
}).then((res) => res.json());
Example Response (2-Note side-by-side, 3×30)
{
"currentMessage": {
"layout": "[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]",
"id": "172c7808-52db-4eb9-9ecf-505bd00436bc"
}
}
Limitations
- Transitions are not supported globally on Vestaboard Note Arrays. The Get Transition and Set Transition endpoints will have no effect on an array token.
- Text input (
{"text": "..."}) is supported but the text will be formatted for the full combined dimensions of the array. - Rate limiting applies the same as a single board — sending more than one message every 15 seconds may result in dropped messages.