---
type: api
title: Create an Elasticsearch project
description: Create an Elasticsearch project. The response will include the created project details, such as the project ID, the credentials to access the project, and the endpoints to access different apps such as Elasticsearch and Kibana. The credentials can be regenerated at any time using the _reset-credentials endpoint.
url: https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/cloud-serverless/operation/operation-createelasticsearchproject
resource: https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/cloud-serverless/operation/operation-createelasticsearchproject
products:
  - Elastic Cloud Serverless
---

# Create an Elasticsearch project

- Server: `https://api.elastic-cloud.com`

## Paths

- `POST` `/api/v1/serverless/projects/elasticsearch`

## Description

Create an Elasticsearch project. The response will include the created project details, such as the project ID, the credentials to access the project, and the endpoints to access different apps such as Elasticsearch and Kibana. The credentials can be regenerated at any time using the _reset-credentials endpoint.

## Authentication

- Api key: `Authorization: <value>`
  API keys are used to authenticate requests to the Elastic Cloud Serverless REST API.
  Generate your secret API key in https://cloud.elastic.co/account/keys
  You must provide the API key for all API requests in the Authorization header as follows:
  
  ```
  "Authorization: ApiKey $API_KEY"
  ```
  
  For example, if you interact with the API using the curl command:
  
  ```
  curl -H "Authorization: ApiKey essu_..." https://api.elastic-cloud.com/api/v1/serverless/projects/elasticsearch
  ```

## Query string parameters

- `exclude_credentials` (boolean) — optional
  If true, the username and password fields in the response credentials are set to empty strings and no usable credentials are returned. Credentials can be retrieved later using the _reset-credentials endpoint.

## Request body

Configuration of the elasticsearch project to create.

`application/json`

- `name` (string · min length: 1 · max length: 255) — required
  Descriptive name for a project.
- `alias` (string · min length: 1 · max length: 50 · pattern: ^[a-zA-Z]{1}(?:[a-zA-Z0-9-]*[a-zA-Z0-9]{1})?$) — optional
  A custom domain label compatible with RFC-1035 standards. Derived from the project name by default.
- `region_id` (string) — required
  Unique human-readable identifier for a region in Elastic Cloud.
- `optimized_for` (enum) — optional
  The purpose for which the hardware of this elasticsearch project is optimized. Also known as the Elasticsearch project subtype.

- The `general_purpose` option is suitable for most search use cases. For example, it is the right profile for full-text search, sparse vectors, and dense vectors that use compression such as BBQ. It is used by default when you create projects from the UI.
- The `vector` option is recommended only for uncompressed dense vectors (`dense_vector` fields with `int4` or `int8` quantization strategies) and high dimensionality. Refer to documentation about billing dimensions for the impact to virtual compute unit (VCU) consumption.
  Values: `general_purpose`, `vector`
- `search_lake` (object) — optional
  Configuration for entire set of capabilities that make the data searchable in Elasticsearch.
  - `search_power` (integer · min: 28 · max: 3000) — optional
    Controls how fast searches are against your project data. When ingested, a certain amount of data is loaded into a cache that makes it super fast to query. You can either increase the performance of searches on cached data by adding replicas, or reduce the quantity of cached data by a static factor to save on costs.
  - `boost_window` (integer · min: 1 · max: 180) — optional
    Determines how much data can benefit from faster search. When ingested, a certain amount of data is loaded into a cache that makes it super fast to query. The system dynamically adjusts the cache allocated to your project based on how much data you ingest during the period defined by your Search Boost Window.
- `traffic_filters` (object[]) — optional
  traffic filters IDs
  - `id` (string) — required
    traffic filter ID
- `linked` (object) — optional
  Configuration for linked projects associated with this project
  - `projects` (map string to object · min properties: 1) — required
    Map values (object)
    - `type` (enum) — required
      The type of the linked project
      Values: `elasticsearch`, `observability`, `security`, `vectordb`
- `metadata` (object) — optional
  Metadata request for a project with tags.
  - `tags` (map string to string · min properties: 1 · max properties: 64) — required
    Tags associated with a project in the form of key-value pairs. Tags are limited to a minimum of 1 and a maximum of 64 per project. Each tag key must begin with a lowercase letter (a-z), contain only lowercase letters, digits, underscores, and hyphens (a-z0-9_-), and have a maximum length of 32 characters.
    Map values (string · min length: 1 · max length: 128 · pattern: ^[a-z0-9][a-z0-9_-]*$)

## Responses

#### `201`

The created elasticsearch project.

`application/json`

- `id` (string · pattern: ^[a-z0-9]{32}$)
  ID of the project.
- `name` (string · min length: 1 · max length: 255)
  Descriptive name for a project.
