curl --request GET \
--url https://api.recursion.labelbox.com/managed-agents/v1/sessions/costs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.recursion.labelbox.com/managed-agents/v1/sessions/costs"
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/costs', 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/costs",
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/costs"
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/costs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.recursion.labelbox.com/managed-agents/v1/sessions/costs")
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{
"session_model_costs": [
{
"self": {
"adjustment_count": "example",
"attempt_count": "example",
"charge_count": "example",
"completeness": "complete",
"model_cost_usd": "example",
"scope": "self",
"session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
},
"session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"subtree": {
"adjustment_count": "example",
"attempt_count": "example",
"charge_count": "example",
"completeness": "complete",
"model_cost_usd": "example",
"scope": "self",
"session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
},
"tree": {
"adjustment_count": "example",
"attempt_count": "example",
"charge_count": "example",
"completeness": "complete",
"model_cost_usd": "example",
"scope": "self",
"session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
}
}
]
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "forbidden",
"message": "<string>",
"details": {}
}{
"code": "not_found",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "bad_gateway",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "gateway_timeout",
"message": "<string>",
"details": {}
}Get exact model-cost summaries for a batch of sessions
curl --request GET \
--url https://api.recursion.labelbox.com/managed-agents/v1/sessions/costs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.recursion.labelbox.com/managed-agents/v1/sessions/costs"
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/costs', 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/costs",
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/costs"
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/costs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.recursion.labelbox.com/managed-agents/v1/sessions/costs")
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{
"session_model_costs": [
{
"self": {
"adjustment_count": "example",
"attempt_count": "example",
"charge_count": "example",
"completeness": "complete",
"model_cost_usd": "example",
"scope": "self",
"session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
},
"session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"subtree": {
"adjustment_count": "example",
"attempt_count": "example",
"charge_count": "example",
"completeness": "complete",
"model_cost_usd": "example",
"scope": "self",
"session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
},
"tree": {
"adjustment_count": "example",
"attempt_count": "example",
"charge_count": "example",
"completeness": "complete",
"model_cost_usd": "example",
"scope": "self",
"session_id": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
}
}
]
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "forbidden",
"message": "<string>",
"details": {}
}{
"code": "not_found",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "bad_gateway",
"message": "<string>",
"details": {}
}{
"code": "analytics",
"message": "<string>",
"details": {}
}{
"code": "gateway_timeout",
"message": "<string>",
"details": {}
}Authorizations
A Recursion API key, created in the console under API keys.
Query Parameters
Comma-separated session ids. The response preserves request order and duplicates. If any id is missing or outside the caller's organization/access policy, the complete request returns 404.
Response
Model-cost rollups for a batch of sessions, so a list view can show spend per row without one read per session.
Model-cost rollups for a batch of sessions, so a list view can show spend per row without one read per session.
One entry per requested session id, in request order and repeated when an id is asked for more than once. Authorization is all-or-nothing: if any requested id is unknown or outside the caller's organization or access policy, the whole request returns 404 rather than a short array.
Show child attributes
Show child attributes