Calls Usage
curl --request POST \
--url https://api.example.com/calls/usage \
--header 'Content-Type: application/json' \
--data '
{
"project_id": "<string>",
"call_ids": [
"<string>"
],
"include_costs": false,
"limit": 10000
}
'import requests
url = "https://api.example.com/calls/usage"
payload = {
"project_id": "<string>",
"call_ids": ["<string>"],
"include_costs": False,
"limit": 10000
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
project_id: '<string>',
call_ids: ['<string>'],
include_costs: false,
limit: 10000
})
};
fetch('https://api.example.com/calls/usage', 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.example.com/calls/usage",
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([
'project_id' => '<string>',
'call_ids' => [
'<string>'
],
'include_costs' => false,
'limit' => 10000
]),
CURLOPT_HTTPHEADER => [
"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.example.com/calls/usage"
payload := strings.NewReader("{\n \"project_id\": \"<string>\",\n \"call_ids\": [\n \"<string>\"\n ],\n \"include_costs\": false,\n \"limit\": 10000\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/calls/usage")
.header("Content-Type", "application/json")
.body("{\n \"project_id\": \"<string>\",\n \"call_ids\": [\n \"<string>\"\n ],\n \"include_costs\": false,\n \"limit\": 10000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/calls/usage")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"project_id\": \"<string>\",\n \"call_ids\": [\n \"<string>\"\n ],\n \"include_costs\": false,\n \"limit\": 10000\n}"
response = http.request(request)
puts response.read_body{
"call_usage": {},
"unfinished_call_ids": [
"<string>"
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Calls Usage
Compute aggregated usage for multiple root calls, with descendant rollup.
POST
/
calls
/
usage
Calls Usage
curl --request POST \
--url https://api.example.com/calls/usage \
--header 'Content-Type: application/json' \
--data '
{
"project_id": "<string>",
"call_ids": [
"<string>"
],
"include_costs": false,
"limit": 10000
}
'import requests
url = "https://api.example.com/calls/usage"
payload = {
"project_id": "<string>",
"call_ids": ["<string>"],
"include_costs": False,
"limit": 10000
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
project_id: '<string>',
call_ids: ['<string>'],
include_costs: false,
limit: 10000
})
};
fetch('https://api.example.com/calls/usage', 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.example.com/calls/usage",
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([
'project_id' => '<string>',
'call_ids' => [
'<string>'
],
'include_costs' => false,
'limit' => 10000
]),
CURLOPT_HTTPHEADER => [
"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.example.com/calls/usage"
payload := strings.NewReader("{\n \"project_id\": \"<string>\",\n \"call_ids\": [\n \"<string>\"\n ],\n \"include_costs\": false,\n \"limit\": 10000\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/calls/usage")
.header("Content-Type", "application/json")
.body("{\n \"project_id\": \"<string>\",\n \"call_ids\": [\n \"<string>\"\n ],\n \"include_costs\": false,\n \"limit\": 10000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/calls/usage")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"project_id\": \"<string>\",\n \"call_ids\": [\n \"<string>\"\n ],\n \"include_costs\": false,\n \"limit\": 10000\n}"
response = http.request(request)
puts response.read_body{
"call_usage": {},
"unfinished_call_ids": [
"<string>"
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Body
application/json
Request to compute aggregated usage for multiple root calls.
This endpoint returns usage metrics for each requested root call, where each root's metrics include the sum of its own usage plus all descendants' usage.
Note: All matching calls are loaded into memory for aggregation. For very large result sets (>10k calls), consider batching root call IDs or using narrower filters at the application layer.
Root call IDs to aggregate. Each result key corresponds to one input call ID.
If true, include cost calculations in the usage.
Maximum number of calls to process across all traces. Acts as a safety limit to prevent unbounded memory usage.
Was this page helpful?
⌘I