---
type: api
title: Create an Amazon Bedrock inference endpoint
description: Create an inference endpoint to perform an inference task with the `amazonbedrock` service.
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/operation/operation-inference-put-amazonbedrock
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/operation/operation-inference-put-amazonbedrock
products:
  - Elasticsearch
---

# Create an Amazon Bedrock inference endpoint

Availability: 8.12+

## Paths

- `PUT` `/_inference/{task_type}/{amazonbedrock_inference_id}`

- [Api key auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/authentication#apikeyauth)
- [Basic auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/authentication#basicauth)
- [Bearer auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/authentication#bearerauth)

#### Path Parameters

- `task_type` (enum AmazonBedrockTaskType)
  The type of the inference task that the model will perform.
  Values: `completion`, `text_embedding`
- `amazonbedrock_inference_id` (string Id)
  The unique identifier of the inference endpoint.

## Description

Create an inference endpoint to perform an inference task with the `amazonbedrock` service.

>info
> You need to provide the access and secret keys only once, during the inference model creation. The get inference API does not retrieve your access or secret keys. After creating the inference model, you cannot change the associated key pairs. If you want to use a different access and secret key pair, delete the inference model and recreate it with the same name and the updated keys.

## Required authorization

* Cluster privileges: `manage_inference`

## Query String Parameters

- `timeout` (string Duration · default: 30s)
  Specifies the amount of time to wait for the inference endpoint to be created.

## Request Body

`application/json`

- `chunking_settings` ({} InferenceChunkingSettings) — optional
  The chunking configuration object.
  - `max_chunk_size` (number · default: 250) — optional
    The maximum size of a chunk in words.
This value cannot be higher than `300` or lower than `20` (for `sentence` strategy) or `10` (for `word` strategy).
  - `overlap` (number · default: 100) — optional
    The number of overlapping words for chunks.
It is applicable only to a `word` chunking strategy.
This value cannot be higher than half the `max_chunk_size` value.
  - `sentence_overlap` (number · default: 1) — optional
    The number of overlapping sentences for chunks.
It is applicable only for a `sentence` chunking strategy.
It can be either `1` or `0`.
  - `strategy` (string · default: sentence) — optional
    The chunking strategy: `sentence` or `word`.
- `service` (enum AmazonBedrockServiceType) — required
  The type of service supported for the specified task type. In this case, `amazonbedrock`.
  Values: `amazonbedrock`
- `service_settings` ({} AmazonBedrockServiceSettings) — required
  Settings used to install the inference model. These settings are specific to the `amazonbedrock` service.
  - `access_key` (string) — required
    A valid AWS access key that has permissions to use Amazon Bedrock and access to models for inference requests.
  - `model` (string) — required
    The base model ID or an ARN to a custom model based on a foundational model.
The base model IDs can be found in the Amazon Bedrock documentation.
Note that the model ID must be available for the provider chosen and your IAM user must have access to the model.
  - `provider` (string) — optional
    The model provider for your deployment.
Note that some providers may support only certain task types.
Supported providers include:

* `amazontitan` - available for `text_embedding` and `completion` task types
* `anthropic` - available for `completion` task type only
* `ai21labs` - available for `completion` task type only
* `cohere` - available for `text_embedding` and `completion` task types
* `meta` - available for `completion` task type only
* `mistral` - available for `completion` task type only
  - `region` (string) — required
    The region that your model or ARN is deployed in.
The list of available regions per model can be found in the Amazon Bedrock documentation.
  - `rate_limit` ({} RateLimitSetting) — optional
    This setting helps to minimize the number of rate limit errors returned from Amazon Bedrock.
By default, the `amazonbedrock` service sets the number of requests allowed per minute to 240.
    - `requests_per_minute` (number) — optional
      The number of requests allowed per minute.
  - `secret_key` (string) — required
    A valid AWS secret key that is paired with the `access_key`.
For informationg about creating and managing access and secret keys, refer to the AWS documentation.
- `task_settings` ({} AmazonBedrockTaskSettings) — optional
  Settings to configure the inference task.
These settings are specific to the task type you specified.
  - `max_new_tokens` (number · default: 64) — optional
    For a `completion` task, it sets the maximum number for the output tokens to be generated.
  - `temperature` (number) — optional
    For a `completion` task, it is a number between 0.0 and 1.0 that controls the apparent creativity of the results.
At temperature 0.0 the model is most deterministic, at temperature 1.0 most random.
It should not be used if `top_p` or `top_k` is specified.
  - `top_k` (number) — optional
    For a `completion` task, it limits samples to the top-K most likely words, balancing coherence and variability.
It is only available for anthropic, cohere, and mistral providers.
It is an alternative to `temperature`; it should not be used if `temperature` is specified.
  - `top_p` (number) — optional
    For a `completion` task, it is a number in the range of 0.0 to 1.0, to eliminate low-probability tokens.
Top-p uses nucleus sampling to select top tokens whose sum of likelihoods does not exceed a certain value, ensuring both variety and coherence.
It is an alternative to `temperature`; it should not be used if `temperature` is specified.

## Response

`application/json`

- `chunking_settings` ({} InferenceChunkingSettings)
  Chunking configuration object
  - `max_chunk_size` (number · default: 250)
    The maximum size of a chunk in words.
This value cannot be higher than `300` or lower than `20` (for `sentence` strategy) or `10` (for `word` strategy).
  - `overlap` (number · default: 100)
    The number of overlapping words for chunks.
It is applicable only to a `word` chunking strategy.
This value cannot be higher than half the `max_chunk_size` value.
  - `sentence_overlap` (number · default: 1)
    The number of overlapping sentences for chunks.
It is applicable only for a `sentence` chunking strategy.
It can be either `1` or `0`.
  - `strategy` (string · default: sentence)
    The chunking strategy: `sentence` or `word`.
- `service` (string)
  The service type
- `service_settings` (ServiceSettings)
  Settings specific to the service
- `task_settings` (TaskSettings)
  Task settings specific to the service and task type
- `inference_id` (string)
  The inference Id
- `task_type` (enum TaskTypeAmazonBedrock)
  The task type
  Values: `text_embedding`, `completion`
## Code Examples

#### Console

```console
PUT _inference/text_embedding/amazon_bedrock_embeddings
{
    "service": "amazonbedrock",
    "service_settings": {
        "access_key": "AWS-access-key",
        "secret_key": "AWS-secret-key",
        "region": "us-east-1",
        "provider": "amazontitan",
        "model": "amazon.titan-embed-text-v2:0"
    }
}
```

#### JavaScript

```javascript
const response = await client.inference.put({
  task_type: "text_embedding",
  inference_id: "amazon_bedrock_embeddings",
  inference_config: {
    service: "amazonbedrock",
    service_settings: {
      access_key: "AWS-access-key",
      secret_key: "AWS-secret-key",
      region: "us-east-1",
      provider: "amazontitan",
      model: "amazon.titan-embed-text-v2:0",
    },
  },
});
```

#### Python

```python
resp = client.inference.put(
    task_type="text_embedding",
    inference_id="amazon_bedrock_embeddings",
    inference_config={
        "service": "amazonbedrock",
        "service_settings": {
            "access_key": "AWS-access-key",
            "secret_key": "AWS-secret-key",
            "region": "us-east-1",
            "provider": "amazontitan",
            "model": "amazon.titan-embed-text-v2:0"
        }
    },
)
```

#### curl

```curl
curl -X PUT "$ELASTICSEARCH_URL/_inference/text_embedding/amazon_bedrock_embeddings" \
  -H "Authorization: ApiKey $ELASTIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "service": "amazonbedrock",
    "service_settings": {
      "access_key": "AWS-access-key",
      "secret_key": "AWS-secret-key",
      "region": "us-east-1",
      "provider": "amazontitan",
      "model": "amazon.titan-embed-text-v2:0"
    }
  }'
```

#### Java

```java
client.inference().put(p -> p
    .inferenceId("amazon_bedrock_embeddings")
    .taskType(TaskType.TextEmbedding)
    .inferenceConfig(i -> i
        .service("amazonbedrock")
        .serviceSettings(JsonData.fromJson("{\"access_key\":\"AWS-access-key\",\"secret_key\":\"AWS-secret-key\",\"region\":\"us-east-1\",\"provider\":\"amazontitan\",\"model\":\"amazon.titan-embed-text-v2:0\"}"))
    )
);
```

#### C#

```c#
var response = await client.Inference
    .PutAsync(new PutInferenceRequest()
    {
        InferenceId = "amazon_bedrock_embeddings",
        TaskType = TaskType.TextEmbedding,
        InferenceConfig = new()
        {
            Service = "amazonbedrock",
            ServiceSettings = JsonSerializer.Deserialize<JsonElement>("""
            {
              "access_key": "AWS-access-key",
              "secret_key": "AWS-secret-key",
              "region": "us-east-1",
              "provider": "amazontitan",
              "model": "amazon.titan-embed-text-v2:0"
            }
            """)
        }
    });
```

#### PHP

```php
$resp = $client->inference()->put([
    "task_type" => "text_embedding",
    "inference_id" => "amazon_bedrock_embeddings",
    "body" => [
        "service" => "amazonbedrock",
        "service_settings" => [
            "access_key" => "AWS-access-key",
            "secret_key" => "AWS-secret-key",
            "region" => "us-east-1",
            "provider" => "amazontitan",
            "model" => "amazon.titan-embed-text-v2:0",
        ],
    ],
]);
```

#### Ruby

```ruby
response = client.inference.put(
  task_type: "text_embedding",
  inference_id: "amazon_bedrock_embeddings",
  body: {
    "service": "amazonbedrock",
    "service_settings": {
      "access_key": "AWS-access-key",
      "secret_key": "AWS-secret-key",
      "region": "us-east-1",
      "provider": "amazontitan",
      "model": "amazon.titan-embed-text-v2:0"
    }
  }
)
```

