curl --request GET \
--url https://api.sidenet.ai/v1/requests \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sidenet.ai/v1/requests"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sidenet.ai/v1/requests', 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/requests",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sidenet.ai/v1/requests"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sidenet.ai/v1/requests")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sidenet.ai/v1/requests")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"requests": [
{
"id": "8f2c1d4e6a7b4c9d",
"kind": "chat",
"status": "success",
"error": null,
"started_at": "2026-10-27T10:00:00.000Z",
"ended_at": "2026-10-27T10:00:04.210Z",
"latency_ms": 4210,
"environment": "prod",
"source": "SDK-v2",
"group": {
"id": "grp_84f20c19",
"name": "Acme"
},
"user_id": "user_4821",
"thread_id": "thread_2f81c04a",
"message_id": "msg_9c41b0e7",
"trace_ids": [
"0af7651916cd43dd8448eb211c80319c",
"5c1e9a2b7d3f4e6a8b9c0d1e2f3a4b5c"
],
"agent": {
"id": "6f1c0f4e-2b7a-4a51-9a2f-0c9d1b3e5a10",
"name": "Support",
"version_id": "b3f7a2c8-5d19-4e6b-8f02-1a4c9e7d3b55",
"version": 4
},
"workflow": null,
"copilot": {
"id": "cccccccc-0000-4000-8000-000000000001",
"environment": "prod",
"network": {
"id": "12",
"name": "Acme network"
}
},
"experiment_id": null,
"target": null,
"model": "openai/gpt-4o",
"cost": 0.0123,
"usage": {
"input_tokens": 1210,
"output_tokens": 188,
"total_tokens": 1398
},
"cost_breakdown": {
"main": {
"cost": 0.0118,
"usage": {
"inputTokens": 1180,
"outputTokens": 184
},
"model": "openai/gpt-4o"
},
"handoff-agent": {
"cost": 0.0005,
"usage": {
"inputTokens": 30,
"outputTokens": 4
},
"model": "openai/gpt-4o-mini"
}
},
"participants": [
{
"type": "agent",
"id": "support-agent",
"name": "Support"
},
{
"type": "tool",
"id": "Acme_CRM_get_customer",
"name": "Acme_CRM_get_customer",
"success": true
}
],
"feedback": {
"rating": 1,
"comment": null
},
"scores": [
{
"id": "f2c1a7e4-6b3d-4a95-8e10-c7d2b9f4a301",
"scorer_id": "answer-relevancy",
"name": "Answer Relevancy",
"score": 0.85
}
],
"scoring": {
"runs": 1,
"cost": 0.0021
}
}
],
"pagination": {
"total": 1,
"page": 0,
"limit": 50,
"hasMore": false
}
}{
"error": "Bad request",
"details": "kind must be one of chat, workflow, experiment, score"
}List requests
The request log, newest first: one row per chat turn, workflow run or experiment item, with who asked, what ran, what it cost, how long it took, the user’s vote and any scores. Filters are ANDed. Scorer runs are left out unless kind=score; each row reports them under scoring. The window defaults to the last 30 days; limit goes up to 1000 for exports.
curl --request GET \
--url https://api.sidenet.ai/v1/requests \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sidenet.ai/v1/requests"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sidenet.ai/v1/requests', 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/requests",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sidenet.ai/v1/requests"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sidenet.ai/v1/requests")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sidenet.ai/v1/requests")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"requests": [
{
"id": "8f2c1d4e6a7b4c9d",
"kind": "chat",
"status": "success",
"error": null,
"started_at": "2026-10-27T10:00:00.000Z",
"ended_at": "2026-10-27T10:00:04.210Z",
"latency_ms": 4210,
"environment": "prod",
"source": "SDK-v2",
"group": {
"id": "grp_84f20c19",
"name": "Acme"
},
"user_id": "user_4821",
"thread_id": "thread_2f81c04a",
"message_id": "msg_9c41b0e7",
"trace_ids": [
"0af7651916cd43dd8448eb211c80319c",
"5c1e9a2b7d3f4e6a8b9c0d1e2f3a4b5c"
],
"agent": {
"id": "6f1c0f4e-2b7a-4a51-9a2f-0c9d1b3e5a10",
"name": "Support",
"version_id": "b3f7a2c8-5d19-4e6b-8f02-1a4c9e7d3b55",
"version": 4
},
"workflow": null,
"copilot": {
"id": "cccccccc-0000-4000-8000-000000000001",
"environment": "prod",
"network": {
"id": "12",
"name": "Acme network"
}
},
"experiment_id": null,
"target": null,
"model": "openai/gpt-4o",
"cost": 0.0123,
"usage": {
"input_tokens": 1210,
"output_tokens": 188,
"total_tokens": 1398
},
"cost_breakdown": {
"main": {
"cost": 0.0118,
"usage": {
"inputTokens": 1180,
"outputTokens": 184
},
"model": "openai/gpt-4o"
},
"handoff-agent": {
"cost": 0.0005,
"usage": {
"inputTokens": 30,
"outputTokens": 4
},
"model": "openai/gpt-4o-mini"
}
},
"participants": [
{
"type": "agent",
"id": "support-agent",
"name": "Support"
},
{
"type": "tool",
"id": "Acme_CRM_get_customer",
"name": "Acme_CRM_get_customer",
"success": true
}
],
"feedback": {
"rating": 1,
"comment": null
},
"scores": [
{
"id": "f2c1a7e4-6b3d-4a95-8e10-c7d2b9f4a301",
"scorer_id": "answer-relevancy",
"name": "Answer Relevancy",
"score": 0.85
}
],
"scoring": {
"runs": 1,
"cost": 0.0021
}
}
],
"pagination": {
"total": 1,
"page": 0,
"limit": 50,
"hasMore": false
}
}{
"error": "Bad request",
"details": "kind must be one of chat, workflow, experiment, score"
}Authorizations
Organization API key, generated in studio.sidenet.ai. Backend only — never in a browser.
Query Parameters
Start of the window (inclusive). Default: 30 days before to.
"2026-10-01T00:00:00Z"
End of the window (exclusive). Default: now.
"2026-11-01T00:00:00Z"
Only this kind of request.
chat, workflow, experiment, score Only requests that failed, or only those that did not.
success, error Comma-separated environments.
"prod,staging"
Comma-separated billing group ids (your stable ids).
"grp_84f20c19"
Comma-separated agent ids; every version of the agent matches.
"6f1c0f4e-2b7a-4a51-9a2f-0c9d1b3e5a10"
One agent version.
"b3f7a2c8-5d19-4e6b-8f02-1a4c9e7d3b55"
Comma-separated workflow ids; every version matches.
"4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641"
One workflow version.
"e81b4a72-0c95-4f38-a6d2-5b17e9c4038f"
Comma-separated copilot ids.
"cccccccc-0000-4000-8000-000000000001"
The items of one experiment.
"exp_7f31a9c2"
Comma-separated served models.
"openai/gpt-4o"
Comma-separated sources.
"SDK-v2"
Comma-separated end user ids (your ids for them).
"user_4821"
One conversation.
"thread_2f81c04a"
A request id, message id or trace id, or a prefix of a request or message id.
"8f2c1d4e6a7b4c9d"
By start time.
desc, asc 0-based page.
x >= 0x <= 1000