> ## Documentation Index
> Fetch the complete documentation index at: https://narev.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# CreateAmazonBedrockV3Middleware

[**@ai-billing/amazon-bedrock**](../index)

***

[@ai-billing/amazon-bedrock](/docs/sdk/ai-billing/reference/amazon-bedrock/typedoc/index) / createAmazonBedrockV3Middleware

# Function: createAmazonBedrockV3Middleware()

> **createAmazonBedrockV3Middleware**\<`TTags`>(`options`): `LanguageModelV3Middleware`

Defined in: [amazon-bedrock/src/ai-sdk/language-model-middleware/v3/language-model-v3-amazon-bedrock-billing-middleware.ts:93](https://github.com/narevai/ai-billing/blob/main/packages/amazon-bedrock/src/ai-sdk/language-model-middleware/v3/language-model-v3-amazon-bedrock-billing-middleware.ts#L93)

Creates a V3 billing middleware for the Amazon Bedrock provider (`@ai-sdk/amazon-bedrock`).
Bills the full `inputTokens` at the prompt rate and adds cache-read/cache-write cost on top — Bedrock's
Converse API reports `inputTokens` excluding cached tokens, unlike providers whose prompt-token count
already includes them.

## Type Parameters

### TTags

`TTags` *extends* `JSONObject`

The shape of the tags object, extending DefaultTags.

## Parameters

### options

[`AmazonBedrockV3MiddlewareOptions`](/docs/sdk/ai-billing/reference/amazon-bedrock/typedoc/interfaces/AmazonBedrockV3MiddlewareOptions)\<`TTags`>

Billing options; see [AmazonBedrockV3MiddlewareOptions](/docs/sdk/ai-billing/reference/amazon-bedrock/typedoc/interfaces/AmazonBedrockV3MiddlewareOptions). A `priceResolver` is
required.

## Returns

`LanguageModelV3Middleware`

A V3 billing middleware instance for Amazon Bedrock.

## Example

```ts theme={null}
import { createAmazonBedrock } from '@ai-sdk/amazon-bedrock';
import { wrapLanguageModel } from 'ai';
import { createAmazonBedrockV3Middleware } from '@ai-billing/amazon-bedrock';
import {
  consoleDestination,
  createObjectPriceResolver,
  type ModelPricing,
} from '@ai-billing/core';

const amazonBedrock = createAmazonBedrock({
  region: process.env.AWS_REGION,
});

const customPricingMap: Record<string, ModelPricing> = {
  'us.amazon.nova-lite-v1:0': {
    promptTokens: 0.06 / 1_000_000,
    completionTokens: 0.24 / 1_000_000,
  },
};

const priceResolver = createObjectPriceResolver(customPricingMap);

const billingMiddleware = createAmazonBedrockV3Middleware({
  destinations: [consoleDestination()],
  priceResolver,
});

const wrappedModel = wrapLanguageModel({
  model: amazonBedrock('us.amazon.nova-lite-v1:0'),
  middleware: billingMiddleware,
});
```
