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

# Create an Anthropic inference endpoint

Availability: 8.16+

## Paths

- `PUT` `/_inference/{task_type}/{anthropic_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 AnthropicTaskType)
  The task type.
The only valid task type for the model to perform is `completion`.
  Values: `completion`
- `anthropic_inference_id` (string Id)
  The unique identifier of the inference endpoint.

## Description

Create an inference endpoint to perform an inference task with the `anthropic` 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 AnthropicServiceType) — required
  The type of service supported for the specified task type. In this case, `anthropic`.
  Values: `anthropic`
- `service_settings` ({} AnthropicServiceSettings) — required
  Settings used to install the inference model. These settings are specific to the `watsonxai` service.
  - `api_key` (string) — required
    A valid API key for the Anthropic API.
  - `model_id` (string) — required
    The name of the model to use for the inference task.
Refer to the Anthropic documentation for the list of supported models.
  - `rate_limit` ({} RateLimitSetting) — optional
    This setting helps to minimize the number of rate limit errors returned from Anthropic.
By default, the `anthropic` service sets the number of requests allowed per minute to 50.
    - `requests_per_minute` (number) — optional
      The number of requests allowed per minute.
- `task_settings` ({} AnthropicTaskSettings) — optional
  Settings to configure the inference task.
These settings are specific to the task type you specified.
  - `max_tokens` (number) — required
    For a `completion` task, it is the maximum number of tokens to generate before stopping.
  - `temperature` (number) — optional
    For a `completion` task, it is the amount of randomness injected into the response.
For more details about the supported range, refer to Anthropic documentation.
  - `top_k` (number) — optional
    For a `completion` task, it specifies to only sample from the top K options for each subsequent token.
It is recommended for advanced use cases only.
You usually only need to use `temperature`.
  - `top_p` (number) — optional
    For a `completion` task, it specifies to use Anthropic's nucleus sampling.
In nucleus sampling, Anthropic computes the cumulative distribution over all the options for each subsequent token in decreasing probability order and cuts it off once it reaches the specified probability.
You should either alter `temperature` or `top_p`, but not both.
It is recommended for advanced use cases only.
You usually only need to use `temperature`.

## 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 TaskTypeAnthropic)
  The task type
  Values: `completion`
## Code Examples

#### Console

```console
PUT _inference/completion/anthropic_completion
{
    "service": "anthropic",
    "service_settings": {
        "api_key": "Anthropic-Api-Key",
        "model_id": "Model-ID"
    },
    "task_settings": {
        "max_tokens": 1024
    }
}
```

#### JavaScript

```javascript
const response = await client.inference.put({
  task_type: "completion",
  inference_id: "anthropic_completion",
  inference_config: {
    service: "anthropic",
    service_settings: {
      api_key: "Anthropic-Api-Key",
      model_id: "Model-ID",
    },
    task_settings: {
      max_tokens: 1024,
    },
  },
});
```

#### Python

```python
resp = client.inference.put(
    task_type="completion",
    inference_id="anthropic_completion",
    inference_config={
        "service": "anthropic",
        "service_settings": {
            "api_key": "Anthropic-Api-Key",
            "model_id": "Model-ID"
        },
        "task_settings": {
            "max_tokens": 1024
        }
    },
)
```

#### curl

```curl
curl -X PUT "$ELASTICSEARCH_URL/_inference/completion/anthropic_completion" \
  -H "Authorization: ApiKey $ELASTIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "service": "anthropic",
    "service_settings": {
      "api_key": "Anthropic-Api-Key",
      "model_id": "Model-ID"
    },
    "task_settings": {
      "max_tokens": 1024
    }
  }'
```

#### Java

```java
client.inference().put(p -> p
    .inferenceId("anthropic_completion")
    .taskType(TaskType.Completion)
    .inferenceConfig(i -> i
        .service("anthropic")
        .serviceSettings(JsonData.fromJson("{\"api_key\":\"Anthropic-Api-Key\",\"model_id\":\"Model-ID\"}"))
        .taskSettings(JsonData.fromJson("{\"max_tokens\":1024}"))
    )
);
```

#### C#

```c#
var response = await client.Inference
    .PutAsync(new PutInferenceRequest()
    {
        InferenceId = "anthropic_completion",
        TaskType = TaskType.Completion,
        InferenceConfig = new()
        {
            Service = "anthropic",
            ServiceSettings = JsonSerializer.Deserialize<JsonElement>("""
            {
              "api_key": "Anthropic-Api-Key",
              "model_id": "Model-ID"
            }
            """),
            TaskSettings = JsonSerializer.Deserialize<JsonElement>("""
            {
              "max_tokens": 1024
            }
            """)
        }
    });
```

#### PHP

```php
$resp = $client->inference()->put([
    "task_type" => "completion",
    "inference_id" => "anthropic_completion",
    "body" => [
        "service" => "anthropic",
        "service_settings" => [
            "api_key" => "Anthropic-Api-Key",
            "model_id" => "Model-ID",
        ],
        "task_settings" => [
            "max_tokens" => 1024,
        ],
    ],
]);
```

#### Ruby

```ruby
response = client.inference.put(
  task_type: "completion",
  inference_id: "anthropic_completion",
  body: {
    "service": "anthropic",
    "service_settings": {
      "api_key": "Anthropic-Api-Key",
      "model_id": "Model-ID"
    },
    "task_settings": {
      "max_tokens": 1024
    }
  }
)
```

