What do I need before I start?
- A board with a widget bound to a data source name, for example a KPI widget bound to
open-tickets. - An API key with the
dashboard.writescope, created under API keys. The secret is shown once; keep it somewhere safe.
How do I send a value to a widget?
The request body is the data itself. This sets the open-tickets source:
curl -X PUT https://app.jamboards.io/api/dashboards/data/open-tickets \
-H "Authorization: Bearer $JAMBOARDS_KEY" \
-H "Content-Type: application/json" \
-d '{"value": 128, "label": "Open tickets", "delta": -0.124}'
JamBoards answers 204 and pushes the new document to every wall bound to it over Server-Sent Events. There is nothing to poll and no page to reload. If the source did not exist, it is created.
How do I put an alert on a wall?
Send a notification to a display:
curl -X POST https://app.jamboards.io/api/dashboards/notifications/$DISPLAY_ID \
-H "Authorization: Bearer $JAMBOARDS_KEY" \
-H "Content-Type: application/json" \
-d '{"kind": "banner", "severity": "warning", "title": "Deploy finished", "body": "api 2.4.0 is live"}'
The alert overlays whatever the wall is showing. durationMs makes it clear itself after a while.
Can an AI agent do this instead?
Yes. Point an MCP client such as Claude at https://app.jamboards.io/mcp with the same API key. The agent can write data, send notifications, switch boards and manage screens, and each tool checks the key’s scopes. The full REST reference is at /api/docs in the app.