Message-Tokens zählen
Schätzt die Anzahl der Input-Tokens eines Messages-Requests, ohne etwas zu generieren (und ohne Kosten). Akzeptiert denselben Body wie /anthropic/v1/messages, wobei max_tokens optional ist.
Anders als Anthropics natives Endpoint ruft dies nie den Tokenizer des zugrundeliegenden Providers auf: Die Zählung ist eine lokale, modellbezogene Näherung — für jedes Modell, auch Claude. Es existiert, damit Anthropic-SDK-Clients, die auf count_tokens angewiesen sind (etwa die Restkontext-Anzeige von Claude Code), weiter funktionieren; nicht für exakte Abrechnungsberechnungen verwenden. Es erzwingt dieselben Modell-Berechtigungen pro API-Key wie die Message-Erstellung.
https://api.deutschlandgpt.de/anthropic/v1/messages/count_tokensBeispielaufruf
curl https://api.deutschlandgpt.de/anthropic/v1/messages/count_tokens \
-X POST \
-H "Authorization: Bearer $DGPT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-4.5-sonnet",
"max_tokens": 0,
"messages": [
{
"role": "user",
"content": "string"
}
],
"system": "string",
"tools": [
{
"name": "string"
}
],
"tool_choice": {
"type": "auto"
},
"temperature": 0,
"top_p": 0,
"top_k": 0,
"stop_sequences": [
"string"
],
"stream": false,
"thinking": {
"type": "enabled",
"budget_tokens": 0
},
"metadata": {},
"service_tier": "string"
}'curl https://api.deutschlandgpt.de/anthropic/v1/messages/count_tokens \
-X POST \
-H "Authorization: Bearer $DGPT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-4.5-sonnet",
"max_tokens": 0,
"messages": [
{
"role": "user",
"content": "string"
}
],
"system": "string",
"tools": [
{
"name": "string"
}
],
"tool_choice": {
"type": "auto"
},
"temperature": 0,
"top_p": 0,
"top_k": 0,
"stop_sequences": [
"string"
],
"stream": false,
"thinking": {
"type": "enabled",
"budget_tokens": 0
},
"metadata": {},
"service_tier": "string"
}'import os, requests
response = requests.post(
"https://api.deutschlandgpt.de/anthropic/v1/messages/count_tokens",
headers={"Authorization": f"Bearer {os.environ['DGPT_API_KEY']}"},
json={
"model": "claude-4.5-sonnet",
"max_tokens": 0,
"messages": [
{
"role": "user",
"content": "string"
}
],
"system": "string",
"tools": [
{
"name": "string"
}
],
"tool_choice": {
"type": "auto"
},
"temperature": 0,
"top_p": 0,
"top_k": 0,
"stop_sequences": [
"string"
],
"stream": False,
"thinking": {
"type": "enabled",
"budget_tokens": 0
},
"metadata": {},
"service_tier": "string"
},
)
print(response.json())import os, requests
response = requests.post(
"https://api.deutschlandgpt.de/anthropic/v1/messages/count_tokens",
headers={"Authorization": f"Bearer {os.environ['DGPT_API_KEY']}"},
json={
"model": "claude-4.5-sonnet",
"max_tokens": 0,
"messages": [
{
"role": "user",
"content": "string"
}
],
"system": "string",
"tools": [
{
"name": "string"
}
],
"tool_choice": {
"type": "auto"
},
"temperature": 0,
"top_p": 0,
"top_k": 0,
"stop_sequences": [
"string"
],
"stream": False,
"thinking": {
"type": "enabled",
"budget_tokens": 0
},
"metadata": {},
"service_tier": "string"
},
)
print(response.json())const response = await fetch('https://api.deutschlandgpt.de/anthropic/v1/messages/count_tokens', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.DGPT_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"model": "claude-4.5-sonnet",
"max_tokens": 0,
"messages": [
{
"role": "user",
"content": "string"
}
],
"system": "string",
"tools": [
{
"name": "string"
}
],
"tool_choice": {
"type": "auto"
},
"temperature": 0,
"top_p": 0,
"top_k": 0,
"stop_sequences": [
"string"
],
"stream": false,
"thinking": {
"type": "enabled",
"budget_tokens": 0
},
"metadata": {},
"service_tier": "string"
}),
});
console.log(await response.json());const response = await fetch('https://api.deutschlandgpt.de/anthropic/v1/messages/count_tokens', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.DGPT_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"model": "claude-4.5-sonnet",
"max_tokens": 0,
"messages": [
{
"role": "user",
"content": "string"
}
],
"system": "string",
"tools": [
{
"name": "string"
}
],
"tool_choice": {
"type": "auto"
},
"temperature": 0,
"top_p": 0,
"top_k": 0,
"stop_sequences": [
"string"
],
"stream": false,
"thinking": {
"type": "enabled",
"budget_tokens": 0
},
"metadata": {},
"service_tier": "string"
}),
});
console.log(await response.json());Anfrage-Body
modelstringerforderlichRegistry-Modellname (z. B. claude-4.5-sonnet, gpt-4o, mistral-large). Jedes gehostete Modell ist über dieses Endpoint erreichbar — nicht nur Claude. Verfügbare Modelle mit /anthropic/v1/models aufzählen.
max_tokensintegeroptionalMaximale Anzahl zu generierender Tokens. Pflichtfeld (anders als bei den OpenAI-kompatiblen Endpoints).
messagesAnthropicMessage[]erforderlichAbwechselnde user- / assistant-Turns. Systemanweisungen gehören in das Top-Level-Feld system, nicht hierher.
rolestringerforderlichcontentstring | AnthropicContentBlock[]erforderlichEin einfacher String (Kurzform für einen Textblock) oder eine Liste von Content-Blocks.
systemstring | AnthropicTextBlock[]optionalSystem-Prompt: ein einfacher String oder eine Liste von Textblöcken (jeder Block kann einen cache_control-Breakpoint tragen).
toolsAnthropicTool[]optionalEigene Tools, die das Modell aufrufen darf. Geben Sie jedes tool_use-Ergebnis in einer folgenden user-Message als tool_result-Block zurück.
typestringoptionalWeglassen oder custom. Andere Werte kennzeichnen nicht unterstützte Server-Tools.
namestringerforderlichdescriptionstringoptionalWas das Tool tut — das Modell entscheidet damit, wann es aufgerufen wird.
input_schemaobjectoptionalJSON Schema der Tool-Argumente.
cache_controlAnthropicCacheControloptionalPrompt-Caching-Breakpoint. Wirksam, wenn der Request von einem Anthropic-Host bedient wird; für andere Provider ein No-op.
typestringerforderlichttlstringoptionalCache-Lebensdauer (TTL).
tool_choiceAnthropicToolChoiceoptionalWie das Modell die bereitgestellten Tools verwenden soll.
temperaturenumberoptionalSampling-Temperatur. Höher = zufälligere Ausgabe.
top_pnumberoptionalNucleus-Sampling.
top_knumberoptionalNur aus den Top-K-Optionen pro Token samplen.
stop_sequencesstring[]optionalEigene Sequenzen, die die Generierung stoppen.
streambooleanoptionalWenn true, wird mit Server-Sent Events im Anthropic-Streaming-Format geantwortet: message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop.
thinkingAnthropicThinkingConfigoptionalExtended-Thinking-Konfiguration. Wird auf die entsprechenden Reasoning-Optionen des Providers abgebildet, der das gewählte Modell hostet.
metadataobjectoptionalRequest-Metadaten.
user_idstring | nulloptionalOpaker Endnutzer-Identifikator.
service_tierstringoptionalWird akzeptiert, aber ignoriert — das Routing wird serverseitig entschieden.
Antwort
{
"input_tokens": 2095
}{
"input_tokens": 2095
}Die geschätzte Anzahl der Input-Tokens.
input_tokensintegererforderlichStatuscodes
Die geschätzte Anzahl der Input-Tokens.
objectUngültiger Request-Body.
AnthropicErrorFehlender oder ungültiger API-Key.
AnthropicErrorModell nicht gefunden, oder der API-Key hat keinen Zugriff darauf.
AnthropicError