
Anthropic CountTokens
CertifiedCount input tokens for a Claude request
Anthropic CountTokens
Count input tokens for a Claude request
Calls the Anthropic token-count endpoint (POST /v1/messages/count_tokens) with the same rendered messages, system prompt, tools, and model as ChatCompletion. Returns only inputTokens. Does not create a message or call the model. A later task can read {{ outputs.<task-id>.inputTokens }} to gate on cost or context size before ChatCompletion. Refer to the Anthropic Console Settings to create an API key and the Anthropic API documentation for more information.
type: io.kestra.plugin.anthropic.CountTokensExamples
Count tokens using Claude.
id: anthropic_count_tokens
namespace: company.team
tasks:
- id: count_tokens
type: io.kestra.plugin.anthropic.CountTokens
apiKey: "{{ secret('ANTHROPIC_API_KEY') }}"
model: "claude-sonnet-4-6"
messages:
- type: USER
content: "What is the capital of Japan? Answer with a unique word and without any punctuation."
Count tokens with tools
id: anthropic_count_tokens_with_tools
namespace: company.team
tasks:
- id: count_tokens
type: io.kestra.plugin.anthropic.CountTokens
apiKey: "{{ secret('ANTHROPIC_API_KEY') }}"
model: "claude-sonnet-4-6"
messages:
- type: USER
content: |
Extract the following information from this text:
"John Doe is 30 years old and works as a Software Engineer in San Francisco."
tools:
- name: extract_person_info
description: "Extract structured information about a person"
inputSchema:
type: object
properties:
name:
type: string
description: "The person's full name"
age:
type: integer
description: "The person's age"
occupation:
type: string
description: "The person's job title"
location:
type: string
description: "The person's location"
required:
- name
- age
Count tokens, then complete only when the prompt fits.
id: anthropic_count_tokens_before_completion
namespace: company.team
tasks:
- id: count_tokens
type: io.kestra.plugin.anthropic.CountTokens
apiKey: "{{ secret('ANTHROPIC_API_KEY') }}"
model: "claude-sonnet-4-6"
system: "Answer in one word."
messages:
- type: USER
content: "What is the capital of Japan? Answer with a unique word and without any punctuation."
- id: chat_completion
type: io.kestra.plugin.anthropic.ChatCompletion
runIf: "{{ outputs.count_tokens.inputTokens < 8000 }}"
apiKey: "{{ secret('ANTHROPIC_API_KEY') }}"
model: "claude-sonnet-4-6"
maxTokens: 1024
system: "Answer in one word."
messages:
- type: USER
content: "What is the capital of Japan? Answer with a unique word and without any punctuation."
Installation
Our standard Docker images already include this plugin. If you use a -slim image or another setup, install it with the following command:
kestractl plugins get io.kestra.plugin:plugin-anthropic --compatible-for $KESTRA_VERSION For kestractl, use your Kestra version with --compatible-for, or specify an exact plugin version.
For Kestra CLI, replace LATEST with a specific version or version range to pin the plugin version.
Properties
apiKey *string
Anthropic API Key
messages *array
Messages
Ordered chat turns rendered from properties. Include at least one USER message. Content accepts text or TEXT, IMAGE and DOCUMENT blocks, without FILE sources.
io.kestra.plugin.anthropic.ChatCompletion-ChatMessage
Cache control
Optional ephemeral breakpoint applied to the final block of this message.
Message content
Plain text or a list of ContentBlock objects.
ASSISTANTUSERMessage role
model *string
Model
Claude model name used to estimate tokens (e.g., claude-sonnet-4-6); must match an Anthropic model available to your API key.
assets
Assets this task consumes as inputs or produces as outputs, for lineage tracking and the asset graph (Enterprise Edition). A flow declaring this property on a task is rejected in the open-source edition.
io.kestra.core.models.assets.AssetsDeclaration
IGNOREFAILWARNAsset failure behavior
Behavior applied to the task state when a declared asset fails to render, emit, or be persisted (e.g. a lock conflict): FAIL escalates it to FAILED, WARN (default) warns it if it would otherwise succeed, IGNORE leaves the state untouched.
Whether to auto-register assets referenced dynamically at runtime that are not statically declared in inputs or outputs.
The assets consumed as inputs.
io.kestra.core.models.assets.AssetIdentifier
1The assets produced as outputs.
io.kestra.plugin.ee.assets.Dataset
1150{}1150io.kestra.plugin.ee.assets.File
1150{}1150io.kestra.plugin.ee.assets.Table
1150{}1150io.kestra.plugin.ee.assets.VM
1150{}1150io.kestra.core.models.assets.External
1150{}1150io.kestra.core.models.assets.Custom
11501Custom asset type
{}1150baseUrl string
Base URL
Optional Anthropic-compatible endpoint. Defaults to the SDK endpoint. Requests, including the API key, are sent to this host, so set it with forced: true in plugin defaults when the API key comes from there.
connectTimeout string
Connect timeout
Connection timeout as an ISO-8601 duration. Defaults to PT1M, and zero disables it.
maxRetries integerstring
2Maximum retries
SDK retries for transient errors, between 0 and 10. Defaults to 2, and 0 disables them.
readTimeout string
Read timeout
Maximum time for a response as an ISO-8601 duration, both between packets and for the whole call. Defaults to the SDK timeout (PT10M), and zero disables it.
system string
System prompt
Optional system instructions applied to the whole conversation; rendered before the token count.
tools array
Tools
Optional tools included in the estimate; each entry needs a unique name, an optional description, and an inputSchema JSON Schema that defines the parameters the tool accepts. Tools are counted, not invoked.
io.kestra.plugin.anthropic.ChatCompletion-Tool
Cache control
Optional ephemeral cache breakpoint on this tool.
Tool description
Optional description of what the tool does.
Input schema
JSON Schema object defining the expected parameters for the tool.
Tool name
Unique identifier for the tool (1-128 characters).
Outputs
inputTokens integer
Input tokens
Estimated number of input tokens for the given messages, system prompt, and tools.
Metrics
estimate.input.tokens counter
tokenNumber of input tokens estimated for the request.