curl --request POST \
--url https://api.sidenet.ai/v1/dashboards/{id}/views/{viewId}/run \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"context": {
"id": "b-42"
},
"values": {
"arrival": "2026-11-02",
"notes": "Late check-in"
},
"filters": {}
}
'import requests
url = "https://api.sidenet.ai/v1/dashboards/{id}/views/{viewId}/run"
payload = {
"context": { "id": "b-42" },
"values": {
"arrival": "2026-11-02",
"notes": "Late check-in"
},
"filters": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
context: {id: 'b-42'},
values: {arrival: '2026-11-02', notes: 'Late check-in'},
filters: {}
})
};
fetch('https://api.sidenet.ai/v1/dashboards/{id}/views/{viewId}/run', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sidenet.ai/v1/dashboards/{id}/views/{viewId}/run",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'context' => [
'id' => 'b-42'
],
'values' => [
'arrival' => '2026-11-02',
'notes' => 'Late check-in'
],
'filters' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sidenet.ai/v1/dashboards/{id}/views/{viewId}/run"
payload := strings.NewReader("{\n \"context\": {\n \"id\": \"b-42\"\n },\n \"values\": {\n \"arrival\": \"2026-11-02\",\n \"notes\": \"Late check-in\"\n },\n \"filters\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sidenet.ai/v1/dashboards/{id}/views/{viewId}/run")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"context\": {\n \"id\": \"b-42\"\n },\n \"values\": {\n \"arrival\": \"2026-11-02\",\n \"notes\": \"Late check-in\"\n },\n \"filters\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sidenet.ai/v1/dashboards/{id}/views/{viewId}/run")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"context\": {\n \"id\": \"b-42\"\n },\n \"values\": {\n \"arrival\": \"2026-11-02\",\n \"notes\": \"Late check-in\"\n },\n \"filters\": {}\n}"
response = http.request(request)
puts response.read_body{
"run_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "succeeded",
"error": "<string>",
"component": {},
"result": "<unknown>"
}{
"error": "<string>",
"issues": [
{
"path": "<string>",
"message": "<string>"
}
]
}Run dashboard view
Runs one view of the dashboard — what a click opens in a drawer or a modal — and answers when it is over. A data view (kind table | stats | chart) runs its sources with the context the trigger resolved (plus the page’s current filters) and returns the component to draw. A form view runs its declared tool ONCE with the submitted values (the fields of its schema) and its fixed parameters, and returns the tool’s output; the page then refreshes the dashboard (on_success). A thread view with a reply_tool runs it the same way with values: { <reply_field>: text }; a read-only thread view answers 400 (the page renders it from GET /v1/messages). No model runs. A session token runs with its user’s credentials; an API key names the user with X-User-Id. The run is listed under the dashboard’s workflow like a refresh.
curl --request POST \
--url https://api.sidenet.ai/v1/dashboards/{id}/views/{viewId}/run \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"context": {
"id": "b-42"
},
"values": {
"arrival": "2026-11-02",
"notes": "Late check-in"
},
"filters": {}
}
'import requests
url = "https://api.sidenet.ai/v1/dashboards/{id}/views/{viewId}/run"
payload = {
"context": { "id": "b-42" },
"values": {
"arrival": "2026-11-02",
"notes": "Late check-in"
},
"filters": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
context: {id: 'b-42'},
values: {arrival: '2026-11-02', notes: 'Late check-in'},
filters: {}
})
};
fetch('https://api.sidenet.ai/v1/dashboards/{id}/views/{viewId}/run', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sidenet.ai/v1/dashboards/{id}/views/{viewId}/run",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'context' => [
'id' => 'b-42'
],
'values' => [
'arrival' => '2026-11-02',
'notes' => 'Late check-in'
],
'filters' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sidenet.ai/v1/dashboards/{id}/views/{viewId}/run"
payload := strings.NewReader("{\n \"context\": {\n \"id\": \"b-42\"\n },\n \"values\": {\n \"arrival\": \"2026-11-02\",\n \"notes\": \"Late check-in\"\n },\n \"filters\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sidenet.ai/v1/dashboards/{id}/views/{viewId}/run")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"context\": {\n \"id\": \"b-42\"\n },\n \"values\": {\n \"arrival\": \"2026-11-02\",\n \"notes\": \"Late check-in\"\n },\n \"filters\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sidenet.ai/v1/dashboards/{id}/views/{viewId}/run")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"context\": {\n \"id\": \"b-42\"\n },\n \"values\": {\n \"arrival\": \"2026-11-02\",\n \"notes\": \"Late check-in\"\n },\n \"filters\": {}\n}"
response = http.request(request)
puts response.read_body{
"run_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "succeeded",
"error": "<string>",
"component": {},
"result": "<unknown>"
}{
"error": "<string>",
"issues": [
{
"path": "<string>",
"message": "<string>"
}
]
}Authorizations
Organization API key, generated in studio.sidenet.ai. Backend only — never in a browser.
Body
The view's context keys, resolved from the click (e.g. { "id": "b-42" }).
{ "id": "b-42" }
Form views: the submitted field values (validated against the view's schema).
{
"arrival": "2026-11-02",
"notes": "Late check-in"
}
The page's current filter values (presets allowed); the dashboard defaults when omitted.