curl --request GET \
--url https://api.recursion.labelbox.com/managed-agents/v1/sessions/{session_id}/events/{event_id}/content \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.recursion.labelbox.com/managed-agents/v1/sessions/{session_id}/events/{event_id}/content"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.recursion.labelbox.com/managed-agents/v1/sessions/{session_id}/events/{event_id}/content', 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.recursion.labelbox.com/managed-agents/v1/sessions/{session_id}/events/{event_id}/content",
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.recursion.labelbox.com/managed-agents/v1/sessions/{session_id}/events/{event_id}/content"
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.recursion.labelbox.com/managed-agents/v1/sessions/{session_id}/events/{event_id}/content")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.recursion.labelbox.com/managed-agents/v1/sessions/{session_id}/events/{event_id}/content")
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{
"blocks": [
{
"byte_size": 1,
"content": [],
"context": "example",
"data": "example",
"encrypted_content": "example",
"height": 1,
"id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"input": {
"key": "example"
},
"is_error": true,
"media_type": "example",
"name": "example-name",
"omitted_bytes": 1,
"payload": "example",
"provider": "example",
"provider_payload": "example",
"redacted": true,
"semantic_hint": "example",
"sha256": "example",
"signature": "example",
"source": {
"file_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"type": "file"
},
"summary": [],
"text": "example",
"title": "example",
"tool_use_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"type": "example",
"uri": "example",
"url": "https://example.com",
"url_expires_at": "2026-02-18T09:30:00.000Z",
"width": 1
}
],
"evaluation_budget_reached": {
"affected_target_session_ids": [
"9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
],
"max_tree_cost_usd": "example"
},
"evaluation_plan_frozen": {
"criteria": [
{
"criterion_key": "example",
"criterion_text": "example"
}
],
"max_concurrent_threads": 1,
"max_tree_cost_usd": "example",
"targets": [
{
"snapshot_event_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"target_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
}
]
},
"evaluation_run_finished": {
"failure_code": "plan_failed",
"failure_message": "example",
"targets_budget_reached": 1,
"targets_skipped": 1,
"targets_total": 1,
"terminal_status": "completed",
"verdicts_recorded": 1
},
"evaluation_target_skipped": {
"child_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"reason": "example",
"reason_code": "child_create_failed",
"snapshot_event_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"target_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
},
"evaluation_target_started": {
"child_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"clone_state": "ready",
"evaluation_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"sandbox_provider": "example",
"snapshot_event_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"target_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
},
"evaluation_verdict_recorded": {
"child_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"cost_completeness": "complete",
"cost_usd": "example",
"evaluation_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"failed_criterion_keys": [
"example"
],
"result": "pass",
"snapshot_event_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"target_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
},
"metadata": {
"key": "example"
},
"plan": [
{
"content": "example",
"id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"status": "example"
}
],
"stop_reason": "example",
"tools": [
{
"description": "example",
"input_schema": {
"key": "example"
},
"name": "example-name"
}
],
"usage": {
"cache_read_tokens": 1,
"cache_write_tokens": 1,
"cost_usd": 1.5,
"input_tokens": 1,
"output_tokens": 1
}
}{
"code": "invalid_request",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "unauthorized",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "forbidden",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "not_found",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "ios_client_update_required",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "rate_limit_exceeded",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "internal_error",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "bad_gateway",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "content_store_unavailable",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "gateway_timeout",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}Stream one authenticated complete event content document
Streams the complete stored content document for one event as application/json, for events whose payload was externalized instead of inlined in the timeline. The event must belong to the session in the path. The response carries an ETag over the content’s SHA-256 and is privately cacheable.
curl --request GET \
--url https://api.recursion.labelbox.com/managed-agents/v1/sessions/{session_id}/events/{event_id}/content \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.recursion.labelbox.com/managed-agents/v1/sessions/{session_id}/events/{event_id}/content"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.recursion.labelbox.com/managed-agents/v1/sessions/{session_id}/events/{event_id}/content', 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.recursion.labelbox.com/managed-agents/v1/sessions/{session_id}/events/{event_id}/content",
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.recursion.labelbox.com/managed-agents/v1/sessions/{session_id}/events/{event_id}/content"
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.recursion.labelbox.com/managed-agents/v1/sessions/{session_id}/events/{event_id}/content")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.recursion.labelbox.com/managed-agents/v1/sessions/{session_id}/events/{event_id}/content")
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{
"blocks": [
{
"byte_size": 1,
"content": [],
"context": "example",
"data": "example",
"encrypted_content": "example",
"height": 1,
"id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"input": {
"key": "example"
},
"is_error": true,
"media_type": "example",
"name": "example-name",
"omitted_bytes": 1,
"payload": "example",
"provider": "example",
"provider_payload": "example",
"redacted": true,
"semantic_hint": "example",
"sha256": "example",
"signature": "example",
"source": {
"file_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"type": "file"
},
"summary": [],
"text": "example",
"title": "example",
"tool_use_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"type": "example",
"uri": "example",
"url": "https://example.com",
"url_expires_at": "2026-02-18T09:30:00.000Z",
"width": 1
}
],
"evaluation_budget_reached": {
"affected_target_session_ids": [
"9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
],
"max_tree_cost_usd": "example"
},
"evaluation_plan_frozen": {
"criteria": [
{
"criterion_key": "example",
"criterion_text": "example"
}
],
"max_concurrent_threads": 1,
"max_tree_cost_usd": "example",
"targets": [
{
"snapshot_event_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"target_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
}
]
},
"evaluation_run_finished": {
"failure_code": "plan_failed",
"failure_message": "example",
"targets_budget_reached": 1,
"targets_skipped": 1,
"targets_total": 1,
"terminal_status": "completed",
"verdicts_recorded": 1
},
"evaluation_target_skipped": {
"child_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"reason": "example",
"reason_code": "child_create_failed",
"snapshot_event_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"target_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
},
"evaluation_target_started": {
"child_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"clone_state": "ready",
"evaluation_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"sandbox_provider": "example",
"snapshot_event_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"target_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
},
"evaluation_verdict_recorded": {
"child_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"cost_completeness": "complete",
"cost_usd": "example",
"evaluation_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"failed_criterion_keys": [
"example"
],
"result": "pass",
"snapshot_event_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"target_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
},
"metadata": {
"key": "example"
},
"plan": [
{
"content": "example",
"id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"status": "example"
}
],
"stop_reason": "example",
"tools": [
{
"description": "example",
"input_schema": {
"key": "example"
},
"name": "example-name"
}
],
"usage": {
"cache_read_tokens": 1,
"cache_write_tokens": 1,
"cost_usd": 1.5,
"input_tokens": 1,
"output_tokens": 1
}
}{
"code": "invalid_request",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "unauthorized",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "forbidden",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "not_found",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "ios_client_update_required",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "rate_limit_exceeded",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "internal_error",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "bad_gateway",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "content_store_unavailable",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "gateway_timeout",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}Authorizations
A Recursion API key, created in the console under API keys.
Path Parameters
Session id (UUID) the event belongs to.
Event id, a lowercase canonical UUIDv7 taken from an event returned by listSessionEvents. Event ids sort chronologically.
Response
The body of a session event, shaped like a provider message: content blocks plus the stop reason and token usage the provider returned. Every event in a session transcript carries one.
The body of a session event, shaped like a provider message: content blocks plus the stop reason and token usage the provider returned. Every event in a session transcript carries one.
Ordered content blocks of this message, in the provider's content-block form. Empty for events that carry no message body.
Show child attributes
Show child attributes
Cost cap and targets stopped or left unadmitted when the run reached it.
Show child attributes
Show child attributes
{ "affected_target_session_ids": ["9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"], "max_tree_cost_usd": "example" }
Frozen target, rubric, concurrency, and cost plan for an evaluation run.
Show child attributes
Show child attributes
{ "criteria": [ { "criterion_key": "example", "criterion_text": "example" } ], "max_concurrent_threads": 1, "max_tree_cost_usd": "example", "targets": [ { "snapshot_event_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d", "target_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d" } ] }
Terminal counts and systemic failure state for the evaluation run.
Show child attributes
Show child attributes
{ "failure_code": "plan_failed", "failure_message": "example", "targets_budget_reached": 1, "targets_skipped": 1, "targets_total": 1, "terminal_status": "completed", "verdicts_recorded": 1 }
Sanitized outcome for a target whose processing ended without a completed verdict audit.
Show child attributes
Show child attributes
{ "child_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d", "reason": "example", "reason_code": "child_create_failed", "snapshot_event_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d", "target_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d" }
Identity and clone state for one admitted evaluation target.
Show child attributes
Show child attributes
{ "child_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d", "clone_state": "ready", "evaluation_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d", "sandbox_provider": "example", "snapshot_event_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d", "target_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d" }
Audit reference to one authoritative immutable evaluation verdict.
Show child attributes
Show child attributes
{ "child_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d", "cost_completeness": "complete", "cost_usd": "example", "evaluation_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d", "failed_criterion_keys": ["example"], "result": "pass", "snapshot_event_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d", "target_session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d" }
Extra key/value detail about this event that is not part of the message body, such as the ingest subtype or the sandbox working directory.
Show child attributes
Show child attributes
Plan items reported by the agent, present on a plan_update event.
Show child attributes
Show child attributes
The provider's own stop_reason for the assistant turn, recorded verbatim, e.g. end_turn, tool_use, or max_tokens. Absent on events that are not a model response.
Tool definitions that were in scope for the turn, as sent to the provider. Recorded on the session's system message so a transcript shows what the model could call.
Show child attributes
Show child attributes
Token counts the provider reported for the call that produced this message. Absent when the event is not a model response.
Show child attributes
Show child attributes
{ "cache_read_tokens": 1, "cache_write_tokens": 1, "cost_usd": 1.5, "input_tokens": 1, "output_tokens": 1 }