Skip to main content

Capabilities

The DIAL Bedrock Adapter does more than call Bedrock models: it picks the right Claude integration, applies Bedrock guardrails and latency modes, caches prompts, balances models across AWS accounts, reaches Claude through the Anthropic API, and speaks the native Anthropic Messages API. This reference describes each capability and the DIAL Core settings behind it. It is for platform engineers who tune Bedrock models in DIAL; it assumes you know Supported models.

Claude clients​

The adapter reaches Claude on Bedrock through one of three integrations, chosen by AWS_CLAUDE_DEFAULT_CLIENT or per upstream by extraData.claude_client:

ClientIntegration
legacy (default)The legacy Amazon Bedrock integration for Claude
mantleThe current Claude in Amazon Bedrock integration, which Anthropic recommends for new setups. It counts prompt tokens exactly, and needs the bedrock-mantle:CountTokens IAM permission.
converseThe Bedrock Converse API

Configurable models​

Models take extra settings in custom_fields.configuration of the chat request; GET /openai/deployments/<model id>/configuration returns the JSON Schema.

ModelsSettingEffect
Converse API modelsperformanceConfig.latencystandard, or optimized for Bedrock's latency-optimized mode, where the model supports it
Converse API modelsguardrailConfigApplies a Bedrock guardrail to the request
ClaudeExtended thinking, reasoning level, beta flags, citationsSee the Anthropic adapter
Stability AIaspect_ratio, negative_promptImage shape, from 16:9 to 9:21, and a negative prompt

Bedrock guardrails​

{
"messages": [{ "role": "user", "content": "hello" }],
"custom_fields": {
"configuration": {
"guardrailConfig": {
"guardrailIdentifier": "<GUARDRAIL_ID>",
"guardrailVersion": "<VERSION>",
"streamProcessingMode": "sync",
"trace": "enabled"
}
}
}
}
  • The object matches the Converse API's GuardrailStreamConfiguration.
  • When the guardrail intervenes, the adapter answers with an error of code content_filter. The guardrail's trace is not attached, and evaluating only part of the request is not supported.
  • Claude uses the Anthropic SDK by default. A Converse API setting, such as performanceConfig or guardrailConfig, switches the request to the Converse API, which drops tool_choice=none and the Claude configuration.

For guardrails that DIAL applies to every model, see Guardrails.

Prompt caching​

KindModelsHow to turn it on
ManualConverse API models and Claude 3 models that support cachingSet features.cacheSupported: true on the DIAL Core model, and mark cache breakpoints in tools or messages with custom_fields.cache_breakpoint.
AutomaticClaude through the Anthropic API onlySet features.autoCachingSupported: true, and optionally preset a top-level breakpoint in defaults.
{
"role": "system",
"content": "<LONG_SYSTEM_PROMPT>",
"custom_fields": { "cache_breakpoint": {} }
}

With caching on, endpoint becomes a required identifier of each upstream; any unique values work, such as "1" and "2". Check the Bedrock prompt caching model list first.

Accounts, regions, and load balancing​

Each upstream of a model can carry its own AWS account, role, region, and Claude client in extraData, so DIAL Core can balance one model across them:

"upstreams": [
{
"extraData": {
"region": "eu-west-1",
"claude_client": "mantle",
"aws_access_key_id": "<KEY_ID_1>",
"aws_secret_access_key": "<SECRET_1>"
}
},
{
"extraData": {
"region": "us-east-1",
"aws_assume_role_arn": "arn:aws:iam::123456789012:role/BedrockAccessAdapterRoleName"
}
}
]
extraData fieldOverrides
regionAWS_DEFAULT_REGION
claude_clientAWS_CLAUDE_DEFAULT_CLIENT
aws_access_key_id, aws_secret_access_key, aws_session_tokenAWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN
aws_assume_role_arnAWS_ASSUME_ROLE_ARN

See Load balancing and upstreams for how Core picks an upstream.

Claude through the Anthropic API​

An upstream with a key sends Claude requests to the Anthropic API at https://api.anthropic.com/v1/messages instead of Bedrock. Because the adapter knows Claude by its Bedrock ID, map the Claude API model name to it with compatible_model_id:

"<DIAL_MODEL_ID>": {
"type": "chat",
"endpoint": "<ADAPTER>/openai/deployments/claude-sonnet-4-5-20250929/chat/completions",
"upstreams": [
{
"key": "<ANTHROPIC_API_KEY>",
"extraData": { "compatible_model_id": "anthropic.claude-sonnet-4-5-20250929-v1:0" }
}
]
}

Without the mapping, the adapter answers 404. Bedrock and Anthropic API upstreams can sit side by side on one model.

Compatibility mode​

When Bedrock releases a model version the adapter does not know yet, serve it through a known, compatible model. Set compatible_model_id on every upstream of the DIAL Core model:

"<DIAL_MODEL_ID>": {
"type": "chat",
"endpoint": "<ADAPTER>/openai/deployments/<NEW_BEDROCK_MODEL_ID>/chat/completions",
"upstreams": [
{ "extraData": { "compatible_model_id": "<SUPPORTED_BEDROCK_MODEL_ID>" } }
]
}

The request is processed as for the supported model, but sent to Bedrock with the new ID. Features only the new model has, such as a new input type, do not work until the adapter supports it natively. A mapping between models with different APIs, such as a chat and an image model, has no effect. The older COMPATIBILITY_MAPPING variable is deprecated in favor of this setting.

Anthropic Messages passthrough​

The adapter serves the native Claude API at /anthropic, so clients built on the Anthropic SDK, such as Claude Code, reach Claude on Bedrock without an Anthropic API key. Requests carry Bedrock model names, including cross-region ones, not Claude API aliases. Endpoints Bedrock does not implement answer 404. To use Claude Code through DIAL, see Claude Code.

Anthropic Messages to Chat Completions translator​

The translator lets an Anthropic-native client use a model that speaks only Chat Completions, such as a GPT model. It takes an Anthropic Messages request at /openaiChatCompletions/anthropic/v1/messages, converts it, sends it back to DIAL Core at <DIAL_URL>/openai/v1/chat/completions, and converts the answer back. It never calls Bedrock, and it needs DIAL_URL.

"gpt-5.5": {
"type": "chat",
"interfaces": {
"openaiChatCompletions": { "base_url": "<OPENAI_ADAPTER>" },
"anthropicMessages": { "base_url": "<BEDROCK_ADAPTER>/openaiChatCompletions" }
},
"upstreams": [
{ "endpoint": "https://api.openai.com/v1/chat/completions", "key": "<OPENAI_API_KEY>" }
]
}
  • /openaiChatCompletions/legacy calls Core's per-deployment endpoint instead, with the api-version from DIAL_API_VERSION.
  • Text, images, documents, search results, and custom function tools translate. Provider tools, such as web search, are sent as DIAL static functions. Files API sources and document URLs answer 400, and token counting is not supported.

The full mapping is in the translation guide. For how DIAL Core routes translated APIs, see Translators.

Further reading​