Bedrock spend control
How do I keep Amazon Bedrock spend under control?
Amazon Bedrock does not have a native spending limit or hard budget cap that automatically turns off inference when you hit a dollar threshold. Pricing is dependent on the modality, provider, and model, which means a single runaway loop or leaked credential will keep running up charges on your AWS bill until you step in.
If you want to keep costs predictable, you have to combine tier choices like batch inference (priced 50% lower than on-demand inference) with active monitoring and IAM deny policies that cut off API access when costs cross your target line. Cohere Rerank 3.5, for instance, costs $2.00 per 1,000 queries on-demand, and small per-unit charges like that add up fast if you let scripts query endpoints without boundaries.
How Amazon Bedrock billing works
Bedrock charges for what you invoke. It supports Standard, Flex, Priority, and Reserved service tiers across its model catalog. For models supporting Priority and Flex tiers (such as Google, MiniMax AI, Mistral AI, Moonshot AI, NVIDIA, OpenAI, Qwen, and Z AI), Priority tier pricing is at a 75% premium to Standard tier pricing and Flex tier pricing is at a 50% discount to Standard tier pricing.
In addition to basic model calls, Bedrock adds distinct meters for specialized features:
- Prompt utilities: Intelligent Prompt Routing costs $1 per 1,000 requests on-demand. Simple Prompt Optimizer runs at $0.03 per 1,000 tokens for input prompt tokens and resulting optimized prompts.
- Knowledge Bases: Index Storage on Managed Knowledge Base runs $5.00 per GB of raw data per month. Multimodal Document Parsing and Embeddings Generation are $0, while Standard Retrieval via the Retrieve API costs $1.00 per 1,000 API calls. If you use Agentic Retrieval with managed LLM planning, it costs $4.00 per 1,000 Agentic Retrieve API calls plus $1.00 per 1,000 underlying Retrieve API calls.
- Guardrails: Evaluated text is measured in text units of up to 1,000 characters (an input with 5,600 characters is billed as 6 text units). Standard and classic text content filters cost $0.15 per 1,000 text units, denied topics cost $0.15 per 1,000 text units, and image filters are $0.00075 per image. Word filters and regex sensitive information filters are free, but standard sensitive information filters and contextual grounding checks run $0.10 per 1,000 text units, and Automated Reasoning checks cost $0.17 per 1,000 text units per policy.
- Model Evaluation: Algorithmic scores generated automatically cost nothing beyond base model inference. But human-based evaluation with your own workstream adds $0.21 per completed human task on top of inference.
Custom Nova models bill on-demand inference at the same rate as base Amazon Nova inference. Cache read pricing for Claude Sonnet 5.5 was reduced by 50% from the prior rate starting October 7, 2026.
| Bedrock feature or tier | Pricing structure | Billing detail |
|---|---|---|
| Priority tier | 75% premium to Standard | Applies to supported models like OpenAI, Qwen, and Mistral AI |
| Flex tier | 50% discount to Standard | Lower-cost tier for supported third-party models |
| Batch inference | 50% lower than on-demand | Available for select FMs from Anthropic, Meta, Mistral AI, and Amazon |
| Cohere Rerank 3.5 | $2.00 per 1,000 queries | Max 100 chunks per query; max 500 tokens per chunk |
| Managed Knowledge Base Index | $5.00 per GB raw data / month | Document parsing and vector embeddings are $0 |
| Standard Retrieval API | $1.00 per 1,000 API calls | Hybrid search over indexed knowledge base content |
| Simple Prompt Optimizer | $0.03 per 1,000 tokens | Billed on total input prompt tokens and optimized outputs |
| Guardrails content filters | $0.15 per 1,000 text units | 1 text unit = up to 1,000 characters; image filter is $0.00075 / image |
Does Amazon Bedrock have a spending limit?
No. There is no setting in the Amazon Bedrock console or API where you can specify a maximum monthly dollar limit for your account.
AWS Budgets lets you track costs against a target, but it doesn't stop Bedrock calls out of the box. You have to configure an AWS Budgets action. Budget actions run automatically or after manual approval when cost or usage passes your threshold, and your options are applying an IAM policy, applying a service control policy (SCP) from your management account, or targeting EC2 or RDS instances. If you want a budget alert to stop Bedrock, you must attach a custom Deny IAM policy to the role or user issuing your requests. For an account-level overview of limits, see our guide on whether you can set a hard spending limit on AWS.
Blocking Bedrock access with IAM deny policies
Because AWS evaluates an explicit Deny ahead of any Allow, attaching a deny policy to a role or user shuts down inference instantly. The runtime endpoint (bedrock-runtime.{{region}}.amazonaws.com) handles Converse, ConverseStream, InvokeModel, and InvokeModelWithResponseStream.
To kill active inference, agent planning, and API key bearer tokens across the board, you can apply a policy like this:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CostbrakeDenyBedrockInference",
"Effect": "Deny",
"Action": [
"bedrock:Invoke*",
"bedrock:CreateModelInvocationJob",
"bedrock:RetrieveAndGenerate",
"bedrock:Rerank",
"bedrock:ApplyGuardrail",
"bedrock:OptimizePrompt",
"bedrock:AgenticRetrieveStream",
"bedrock:GenerateQuery",
"bedrock:CallWithBearerToken",
"bedrock-mantle:CreateInference",
"bedrock-mantle:CallWithBearerToken"
],
"Resource": "*"
}
]
}This cuts off access immediately. Once attached, every subsequent inference call fails with an authorization error.
Managing Bedrock API key risks
Amazon Bedrock API keys allow you to authenticate API requests using a bearer token instead of standard AWS credentials (either by setting the AWS_BEARER_TOKEN_BEDROCK environment variable or by passing Authorization: Bearer ). This makes integration simple, but bearer tokens create extra cost exposure if they leak into public repositories or client-side bundles.
Bedrock provides two distinct types of keys:
- Short-term API keys: These last up to 12 hours or the duration of your session, whichever is shorter. They inherit permissions from the IAM principal used to generate them and are recommended for production use. You generate them in the Bedrock console under API keys > Short-term API keys > Generate short-term API keys.
- Long-term API keys: These last until a configured expiration date. Creating one creates an underlying IAM user with attached policies. Long-term keys are recommended only for exploration.
A long-term key works only in the Region where it was generated; passing it to an endpoint in another Region fails with Credential should be scoped to a valid region. All Bedrock API calls get logged in AWS CloudTrail, but API keys are passed as authorization headers and are not logged in the request events.
To revoke or secure keys when spend spikes unexpectedly:
- Deactivate or delete a long-term key: In the AWS CLI, run
aws iam update-service-specific-credential --user-name bedrock-api-user --service-specific-credential-id --status Inactive. To wipe it completely, runaws iam delete-service-specific-credential --user-name bedrock-api-user --service-specific-credential-id. - Lock down short-term keys: Invalidate the underlying IAM session used to create the token, or attach an IAM policy denying
bedrock:CallWithBearerTokenandbedrock-mantle:CallWithBearerToken. - Block API keys for an identity entirely: Deny
bedrock:CallWithBearerTokenandbedrock-mantle:CallWithBearerTokenonResource: *. You can also govern key generation usingiam:CreateServiceSpecificCredentialalongside theiam:ServiceSpecificCredentialAgeDayscondition key (such as capping age at 90 days) andiam:ServiceSpecificCredentialServiceNameset tobedrock.amazonaws.com.
If a token is exposed, follow the steps in what to do in the first hour after an API key leaks.
Monitoring tokens and imported models before bills settle
Waiting for AWS Cost Explorer to spot a spend spike leaves you exposed, because Cost Explorer runs up to a day behind. You can catch high volume much sooner by tracking CloudWatch metrics for your runtime endpoints.
If you import your own models via Custom Model Import, watch your scaling parameters. Custom Model Import for models like Llama, Mistral, and Qwen using Custom Model Unit v1.0 runs $0.05718 per minute in US East (N. Virginia) and US West (Oregon), $0.07144 per minute in Europe (Frankfurt), and monthly storage is $1.95 per Custom Model Unit. For OpenAI models using Custom Model Unit v2.0 in US East (N. Virginia) and US West (Oregon), the rate is $0.1433 per minute with monthly storage of $1.95 per Custom Model Unit.
Inference on imported models bills in 5-minute windows for the duration a model copy remains active, starting from the first successful invocation. If there are no invocations for a 5-minute period, Bedrock scales the model copies down to zero. Keep in mind that Bedrock has a default maximum of 3 model copies per account per imported model (which can be increased via Service Quotas), so concurrent traffic spikes will scale up instances and run up per-minute unit charges quickly.
Automating guardrails with Costbrake
Watching CloudWatch dashboards manually works until someone forgets to check before leaving for the weekend.
Costbrake monitors what you spend across 23 cloud, AI, and SaaS providers - including AWS, OpenAI, Anthropic, and Google Cloud - alerting you to sudden billing surges before month-end. You can see how other platforms compare in our guide on monitoring spend across AI APIs in one place. With the CloudWatch read permission, Costbrake estimates Bedrock tokens per model on every check: hourly on the Free plan ($0 for 2 connections and 3 budgets), every 5 minutes on Pro ($12 a month or $120 a year) and Team ($39 a month or $390 a year), and every minute during a spike. If an hour costs more than 3x your 7-day baseline and at least $5 more than usual, Costbrake triggers a spike alert via Slack, Discord, email, webhooks, or PagerDuty.
For AWS, Costbrake reads Cost Explorer plus live CloudWatch metrics (reading Bedrock tokens per model at us-east-1 list prices). On Pro and Team plans, Costbrake includes opt-in, reversible brakes. An admin must click and confirm; Costbrake never brakes on its own. For Bedrock, the brake attaches the CostbrakeBedrockDeny policy to your chosen IAM role or user within seconds, stopping runtime requests without deleting anything. To connect your environment, tell your AI coding agent to handle agent setup.
Questions and answers
Does Amazon Bedrock have a spending limit?
No, Amazon Bedrock does not offer a native hard spending cap. You have to monitor usage through CloudWatch or AWS Budgets and attach an IAM Deny policy to your principals to stop inference calls.
How is Amazon Bedrock billed?
Pricing depends on the modality, provider, and model you choose, charged on-demand per token, query, or unit. Ancillary features like Guardrails, Knowledge Base retrieval, and prompt optimization are billed on separate per-request or character-unit meters.
How do I block Bedrock access for an IAM user or role?
Attach an IAM policy with an explicit Deny on actions like bedrock:Invoke, bedrock:CallWithBearerToken, and bedrock-mantle:CallWithBearerToken. An explicit Deny overrides all Allow permissions immediately.
What are Bedrock API keys?
They are bearer tokens that let you authenticate Bedrock API calls without standard AWS credential signatures. Short-term keys last up to 12 hours and inherit their permissions from an IAM principal, while long-term keys map to a dedicated IAM user and expire on a configured date.
How do I lower inference costs on Bedrock without changing models?
Use batch inference for workloads that do not need real-time streaming, which is priced 50% lower than on-demand pricing for select models from Anthropic, Meta, Mistral AI, and Amazon. You can also use the Flex tier for supported models to get a 50% discount against Standard tier pricing.
Sources
Updated