run.trace
curl --request POST \
--url http://127.0.0.1:8081/v1/rpc/run.trace \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "run.trace",
"id": "<string>"
}
'import requests
url = "http://127.0.0.1:8081/v1/rpc/run.trace"
payload = {
"jsonrpc": "2.0",
"method": "run.trace",
"id": "<string>"
}
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({jsonrpc: '2.0', method: 'run.trace', id: '<string>'})
};
fetch('http://127.0.0.1:8081/v1/rpc/run.trace', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8081",
CURLOPT_URL => "http://127.0.0.1:8081/v1/rpc/run.trace",
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([
'jsonrpc' => '2.0',
'method' => 'run.trace',
'id' => '<string>'
]),
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 := "http://127.0.0.1:8081/v1/rpc/run.trace"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"run.trace\",\n \"id\": \"<string>\"\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("http://127.0.0.1:8081/v1/rpc/run.trace")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"run.trace\",\n \"id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://127.0.0.1:8081/v1/rpc/run.trace")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"jsonrpc\": \"2.0\",\n \"method\": \"run.trace\",\n \"id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": "<string>",
"result": {
"trace": [
{
"event_created_at": "2023-11-07T05:31:56Z",
"event_id": "<string>",
"event_name": "<string>",
"active_session_id": "<string>",
"delivery_created_at": "2023-11-07T05:31:56Z",
"delivery_delivered_at": "2023-11-07T05:31:56Z",
"delivery_id": "<string>",
"delivery_reason_code": "<string>",
"delivery_started_at": "2023-11-07T05:31:56Z",
"delivery_status": "pending",
"entity_id": "<string>",
"event_source": "<string>",
"event_source_type": "<string>",
"session_id": "<string>",
"session_kind": "<string>",
"session_runtime_mode": "<string>",
"session_status": "<string>",
"session_updated_at": "2023-11-07T05:31:56Z",
"source_event_id": "<string>",
"subscriber_id": "<string>",
"subscriber_type": "node",
"turn_created_at": "2023-11-07T05:31:56Z",
"turn_entity_id": "<string>",
"turn_error": "<string>",
"turn_id": "<string>",
"turn_parse_ok": true,
"turn_retry_count": 1,
"turn_runtime_mode": "<string>",
"turn_scope_key": "<string>",
"turn_task_id": "<string>",
"turn_trigger_event_id": "<string>",
"turn_trigger_event_type": "<string>"
}
],
"next_cursor": "<string>"
}
}Runs
run.trace
Persisted composed run trace as an ordered list of joined rows. Each row is anchored on an event and carries delivery, session, and turn fields where the join finds them. The runtime owns the join — clients MUST consume rows as-emitted and MUST NOT reconstruct the join from separate event/delivery/session/turn lists. Backed by the canonical RunDebugTraceRow surface in internal/store/run_debug_read_surface.go.
Transport: all methods are a single POST /v1/rpc with the method name in the JSON-RPC body. The path shown is a per-method convenience.
POST
/
v1
/
rpc
/
run.trace
run.trace
curl --request POST \
--url http://127.0.0.1:8081/v1/rpc/run.trace \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "run.trace",
"id": "<string>"
}
'import requests
url = "http://127.0.0.1:8081/v1/rpc/run.trace"
payload = {
"jsonrpc": "2.0",
"method": "run.trace",
"id": "<string>"
}
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({jsonrpc: '2.0', method: 'run.trace', id: '<string>'})
};
fetch('http://127.0.0.1:8081/v1/rpc/run.trace', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8081",
CURLOPT_URL => "http://127.0.0.1:8081/v1/rpc/run.trace",
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([
'jsonrpc' => '2.0',
'method' => 'run.trace',
'id' => '<string>'
]),
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 := "http://127.0.0.1:8081/v1/rpc/run.trace"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"run.trace\",\n \"id\": \"<string>\"\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("http://127.0.0.1:8081/v1/rpc/run.trace")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"run.trace\",\n \"id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://127.0.0.1:8081/v1/rpc/run.trace")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"jsonrpc\": \"2.0\",\n \"method\": \"run.trace\",\n \"id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": "<string>",
"result": {
"trace": [
{
"event_created_at": "2023-11-07T05:31:56Z",
"event_id": "<string>",
"event_name": "<string>",
"active_session_id": "<string>",
"delivery_created_at": "2023-11-07T05:31:56Z",
"delivery_delivered_at": "2023-11-07T05:31:56Z",
"delivery_id": "<string>",
"delivery_reason_code": "<string>",
"delivery_started_at": "2023-11-07T05:31:56Z",
"delivery_status": "pending",
"entity_id": "<string>",
"event_source": "<string>",
"event_source_type": "<string>",
"session_id": "<string>",
"session_kind": "<string>",
"session_runtime_mode": "<string>",
"session_status": "<string>",
"session_updated_at": "2023-11-07T05:31:56Z",
"source_event_id": "<string>",
"subscriber_id": "<string>",
"subscriber_type": "node",
"turn_created_at": "2023-11-07T05:31:56Z",
"turn_entity_id": "<string>",
"turn_error": "<string>",
"turn_id": "<string>",
"turn_parse_ok": true,
"turn_retry_count": 1,
"turn_runtime_mode": "<string>",
"turn_scope_key": "<string>",
"turn_task_id": "<string>",
"turn_trigger_event_id": "<string>",
"turn_trigger_event_type": "<string>"
}
],
"next_cursor": "<string>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json

