curl --request GET \
--url https://dust.tt/api/v1/w/{wId}/assistant/conversations/{cId}/consumption \
--header 'Authorization: Bearer <token>'import requests
url = "https://dust.tt/api/v1/w/{wId}/assistant/conversations/{cId}/consumption"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://dust.tt/api/v1/w/{wId}/assistant/conversations/{cId}/consumption', 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://dust.tt/api/v1/w/{wId}/assistant/conversations/{cId}/consumption",
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://dust.tt/api/v1/w/{wId}/assistant/conversations/{cId}/consumption"
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://dust.tt/api/v1/w/{wId}/assistant/conversations/{cId}/consumption")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://dust.tt/api/v1/w/{wId}/assistant/conversations/{cId}/consumption")
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{
"billedCredits": 123,
"details": {
"agentWorkCredits": 123,
"tools": [
{
"label": "<string>",
"internalMCPServerName": "<string>",
"toolName": "<string>",
"callCount": 123,
"attributedCredits": 123,
"directCredits": 123,
"pending": true
}
],
"models": [
{
"providerId": "<string>",
"modelId": "<string>",
"displayName": "<string>",
"attributedCredits": 123
}
],
"agents": [
{
"agentId": "<string>",
"name": "<string>",
"pictureUrl": "<string>",
"billedCredits": 123,
"agentWorkCredits": 123,
"tools": [
{
"label": "<string>",
"internalMCPServerName": "<string>",
"toolName": "<string>",
"callCount": 123,
"attributedCredits": 123,
"directCredits": 123,
"pending": true
}
],
"models": [
{
"providerId": "<string>",
"modelId": "<string>",
"displayName": "<string>",
"attributedCredits": 123
}
]
}
]
}
}Get conversation consumption
Get the same credit breakdown as the conversation consumption view for a conversation the caller can read. Returns stable billed credits for terminal agent messages, including superseded message versions and accessible recursively spawned run-agent conversations. In-progress messages are excluded until they reach a terminal state.
Details use each billed message’s newest complete stored attribution. They are null when no messages have positive billed credits or any billed message lacks complete attribution. Agent work and tool attributions partition the bill. Models and agents are alternative groupings of that bill, not additional charges. This endpoint does not return token counts or a cached-versus-uncached input breakdown.
curl --request GET \
--url https://dust.tt/api/v1/w/{wId}/assistant/conversations/{cId}/consumption \
--header 'Authorization: Bearer <token>'import requests
url = "https://dust.tt/api/v1/w/{wId}/assistant/conversations/{cId}/consumption"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://dust.tt/api/v1/w/{wId}/assistant/conversations/{cId}/consumption', 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://dust.tt/api/v1/w/{wId}/assistant/conversations/{cId}/consumption",
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://dust.tt/api/v1/w/{wId}/assistant/conversations/{cId}/consumption"
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://dust.tt/api/v1/w/{wId}/assistant/conversations/{cId}/consumption")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://dust.tt/api/v1/w/{wId}/assistant/conversations/{cId}/consumption")
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{
"billedCredits": 123,
"details": {
"agentWorkCredits": 123,
"tools": [
{
"label": "<string>",
"internalMCPServerName": "<string>",
"toolName": "<string>",
"callCount": 123,
"attributedCredits": 123,
"directCredits": 123,
"pending": true
}
],
"models": [
{
"providerId": "<string>",
"modelId": "<string>",
"displayName": "<string>",
"attributedCredits": 123
}
],
"agents": [
{
"agentId": "<string>",
"name": "<string>",
"pictureUrl": "<string>",
"billedCredits": 123,
"agentWorkCredits": 123,
"tools": [
{
"label": "<string>",
"internalMCPServerName": "<string>",
"toolName": "<string>",
"callCount": 123,
"attributedCredits": 123,
"directCredits": 123,
"pending": true
}
],
"models": [
{
"providerId": "<string>",
"modelId": "<string>",
"displayName": "<string>",
"attributedCredits": 123
}
]
}
]
}
}Authorizations
Your DUST API key is a Bearer token.
Response
Conversation consumption retrieved successfully.
Stable billed Dust credits for terminal agent messages in the conversation and its accessible run-agent descendants, including superseded message versions.
Null when no messages have positive billed credits or any billed message lacks complete attribution.
Show child attributes
Show child attributes