- `alias` (string · min length: 8 · max length: 57 · pattern: ^[a-zA-Z]{1}(?:[a-zA-Z0-9-]*[a-zA-Z0-9]{1})?$)
  A domain label compatible with RFC-1035 standards. Project alias with a unique suffix added by the system to avoid naming conflicts.
- `region_id` (string)
  Unique human-readable identifier for a region in Elastic Cloud.
- `metadata` (object)
  Additional details about the project.
  - `created_at` (string · format: date-time)
    Date and time when the project was created.
  - `created_by` (string)
    ID of the user.
  - `organization_id` (string)
    The Organization ID who owns the project.
  - `suspended_at` (string · format: date-time)
    Date and time when the project was suspended.
  - `suspended_reason` (string)
    Reason why the project was suspended.
  - `tags` (map string to string · min properties: 1 · max properties: 64)
    Tags associated with a project in the form of key-value pairs. Tags are limited to a minimum of 1 and a maximum of 64 per project. Each tag key must begin with a lowercase letter (a-z), contain only lowercase letters, digits, underscores, and hyphens (a-z0-9_-), and have a maximum length of 32 characters.
    Map values (string · min length: 1 · max length: 128 · pattern: ^[a-z0-9][a-z0-9_-]*$)
  - `system_tags` (map string to string)
    System tags associated with a project in the form of key-value pairs. These tags are added by the internal system and are read-only. The keys are prefixed with an underscore to differentiate them from user tags.
    Map values (string · min length: 1 · max length: 128 · pattern: ^[a-z0-9][a-z0-9_-]*$)
- `cloud_id` (string)
  The cloud ID, an encoded string that provides other Elastic services with the necessary information to connect to this Elasticsearch and Kibana.
- `traffic_filters` (object[])
  traffic filters IDs
  - `id` (string)
    traffic filter ID
- `linked` (object)
  Configuration for projects linked to this project
  - `projects` (map string to object)
    Map values (object)
    - `status` (enum)
      The state of the linked project.
      Values: `enabled`, `suspended`, `deleted`
    - `type` (enum)
      The type of the linked project
      Values: `elasticsearch`, `observability`, `security`, `vectordb`
- `type` (enum)
  the type of the project
  Values: `elasticsearch`
- `optimized_for` (enum)
  The purpose for which the hardware of this elasticsearch project is optimized. Also known as the Elasticsearch project subtype.

- The `general_purpose` option is suitable for most search use cases. For example, it is the right profile for full-text search, sparse vectors, and dense vectors that use compression such as BBQ. It is used by default when you create projects from the UI.
- The `vector` option is recommended only for uncompressed dense vectors (`dense_vector` fields with `int4` or `int8` quantization strategies) and high dimensionality. Refer to documentation about billing dimensions for the impact to virtual compute unit (VCU) consumption.
  Values: `general_purpose`, `vector`
- `search_lake` (object)
  Configuration for entire set of capabilities that make the data searchable in Elasticsearch.
  - `search_power` (integer · min: 28 · max: 3000)
    Controls how fast searches are against your project data. When ingested, a certain amount of data is loaded into a cache that makes it super fast to query. You can either increase the performance of searches on cached data by adding replicas, or reduce the quantity of cached data by a static factor to save on costs.
  - `boost_window` (integer · min: 1 · max: 180)
    Determines how much data can benefit from faster search. When ingested, a certain amount of data is loaded into a cache that makes it super fast to query. The system dynamically adjusts the cache allocated to your project based on how much data you ingest during the period defined by your Search Boost Window.
- `endpoints` (object)
  The endpoints to access the different apps of the project.
  - `elasticsearch` (string)
    The endpoint to access elasticsearch.
  - `kibana` (string)
    The endpoint to access kibana.
- `private_endpoints` (object)
  Private endpoints (URLs) for Elasticsearch projects when PrivateLink is enabled.
  - `elasticsearch` (string)
    The PrivateLink endpoint URL to access elasticsearch.
  - `kibana` (string)
    The PrivateLink endpoint URL to access kibana.
- `credentials` (object)
  Basic auth credentials to access the Elasticsearch API.
  - `username` (string)
    Basic auth username that can be used to access the Elasticsearch API.
  - `password` (string · format: password)
    Basic auth password that can be used to access the Elasticsearch API.
##### Response headers

- `ETag` (string)

#### `400`

Bad request

`application/json`

- `errors` (object[])
  - `message` (string)
    A human-readable message of the error.
  - `code` (string)
    An identifier for this type of error.
#### `422`

Unprocessable entity

`application/json`

- `errors` (object[])
  - `message` (string)
    A human-readable message of the error.
  - `code` (string)
    An identifier for this type of error.
## Code examples

#### curl

```curl
curl -X POST "https://api.elastic-cloud.com/api/v1/serverless/projects/elasticsearch" \
  -H "Authorization: ApiKey ${API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my project",
    "region_id": "aws-us-east-1"
  }'
```

