Get a conversation credit attribution
curl --request GET \
--url https://dust.tt/api/w/{wId}/assistant/conversations/{cId}/consumption \
--header 'Authorization: Bearer <token>'import requests
url = "https://dust.tt/api/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/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/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/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/w/{wId}/assistant/conversations/{cId}/consumption")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://dust.tt/api/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
}
]
}
]
}
}Private Conversations
Get a conversation credit attribution
Returns the latest stable credits billed for completed messages belonging directly to a conversation, plus an additive attribution reconciled exclusively through model input rows. In-progress messages are included after they reach a terminal state.
GET
/
api
/
w
/
{wId}
/
assistant
/
conversations
/
{cId}
/
consumption
Get a conversation credit attribution
curl --request GET \
--url https://dust.tt/api/w/{wId}/assistant/conversations/{cId}/consumption \
--header 'Authorization: Bearer <token>'import requests
url = "https://dust.tt/api/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/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/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/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/w/{wId}/assistant/conversations/{cId}/consumption")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://dust.tt/api/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 credit attribution
Latest stable credits billed across completed messages belonging directly to the conversation.
Additive attribution reconciled to the authoritative bill exclusively through model input rows. Each message uses its newest complete stored attribution version. Null when any billed message has no complete stored attribution.
Show child attributes
Show child attributes
⌘I