docs-site/content/cloud-management-api/v1/cluster-management.md
This section talks about how to use the Typesense Cloud Cluster Management API.
If you're looking for the Typesense Server API docs, see here.
Here's a typical sequence of API Calls you'd perform when using this API:
status: in_service, save the hostnames field returned by the cluster info endpoint.The rest of this document will talk about the individual endpoints.
This endpoint lets you provision a new cluster under your Typesense Cloud account.
curl -X POST --location "https://cloud.typesense.org/api/v1/clusters" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "X-TYPESENSE-CLOUD-MANAGEMENT-API-KEY: YOUR-API-KEY" \
-d '{
"memory": "0.5_gb",
"vcpu": "2_vcpus_1_hr_burst_per_day",
"regions": ["oregon"],
}'
Response:
{
"success": true,
"cluster": {
"id": "az9p28gwxfdsye40d",
"name": null,
"memory": "0.5_gb",
"vcpu": "2_vcpus_1_hr_burst_per_day",
"gpu": "no",
"high_performance_disk": "no",
"typesense_server_version": "0.23.1",
"high_availability": "no",
"search_delivery_network": "off",
"load_balancing": "no",
"regions": [
"oregon"
],
"auto_upgrade_capacity": null,
"usage": {
"runtime_hours": 0,
"used_bandwidth_kb": {
"last_7_days": {}
}
},
"provisioned_by": {
"user_name": "API Key: YOUR-API-KEY*****",
"user_type": "API Key"
},
"provisioned_at": 1663382519,
"status": "provisioning"
}
}
You can use any of the following parameters inside the payload of the above API call:
memoryHow much RAM this cluster should have. <Badge type="warning" text="Required" vertical="top"/>
You can use any of the following values:
memory |
|---|
| 0.5_gb |
| 1_gb |
| 2_gb |
| 4_gb |
| 8_gb |
| 16_gb |
| 32_gb |
| 64_gb |
| 96_gb |
| 128_gb |
| 192_gb |
| 256_gb |
| 384_gb |
| 512_gb |
| 768_gb |
| 1024_gb |
vcpuHow many CPU cores this cluster should have. <Badge type="warning" text="Required" vertical="top"/>
Only certain CPU configuration are available with particular RAM configurations. The table below lists all available configurations:
memory | vcpu |
|---|---|
| 0.5_gb | 2_vcpus_1_hr_burst_per_day |
| 1_gb | 2_vcpus_2_hr_burst_per_day |
| 2_gb | 2_vcpus_4_hr_burst_per_day |
| 4_gb | 2_vcpus_4_hr_burst_per_day |
| 2_vcpus | |
| 8_gb | 2_vcpus_7_hr_burst_per_day |
| 2_vcpus | |
| 4_vcpus | |
| 16_gb | 2_vcpus |
| 4_vcpus_5_hr_burst_per_day | |
| 4_vcpus | |
| 8_vcpus | |
| 32_gb | 4_vcpus |
| 8_vcpus_4_hr_burst_per_day | |
| 8_vcpus | |
| 16_vcpus | |
| 64_gb | 8_vcpus |
| 16_vcpus | |
| 32_vcpus | |
| 96_gb | 12_vcpus |
| 24_vcpus | |
| 48_vcpus | |
| 128_gb | 4_vcpus |
| 16_vcpus | |
| 32_vcpus | |
| 64_vcpus | |
| 192_gb | 24_vcpus |
| 48_vcpus | |
| 96_vcpus | |
| 256_gb | 8_vcpus |
| 32_vcpus | |
| 64_vcpus | |
| 128_vcpus | |
| 384_gb | 48_vcpus |
| 96_vcpus | |
| 128_vcpus | |
| 512_gb | 16_vcpus |
| 64_vcpus | |
| 128_vcpus | |
| 768_gb | 24_vcpus |
| 96_vcpus | |
| 192_vcpus | |
| 1024_gb | 32_vcpus |
| 64_vcpus | |
| 128_vcpus |
regionsAn array with one or more regions where the nodes should be geographically placed. <Badge type="warning" text="Required" vertical="top"/>
The table below lists all available regions:
regions |
|---|
| n_california |
| oregon |
| n_virginia |
| ohio |
| canada |
| sao_paulo |
| ireland |
| london |
| paris |
| zurich |
| frankfurt |
| stockholm |
| milan |
| spain |
| cape_town |
| bahrain |
| uae |
| mumbai |
| hyderabad |
| singapore |
| jakarta |
| seoul |
| osaka |
| tokyo |
| melbourne |
| sydney |
gpuWhen set to yes, it enables the use of a GPU to accelerate embedding generation when using built-in ML models both during indexing and searching.
This option is only available with the following RAM / CPU configurations:
ram | vcpu |
|---|---|
| 8_gb | 4_vcpus |
| 16_gb | 4_vcpus |
| 16_gb | 8_vcpus |
| 32_gb | 8_vcpus |
| 32_gb | 16_vcpus |
| 64_gb | 16_vcpus |
| 64_gb | 32_vcpus |
| 128_gb | 32_vcpus |
| 128_gb | 64_vcpus |
| 192_gb | 48_vcpus |
| 256_gb | 64_vcpus |
| 384_gb | 96_vcpus |
Default: no
high_availabilityWhen set to yes, at least 3 nodes are provisioned in 3 different data centers to form a highly available (HA) cluster and your data is automatically replicated between all nodes.
Default: no
search_delivery_networkWhen not off, nodes are provisioned in different regions and the node that's closest to it's originating location serves the traffic.
Default: off
The table below lists all available options:
search_delivery_network |
|---|
| off |
| 3_regions |
| 5_regions |
IMPORTANT: Make sure you set high_availability to yes when you turn on Search Delivery Network.
high_performance_diskWhen set to yes, the provisioned hard disk will be co-located on the same physical server that runs the node.
Default: no
IMPORTANT: This option is only available when:
typesense_server_versionThe Typesense Server version to use for this cluster.
Default: Latest GA release version.
nameA string to identify the cluster for your reference in the Typesense Cloud Web console.
Default: null
auto_upgrade_capacityWhen set to true, your cluster will be automatically upgraded when best-practice RAM/CPU thresholds are exceeded in a 12-hour rolling window.
Default: false
Most response parameters are similar to the request parameters above.
We've documented response-specific parameters below:
statusThe state of the cluster.
It can have the following values:
status | Description |
|---|---|
provisioning | The cluster's nodes are being provisioned |
initializing | Typesense cluster is being setup |
in_service | Cluster is ready for use |
deprovisioning | Cluster is being deprovisioned |
suspended | Cluster was suspended due to billing issues |
terminated | Cluster was terminated |
This endpoint can be used to generate Typesense Server API Keys for your cluster.
You can only generate API keys for a cluster, once its status changes to in_service. New clusters take at least 4 minutes to go from provisioning status to in_service.
curl -X POST --location "https://cloud.typesense.org/api/v1/clusters/<ClusterID>/api-keys" \
-H "Accept: application/json" \
-H "X-TYPESENSE-CLOUD-MANAGEMENT-API-KEY: YOUR-API-KEY"
Response:
{
"success": true,
"api_keys": {
"admin_key": "cBKqFPEcGRAS7RIKi3h3FuJbj4Q9Rprk",
"search_only_key": "y7CFw2zEgu09FFhoDgLzC99j0RwKi0kL"
}
}
This API endpoint is the equivalent of clicking on the "Generate API Keys" button in the Cluster Dashboard on Typesense Cloud Web console.
This endpoint can be used to get information about a single cluster.
curl -X GET --location "https://cloud.typesense.org/api/v1/clusters/<ClusterID>" \
-H "Accept: application/json" \
-H "X-TYPESENSE-CLOUD-MANAGEMENT-API-KEY: YOUR-API-KEY"
Response:
{
"id": "nuj9s7k6vplrg15yp",
"name": null,
"memory": "0.5_gb",
"vcpu": "2_vcpus_1_hr_burst_per_day",
"gpu": "no",
"high_performance_disk": "no",
"typesense_server_version": "0.23.1",
"high_availability": "yes",
"search_delivery_network": "off",
"load_balancing": "yes",
"regions": [
"mumbai",
"mumbai",
"mumbai"
],
"auto_upgrade_capacity": null,
"hostnames": {
"load_balanced": "nuj9s7k6vplrg15yp.a1.typesense.net",
"nodes": [
"nuj9s7k6vplrg15yp-1.a1.typesense.net",
"nuj9s7k6vplrg15yp-2.a1.typesense.net",
"nuj9s7k6vplrg15yp-3.a1.typesense.net"
]
},
"usage": {
"runtime_hours": 1,
"used_bandwidth_kb": {
"last_7_days": {}
}
},
"provisioned_by": {
"user_name": "API Key: sc4DyvAzf*****",
"user_type": "API Key"
},
"provisioned_at": 1663616196,
"status": "in_service"
}
This endpoint can be used to list all clusters under this account.
curl -X GET --location "https://cloud.typesense.org/api/v1/clusters" \
-H "Accept: application/json" \
-H "X-TYPESENSE-CLOUD-MANAGEMENT-API-KEY: YOUR-API-KEY"
Response:
{
"page": 1,
"per_page": 1,
"total": 2,
"clusters": [
{
"id": "az9p28gwxfdsye40d",
"name": null,
"memory": "0.5_gb",
"vcpu": "2_vcpus_1_hr_burst_per_day",
"gpu": "no",
"high_performance_disk": "no",
"typesense_server_version": "0.23.1",
"high_availability": "no",
"search_delivery_network": "off",
"load_balancing": "no",
"regions": [
"oregon"
],
"auto_upgrade_capacity": false,
"usage": {
"runtime_hours": 5643,
"used_bandwidth_kb": {
"last_7_days": {}
}
},
"provisioned_by": {
"user_name": "John Doe",
"user_type": "User"
},
"provisioned_at": 1663382520,
"status": "initializing"
}
]
}
You can use the following query parameters with this endpoint:
per_pageThe number of results per page.
Default: 10
pagePage number to fetch
Default: 1
This endpoint can be used to update select cluster attributes:
auto_upgrade_capacitynamecurl -X PATCH --location "https://cloud.typesense.org/api/v1/clusters/<ClusterID>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "X-TYPESENSE-CLOUD-MANAGEMENT-API-KEY: YOUR-API-KEY" \
-d '{
"auto_upgrade_capacity": true,
"name": "New Name"
}'
Response:
{
"success": true,
"cluster": {
"id": "az9p28gwxfdsye40d",
"name": "New Name",
"memory": "0.5_gb",
"vcpu": "2_vcpus_1_hr_burst_per_day",
"gpu": "no",
"high_performance_disk": "no",
"typesense_server_version": "0.23.1",
"high_availability": "no",
"search_delivery_network": "off",
"load_balancing": "no",
"regions": ["oregon"],
"auto_upgrade_capacity": true,
"usage": {
"runtime_hours": 5643,
"used_bandwidth_kb": {
"last_7_days": {}
}
},
"provisioned_by": {
"user_name": "John Doe",
"user_type": "User"
},
"provisioned_at": 1663382520,
"status": "in_service"
}
}
This endpoint terminates a running cluster.
This action cannot be undone. Once a cluster is terminated, all data in it is destroyed permanently as a security and privacy measure.
curl -X POST --location "https://cloud.typesense.org/api/v1/clusters/<ClusterID>/lifecycle" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "X-TYPESENSE-CLOUD-MANAGEMENT-API-KEY: YOUR-API-KEY" \
-d '{
"lifecycle_action": "terminate"
}'
Response:
{
"success": true,
"message": "Cluster termination has been initiated"
}
This endpoint takes a single parameter lifecycle_action and should have the value terminate