curl
curl "https://api.signalmd.dev/v1/agents/6f1d2c3b-4a5e-4f60-8b7a-9c0d1e2f3a4b/spend" \
-H "Authorization: Bearer $SIGNAL_API_KEY"import requests
url = "https://api.signalmd.dev/v1/agents/{agentId}/spend"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signalmd.dev/v1/agents/{agentId}/spend', 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.signalmd.dev/v1/agents/{agentId}/spend",
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.signalmd.dev/v1/agents/{agentId}/spend"
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.signalmd.dev/v1/agents/{agentId}/spend")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signalmd.dev/v1/agents/{agentId}/spend")
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{
"object": "spend",
"agentId": "3f1c2d4e-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"period": "month",
"since": "2026-10-02T14:03:07.120Z",
"copilot": {
"inputTokens": 123,
"outputTokens": 123,
"usd": 123
},
"quickChecks": {
"inputTokens": 123,
"outputTokens": 123,
"usd": 123
},
"clientReported": {
"inputTokens": 123,
"outputTokens": 123,
"usd": 123
},
"retell": {
"runs": 123,
"retellUsd": 123,
"signalUsd": 123
},
"totalUsd": 123,
"byGoal": [
{
"goalId": "3f1c2d4e-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"title": "<string>",
"status": "<string>",
"model": {
"inputTokens": 123,
"outputTokens": 123,
"usd": 123,
"bySource": {
"copilot_turn": {
"inputTokens": 123,
"outputTokens": 123,
"usd": 123
},
"client_reported": {
"inputTokens": 123,
"outputTokens": 123,
"usd": 123
},
"quick_check": {
"inputTokens": 123,
"outputTokens": 123,
"usd": 123
}
}
},
"retell": {
"runs": 123,
"retellUsd": 123,
"signalUsd": 123
},
"totalUsd": 123
}
]
}{
"error": {
"type": "not_found_error",
"code": "agent_not_found",
"message": "Agent not found.",
"param": null,
"requestId": "req_8c1f0e2b4a6d9e3f7a5c1b0d"
}
}{
"error": {
"type": "not_found_error",
"code": "agent_not_found",
"message": "Agent not found.",
"param": null,
"requestId": "req_8c1f0e2b4a6d9e3f7a5c1b0d"
}
}{
"error": {
"type": "not_found_error",
"code": "agent_not_found",
"message": "Agent not found.",
"param": null,
"requestId": "req_8c1f0e2b4a6d9e3f7a5c1b0d"
}
}{
"error": {
"type": "not_found_error",
"code": "agent_not_found",
"message": "Agent not found.",
"param": null,
"requestId": "req_8c1f0e2b4a6d9e3f7a5c1b0d"
}
}{
"error": {
"type": "not_found_error",
"code": "agent_not_found",
"message": "Agent not found.",
"param": null,
"requestId": "req_8c1f0e2b4a6d9e3f7a5c1b0d"
}
}{
"error": {
"type": "not_found_error",
"code": "agent_not_found",
"message": "Agent not found.",
"param": null,
"requestId": "req_8c1f0e2b4a6d9e3f7a5c1b0d"
}
}Insights
Get spend
What the copilot, quick checks, clients and simulated runs spent on this agent in a period, and by goal. Reported, never capped per goal.
GET
/
v1
/
agents
/
{agentId}
/
spend
curl
curl "https://api.signalmd.dev/v1/agents/6f1d2c3b-4a5e-4f60-8b7a-9c0d1e2f3a4b/spend" \
-H "Authorization: Bearer $SIGNAL_API_KEY"import requests
url = "https://api.signalmd.dev/v1/agents/{agentId}/spend"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signalmd.dev/v1/agents/{agentId}/spend', 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.signalmd.dev/v1/agents/{agentId}/spend",
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.signalmd.dev/v1/agents/{agentId}/spend"
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.signalmd.dev/v1/agents/{agentId}/spend")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signalmd.dev/v1/agents/{agentId}/spend")
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{
"object": "spend",
"agentId": "3f1c2d4e-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"period": "month",
"since": "2026-10-02T14:03:07.120Z",
"copilot": {
"inputTokens": 123,
"outputTokens": 123,
"usd": 123
},
"quickChecks": {
"inputTokens": 123,
"outputTokens": 123,
"usd": 123
},
"clientReported": {
"inputTokens": 123,
"outputTokens": 123,
"usd": 123
},
"retell": {
"runs": 123,
"retellUsd": 123,
"signalUsd": 123
},
"totalUsd": 123,
"byGoal": [
{
"goalId": "3f1c2d4e-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"title": "<string>",
"status": "<string>",
"model": {
"inputTokens": 123,
"outputTokens": 123,
"usd": 123,
"bySource": {
"copilot_turn": {
"inputTokens": 123,
"outputTokens": 123,
"usd": 123
},
"client_reported": {
"inputTokens": 123,
"outputTokens": 123,
"usd": 123
},
"quick_check": {
"inputTokens": 123,
"outputTokens": 123,
"usd": 123
}
}
},
"retell": {
"runs": 123,
"retellUsd": 123,
"signalUsd": 123
},
"totalUsd": 123
}
]
}{
"error": {
"type": "not_found_error",
"code": "agent_not_found",
"message": "Agent not found.",
"param": null,
"requestId": "req_8c1f0e2b4a6d9e3f7a5c1b0d"
}
}{
"error": {
"type": "not_found_error",
"code": "agent_not_found",
"message": "Agent not found.",
"param": null,
"requestId": "req_8c1f0e2b4a6d9e3f7a5c1b0d"
}
}{
"error": {
"type": "not_found_error",
"code": "agent_not_found",
"message": "Agent not found.",
"param": null,
"requestId": "req_8c1f0e2b4a6d9e3f7a5c1b0d"
}
}{
"error": {
"type": "not_found_error",
"code": "agent_not_found",
"message": "Agent not found.",
"param": null,
"requestId": "req_8c1f0e2b4a6d9e3f7a5c1b0d"
}
}{
"error": {
"type": "not_found_error",
"code": "agent_not_found",
"message": "Agent not found.",
"param": null,
"requestId": "req_8c1f0e2b4a6d9e3f7a5c1b0d"
}
}{
"error": {
"type": "not_found_error",
"code": "agent_not_found",
"message": "Agent not found.",
"param": null,
"requestId": "req_8c1f0e2b4a6d9e3f7a5c1b0d"
}
}Authorizations
An API key (sig_...), or a session token from the web app.
Path Parameters
The agent's id.
Pattern:
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$Example:
"3f1c2d4e-5a6b-4c7d-8e9f-0a1b2c3d4e5f"
Query Parameters
month (default), 30d, 7d or all.
Available options:
month, 30d, 7d, all Response
The spend.
Available options:
spend Pattern:
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$Example:
"3f1c2d4e-5a6b-4c7d-8e9f-0a1b2c3d4e5f"
Available options:
month, 30d, 7d, all Example:
"2026-10-02T14:03:07.120Z"
The in-app copilot's turns on this agent.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
What MCP clients reported for their own model.
Show child attributes
Show child attributes
Simulated runs: the customer's Retell spend and SignalMD's own share.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?