Scaling ClickPipe
This endpoint is in beta. API contract is stable, and no breaking changes are expected in the future.
Change scaling settings for the specified ClickPipe.
PATCH
/
v1
/
organizations
/
{organizationId}
/
services
/
{serviceId}
/
clickpipes
/
{clickPipeId}
/
scaling
Scaling ClickPipe
curl --request PATCH \
--url https://api.clickhouse.cloud/v1/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/scaling \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"replicas": 5,
"concurrency": 17,
"replicaCpuMillicores": 1062,
"replicaMemoryGb": 4.25
}
'import requests
url = "https://api.clickhouse.cloud/v1/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/scaling"
payload = {
"replicas": 5,
"concurrency": 17,
"replicaCpuMillicores": 1062,
"replicaMemoryGb": 4.25
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
replicas: 5,
concurrency: 17,
replicaCpuMillicores: 1062,
replicaMemoryGb: 4.25
})
};
fetch('https://api.clickhouse.cloud/v1/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/scaling', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.clickhouse.cloud/v1/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/scaling",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'replicas' => 5,
'concurrency' => 17,
'replicaCpuMillicores' => 1062,
'replicaMemoryGb' => 4.25
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.clickhouse.cloud/v1/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/scaling"
payload := strings.NewReader("{\n \"replicas\": 5,\n \"concurrency\": 17,\n \"replicaCpuMillicores\": 1062,\n \"replicaMemoryGb\": 4.25\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.clickhouse.cloud/v1/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/scaling")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"replicas\": 5,\n \"concurrency\": 17,\n \"replicaCpuMillicores\": 1062,\n \"replicaMemoryGb\": 4.25\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.clickhouse.cloud/v1/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/scaling")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"replicas\": 5,\n \"concurrency\": 17,\n \"replicaCpuMillicores\": 1062,\n \"replicaMemoryGb\": 4.25\n}"
response = http.request(request)
puts response.read_body{
"status": 200,
"requestId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"result": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"serviceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"state": "<string>",
"scaling": {
"replicas": 123,
"concurrency": 123,
"replicaCpuMillicores": 1062,
"replicaMemoryGb": 4.25
},
"source": {
"kafka": {
"brokers": "<string>",
"topics": "<string>",
"consumerGroup": "my-clickpipe-consumer-group",
"iamRole": "arn:aws:iam::123456789012:role/MyRole",
"offset": {
"timestamp": "2021-01-01T00:00"
},
"schemaRegistry": {
"url": "https://psrc-aa00.us-east-2.aws.confluent.cloud/schemas/ids/100004",
"authentication": "PLAIN",
"caCertificate": "<string>"
},
"caCertificate": "<string>",
"reversePrivateEndpointIds": [
"<string>"
]
},
"objectStorage": {
"url": "https://datasets-documentation.s3.eu-west-3.amazonaws.com/http/**.ndjson.gz",
"delimiter": ",",
"compression": "auto",
"isContinuous": true,
"queueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue",
"iamRole": "arn:aws:iam::123456789012:role/MyRole",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey;EndpointSuffix=core.windows.net",
"path": "data/logs/*.json",
"azureContainerName": "mycontainer"
},
"kinesis": {
"streamName": "my-stream",
"region": "us-east-1",
"useEnhancedFanOut": true,
"timestamp": 1615766400,
"iamRole": "arn:aws:iam::123456789012:role/MyRole"
},
"postgres": {
"host": "<string>",
"port": 123,
"database": "<string>",
"settings": {
"syncIntervalSeconds": 123,
"pullBatchSize": 123,
"publicationName": "<string>",
"replicationSlotName": "<string>",
"allowNullableColumns": true,
"initialLoadParallelism": 123,
"snapshotNumRowsPerPartition": 123,
"snapshotNumberOfParallelTables": 123,
"enableFailoverSlots": true
},
"tableMappings": [
{
"sourceSchemaName": "<string>",
"sourceTable": "<string>",
"targetTable": "<string>",
"excludedColumns": [
"<string>"
],
"useCustomSortingKey": true,
"sortingKeys": [
"<string>"
]
}
]
}
},
"destination": {
"database": "<string>",
"table": "<string>",
"managedTable": true,
"tableDefinition": {
"engine": {
"versionColumnId": "<string>",
"columnIds": [
"<string>"
]
},
"sortingKey": [
"<string>"
],
"partitionBy": "<string>",
"primaryKey": "<string>"
},
"columns": [
{
"name": "<string>",
"type": "<string>"
}
]
},
"fieldMappings": [
{
"sourceField": "<string>",
"destinationField": "<string>"
}
],
"settings": {
"streaming_max_insert_wait_ms": 5000,
"object_storage_concurrency": 1,
"object_storage_polling_interval_ms": 30000,
"object_storage_max_insert_bytes": 10737418240,
"object_storage_max_file_count": 100,
"clickhouse_max_threads": 8,
"clickhouse_max_insert_threads": 1,
"clickhouse_min_insert_block_size_bytes": 1073741824,
"clickhouse_max_download_threads": 4,
"clickhouse_parallel_distributed_insert_select": 2,
"object_storage_use_cluster_function": true,
"clickhouse_parallel_view_processing": false
},
"createdAt": "<string>",
"updatedAt": "<string>"
}
}{
"status": 400,
"error": "<string>"
}Authorizations
Use key ID and key secret obtained in ClickHouse Cloud console: https://clickhouse.com/docs/cloud/manage/openapi
Path Parameters
ID of the organization that owns the service.
ID of the service that owns the ClickPipe.
ID of the ClickPipe to update scaling settings.
Body
application/json
Number of replicas to scale to. Use to scale Kafka pipes.
Required range:
1 <= x <= 10Number of concurrency to scale to. Use to scale S3 pipes.
Required range:
0 <= x <= 34CPU in millicores for each replica. Use to scale streaming pipes.
Required range:
125 <= x <= 2000Memory in GB for each replica. Use to scale streaming pipes.
Required range:
0.5 <= x <= 8Last modified on July 2, 2026
Was this page helpful?
Previous
Update ClickPipe state**This endpoint is in beta.** API contract is stable, and no breaking changes are expected in the future. <br /><br /> Start, stop or resync ClickPipe. Stopping a ClickPipe will stop the ingestion process from any state. Starting is allowed for ClickPipes in the "Stopped" state or with a "Failed" state. Resyncing is only for Postgres pipes and can be done from any state.
Next
⌘I
Scaling ClickPipe
curl --request PATCH \
--url https://api.clickhouse.cloud/v1/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/scaling \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"replicas": 5,
"concurrency": 17,
"replicaCpuMillicores": 1062,
"replicaMemoryGb": 4.25
}
'import requests
url = "https://api.clickhouse.cloud/v1/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/scaling"
payload = {
"replicas": 5,
"concurrency": 17,
"replicaCpuMillicores": 1062,
"replicaMemoryGb": 4.25
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
replicas: 5,
concurrency: 17,
replicaCpuMillicores: 1062,
replicaMemoryGb: 4.25
})
};
fetch('https://api.clickhouse.cloud/v1/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/scaling', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.clickhouse.cloud/v1/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/scaling",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'replicas' => 5,
'concurrency' => 17,
'replicaCpuMillicores' => 1062,
'replicaMemoryGb' => 4.25
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.clickhouse.cloud/v1/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/scaling"
payload := strings.NewReader("{\n \"replicas\": 5,\n \"concurrency\": 17,\n \"replicaCpuMillicores\": 1062,\n \"replicaMemoryGb\": 4.25\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.clickhouse.cloud/v1/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/scaling")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"replicas\": 5,\n \"concurrency\": 17,\n \"replicaCpuMillicores\": 1062,\n \"replicaMemoryGb\": 4.25\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.clickhouse.cloud/v1/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/scaling")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"replicas\": 5,\n \"concurrency\": 17,\n \"replicaCpuMillicores\": 1062,\n \"replicaMemoryGb\": 4.25\n}"
response = http.request(request)
puts response.read_body{
"status": 200,
"requestId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"result": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"serviceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"state": "<string>",
"scaling": {
"replicas": 123,
"concurrency": 123,
"replicaCpuMillicores": 1062,
"replicaMemoryGb": 4.25
},
"source": {
"kafka": {
"brokers": "<string>",
"topics": "<string>",
"consumerGroup": "my-clickpipe-consumer-group",
"iamRole": "arn:aws:iam::123456789012:role/MyRole",
"offset": {
"timestamp": "2021-01-01T00:00"
},
"schemaRegistry": {
"url": "https://psrc-aa00.us-east-2.aws.confluent.cloud/schemas/ids/100004",
"authentication": "PLAIN",
"caCertificate": "<string>"
},
"caCertificate": "<string>",
"reversePrivateEndpointIds": [
"<string>"
]
},
"objectStorage": {
"url": "https://datasets-documentation.s3.eu-west-3.amazonaws.com/http/**.ndjson.gz",
"delimiter": ",",
"compression": "auto",
"isContinuous": true,
"queueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue",
"iamRole": "arn:aws:iam::123456789012:role/MyRole",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey;EndpointSuffix=core.windows.net",
"path": "data/logs/*.json",
"azureContainerName": "mycontainer"
},
"kinesis": {
"streamName": "my-stream",
"region": "us-east-1",
"useEnhancedFanOut": true,
"timestamp": 1615766400,
"iamRole": "arn:aws:iam::123456789012:role/MyRole"
},
"postgres": {
"host": "<string>",
"port": 123,
"database": "<string>",
"settings": {
"syncIntervalSeconds": 123,
"pullBatchSize": 123,
"publicationName": "<string>",
"replicationSlotName": "<string>",
"allowNullableColumns": true,
"initialLoadParallelism": 123,
"snapshotNumRowsPerPartition": 123,
"snapshotNumberOfParallelTables": 123,
"enableFailoverSlots": true
},
"tableMappings": [
{
"sourceSchemaName": "<string>",
"sourceTable": "<string>",
"targetTable": "<string>",
"excludedColumns": [
"<string>"
],
"useCustomSortingKey": true,
"sortingKeys": [
"<string>"
]
}
]
}
},
"destination": {
"database": "<string>",
"table": "<string>",
"managedTable": true,
"tableDefinition": {
"engine": {
"versionColumnId": "<string>",
"columnIds": [
"<string>"
]
},
"sortingKey": [
"<string>"
],
"partitionBy": "<string>",
"primaryKey": "<string>"
},
"columns": [
{
"name": "<string>",
"type": "<string>"
}
]
},
"fieldMappings": [
{
"sourceField": "<string>",
"destinationField": "<string>"
}
],
"settings": {
"streaming_max_insert_wait_ms": 5000,
"object_storage_concurrency": 1,
"object_storage_polling_interval_ms": 30000,
"object_storage_max_insert_bytes": 10737418240,
"object_storage_max_file_count": 100,
"clickhouse_max_threads": 8,
"clickhouse_max_insert_threads": 1,
"clickhouse_min_insert_block_size_bytes": 1073741824,
"clickhouse_max_download_threads": 4,
"clickhouse_parallel_distributed_insert_select": 2,
"object_storage_use_cluster_function": true,
"clickhouse_parallel_view_processing": false
},
"createdAt": "<string>",
"updatedAt": "<string>"
}
}{
"status": 400,
"error": "<string>"
}