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

# Create an Amazon SageMaker inference endpoint

Availability: 8.19+

## Paths

- `PUT` `/_inference/{task_type}/{amazonsagemaker_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 TaskTypeAmazonSageMaker)
  The type of the inference task that the model will perform.
  Values: `text_embedding`, `completion`, `chat_completion`, `sparse_embedding`, `rerank`
- `amazonsagemaker_inference_id` (string Id)
  The unique identifier of the inference endpoint.

## Description

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

## 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 AmazonSageMakerServiceType) — required
  The type of service supported for the specified task type. In this case, `amazon_sagemaker`.
  Values: `amazon_sagemaker`
- `service_settings` ({} AmazonSageMakerServiceSettings) — required
  Settings used to install the inference model.
These settings are specific to the `amazon_sagemaker` service and `service_settings.api` you specified.
  - `access_key` (string) — required
    A valid AWS access key that has permissions to use Amazon SageMaker and access to models for invoking requests.
  - `endpoint_name` (string) — required
    The name of the SageMaker endpoint.
  - `api` (enum AmazonSageMakerApi) — required
    The API format to use when calling SageMaker.
Elasticsearch will convert the POST _inference request to this data format when invoking the SageMaker endpoint.
    Values: `openai`, `elastic`
  - `region` (string) — required
    The region that your endpoint or Amazon Resource Name (ARN) is deployed in.
The list of available regions per model can be found in the Amazon SageMaker documentation.
  - `secret_key` (string) — required
    A valid AWS secret key that is paired with the `access_key`.
For information about creating and managing access and secret keys, refer to the AWS documentation.
  - `target_model` (string) — optional
    The model ID when calling a multi-model endpoint.
  - `target_container_hostname` (string) — optional
    The container to directly invoke when calling a multi-container endpoint.
  - `inference_component_name` (string) — optional
    The inference component to directly invoke when calling a multi-component endpoint.
  - `batch_size` (number · default: 256) — optional
    The maximum number of inputs in each batch. This value is used by inference ingestion pipelines
when processing semantic values. It correlates to the number of times the SageMaker endpoint is
invoked (one per batch of input).
  - `dimensions` (number) — optional
    The number of dimensions returned by the text embedding models. If this value is not provided, then
it is guessed by making invoking the endpoint for the `text_embedding` task.
- `task_settings` ({} AmazonSageMakerTaskSettings) — optional
  Settings to configure the inference task.
These settings are specific to the task type and `service_settings.api` you specified.
  - `custom_attributes` (string) — optional
    The AWS custom attributes passed verbatim through to the model running in the SageMaker Endpoint.
Values will be returned in the `X-elastic-sagemaker-custom-attributes` header.
  - `enable_explanations` (string) — optional
    The optional JMESPath expression used to override the EnableExplanations provided during endpoint creation.
  - `inference_id` (string) — optional
    The capture data ID when enabled in the endpoint.
  - `session_id` (string) — optional
    The stateful session identifier for a new or existing session.
New sessions will be returned in the `X-elastic-sagemaker-new-session-id` header.
Closed sessions will be returned in the `X-elastic-sagemaker-closed-session-id` header.
  - `target_variant` (string) — optional
    Specifies the variant when running with multi-variant Endpoints.

## 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 TaskTypeAmazonSageMaker)
  The task type
  Values: `text_embedding`, `completion`, `chat_completion`, `sparse_embedding`, `rerank`
## Code Examples

#### Console

```console
PUT _inference/text_embedding/amazon_sagemaker_embeddings
{
    "service": "amazon_sagemaker",
    "service_settings": {
        "access_key": "AWS-access-key",
        "secret_key": "AWS-secret-key",
        "region": "us-east-1",
        "api": "elastic",
        "endpoint_name": "my-endpoint",
        "dimensions": 384,
        "element_type": "float"
    }
}
```

#### JavaScript

```javascript
const response = await client.inference.put({
  task_type: "text_embedding",
  inference_id: "amazon_sagemaker_embeddings",
  inference_config: {
    service: "amazon_sagemaker",
    service_settings: {
      access_key: "AWS-access-key",
      secret_key: "AWS-secret-key",
      region: "us-east-1",
      api: "elastic",
      endpoint_name: "my-endpoint",
      dimensions: 384,
      element_type: "float",
    },
  },
});
```

#### Python

```python
resp = client.inference.put(
    task_type="text_embedding",
    inference_id="amazon_sagemaker_embeddings",
    inference_config={
        "service": "amazon_sagemaker",
        "service_settings": {
            "access_key": "AWS-access-key",
            "secret_key": "AWS-secret-key",
            "region": "us-east-1",
            "api": "elastic",
            "endpoint_name": "my-endpoint",
            "dimensions": 384,
            "element_type": "float"
        }
    },
)
```

#### curl

```curl
curl -X PUT "$ELASTICSEARCH_URL/_inference/text_embedding/amazon_sagemaker_embeddings" \
  -H "Authorization: ApiKey $ELASTIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "service": "amazon_sagemaker",
    "service_settings": {
      "access_key": "AWS-access-key",
      "secret_key": "AWS-secret-key",
      "region": "us-east-1",
      "api": "elastic",
      "endpoint_name": "my-endpoint",
      "dimensions": 384,
      "element_type": "float"
    }
  }'
```

#### C#

```c#
var response = await client.Inference
    .PutAsync(new PutInferenceRequest()
    {
        InferenceId = "amazon_sagemaker_embeddings",
        TaskType = TaskType.TextEmbedding,
        InferenceConfig = new()
        {
            Service = "amazon_sagemaker",
            ServiceSettings = JsonSerializer.Deserialize<JsonElement>("""
            {
              "access_key": "AWS-access-key",
              "secret_key": "AWS-secret-key",
              "region": "us-east-1",
              "api": "elastic",
              "endpoint_name": "my-endpoint",
              "dimensions": 384,
              "element_type": "float"
            }
            """)
        }
    });
```

#### PHP

```php
$resp = $client->inference()->put([
    "task_type" => "text_embedding",
    "inference_id" => "amazon_sagemaker_embeddings",
    "body" => [
        "service" => "amazon_sagemaker",
        "service_settings" => [
            "access_key" => "AWS-access-key",
            "secret_key" => "AWS-secret-key",
            "region" => "us-east-1",
            "api" => "elastic",
            "endpoint_name" => "my-endpoint",
            "dimensions" => 384,
            "element_type" => "float",
        ],
    ],
]);
```

#### Ruby

```ruby
response = client.inference.put(
  task_type: "text_embedding",
  inference_id: "amazon_sagemaker_embeddings",
  body: {
    "service": "amazon_sagemaker",
    "service_settings": {
      "access_key": "AWS-access-key",
      "secret_key": "AWS-secret-key",
      "region": "us-east-1",
      "api": "elastic",
      "endpoint_name": "my-endpoint",
      "dimensions": 384,
      "element_type": "float"
    }
  }
)
```

