DIAL Bedrock Adapter
The standalone DIAL OpenAI, Bedrock, and Vertex AI adapters will be deprecated soon. Use DIAL Model Provider instead: it combines these three adapters in one service, and serves this adapter under /compat/bedrock. To move your models, see Migrate from the standalone adapters.
The DIAL Bedrock Adapter connects DIAL Core to the chat, image, and embedding models of Amazon Bedrock: Anthropic Claude, Amazon Nova and Titan, Meta Llama, Mistral, DeepSeek, Stability AI, Cohere, and others. It also reaches Claude through the Anthropic API, serves the native Anthropic Messages API for Claude Code, and can translate Anthropic Messages requests for models that speak only Chat Completions. This page is for platform engineers who connect Bedrock models to DIAL.
How it works
- A fixed list of models. The adapter serves the models it knows, by their Bedrock model IDs, such as
anthropic.claude-sonnet-4-5-20250929-v1:0. Any other ID answers404, until you map it to a supported model with compatibility mode. See Supported models. - Three implementations. Depending on the model, the adapter calls the Bedrock Converse API, the original Bedrock API, or the Anthropic SDK, which gives finer control over Claude.
- Credentials. AWS credentials and the region come from the adapter's environment variables, or per upstream from
extraDatain DIAL Core, so one model can span several AWS accounts and regions.
DIAL APIs it serves
| API | Adapter endpoint |
|---|---|
| Chat Completions | POST /openai/deployments/<model id>/chat/completions |
| Embeddings | POST /openai/deployments/<model id>/embeddings |
| Tokenize | POST /openai/deployments/<model id>/tokenize |
| Truncate prompt | POST /openai/deployments/<model id>/truncate_prompt |
| Configuration | GET /openai/deployments/<model id>/configuration |
| Anthropic Messages passthrough | /anthropic/v1/messages and the other Claude API endpoints Bedrock implements |
| Anthropic Messages to Chat Completions translator | POST /openaiChatCompletions/anthropic/v1/messages |
Which models support /tokenize, /truncate_prompt, tools, and /configuration is in Supported models.
Base configuration
From ai-dial-samples. The adapter service in Docker Compose, with AWS credentials from the environment:
adapter-dial-bedrock:
image: epam/ai-dial-adapter-bedrock:0.45.0
environment:
DIAL_URL: http://core:8080
LOG_LEVEL: INFO
AWS_DEFAULT_REGION: us-east-1
AWS_ACCESS_KEY_ID: <AWS_ACCESS_KEY_ID>
AWS_SECRET_ACCESS_KEY: <AWS_SECRET_ACCESS_KEY>
A Claude model in the DIAL Core configuration. The adapter URL carries the Bedrock model ID, and the model needs no upstream URL:
{
"models": {
"claude-sonnet-4": {
"type": "chat",
"displayName": "Claude on Bedrock",
"endpoint": "http://adapter-dial-bedrock:5000/openai/deployments/anthropic.claude-sonnet-4-20250514-v1:0/chat/completions",
"features": { "toolsSupported": true },
"defaults": { "max_tokens": 4096 }
}
}
}
Claude needs max_tokens; set it per model in defaults rather than through CLAUDE_DEFAULT_MAX_TOKENS, and keep it within the model's maximum output.
Deployment
The adapter ships as the epam/ai-dial-adapter-bedrock image. Deploy it with the DIAL Helm charts, or in Docker Compose as above. Grant its AWS identity access to Bedrock; for exact token counting of Claude on the mantle client, it also needs the bedrock-mantle:CountTokens permission. To deploy a model in your AWS account, see Bedrock model deployment.