ClusterNest API
To get started, generate an access token via the POST /auth/token endpoint below. Afterwards include the token as Bearer in the Authorization header of all requests. e.g. Authorization: Bearer <your_access_token>.
To get started, generate an access token via the POST /auth/token endpoint below. Afterwards include the token as Bearer in the Authorization header of all requests. e.g. Authorization: Bearer <your_access_token>.
Cluster name, unique within the organization. Lowercase letters, digits, and hyphens only.
Organization the cluster is created in.
Identity providers the cluster accepts logins from, alongside the built-in internal user: external OpenID Connect or SAML providers, and the ClusterNest sign-in. A new cluster has the ClusterNest sign-in unless this is set; pass an empty list to leave it out. Secret values are write-only: omit one on update to keep the stored value.
Custom domain to serve the OpenSearch endpoint on, instead of the generated default hostname.
Custom domain to serve OpenSearch Dashboards on, instead of the generated default hostname.
IP addresses or subnets allowed to reach OpenSearch Dashboards
Number of data nodes in the cluster. Only Advanced tier supports more than 3 data nodes upto a maximum of 10.
IP addresses or subnets allowed to reach the OpenSearch API
Weekly recurring window (UTC) during which maintenance may be performed on this cluster. Must be at least 2 hours (120 minutes) long. Leave unset to allow maintenance at any time.
Named opt-in options to enable on the cluster, such as Dashboards workspaces and data sources. Replaces the current set on update, so include every option you want to keep on. Options are limited to those listed and some need a minimum OpenSearch version.
S3 snapshot repository configuration for cluster backups. Leave unset to disable snapshots.
Sizing/pricing tier the cluster runs at.
curl https://api.clusternest.com/cluster/opensearch/ \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"name": "",
"tier": "basic",
"organization_id": 1,
"maintenance_window": {
"day_of_week": "monday",
"start_time": "",
"end_time": ""
},
"version": "3.8.0",
"data_node_count": 3,
"ip_allowlist": [
"0.0.0.0/0",
"::/0"
],
"dashboards_ip_allowlist": [
"0.0.0.0/0",
"::/0"
],
"custom_hostname": "",
"dashboards_custom_hostname": "",
"optional_configs": {
"workspaces": false,
"data_sources": false
},
"auth_sources": [
{
"type": "builtin",
"name": "organization"
}
],
"repo_config": {
"enable_iam_role": true,
"enable_access_keys": false,
"access_key_id": "",
"secret_access_key": ""
}
}'
{
"id": 1,
"organization_id": 1,
"name": "string",
"tier": "basic",
"state": "creating",
"created_at": "2026-10-30T23:22:59.173Z",
"updated_at": "2026-10-30T23:22:59.173Z",
"maintenance_window": {
"day_of_week": "monday",
"start_time": "string",
"end_time": "string"
},
"version": "3.8.0",
"data_node_count": 3,
"ip_allowlist": [
"0.0.0.0/0",
"::/0"
],
"dashboards_ip_allowlist": [
"0.0.0.0/0",
"::/0"
],
"custom_hostname": "string",
"dashboards_custom_hostname": "string",
"url": "string",
"opensearch_dashboards_url": "string",
"auth_sources": [
{
"name": "string",
"ca_cert": "string",
"subject_key": "string",
"roles_key": "string",
"type": "oidc",
"dashboards_login": false,
"connect_url": "string",
"client_id": "string",
"audience": "string",
"client_secret_set": false,
"scope": "openid profile email",
"logout_url": "string"
}
],
"optional_configs": {
"workspaces": false,
"data_sources": false
},
"repo_config": {
"enable_iam_role": true,
"aws_role_arn": "string",
"enable_access_keys": false,
"access_key_id": "string",
"secret_access_key_set": false
}
}