Update key
Updates API key properties.
PATCH
/
v1
/
organizations
/
{organizationId}
/
keys
/
{keyId}
Update key
curl --request PATCH \
--url https://api.clickhouse.cloud/v1/organizations/{organizationId}/keys/{keyId} \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"roles": [],
"assignedRoleIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"expireAt": "2023-11-07T05:31:56Z",
"ipAccessList": [
{
"source": "<string>",
"description": "<string>"
}
]
}
'import requests
url = "https://api.clickhouse.cloud/v1/organizations/{organizationId}/keys/{keyId}"
payload = {
"name": "<string>",
"roles": [],
"assignedRoleIds": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"expireAt": "2023-11-07T05:31:56Z",
"ipAccessList": [
{
"source": "<string>",
"description": "<string>"
}
]
}
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({
name: '<string>',
roles: [],
assignedRoleIds: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
expireAt: '2023-11-07T05:31:56Z',
ipAccessList: [{source: '<string>', description: '<string>'}]
})
};
fetch('https://api.clickhouse.cloud/v1/organizations/{organizationId}/keys/{keyId}', 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}/keys/{keyId}",
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([
'name' => '<string>',
'roles' => [
],
'assignedRoleIds' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'expireAt' => '2023-11-07T05:31:56Z',
'ipAccessList' => [
[
'source' => '<string>',
'description' => '<string>'
]
]
]),
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}/keys/{keyId}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"roles\": [],\n \"assignedRoleIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"expireAt\": \"2023-11-07T05:31:56Z\",\n \"ipAccessList\": [\n {\n \"source\": \"<string>\",\n \"description\": \"<string>\"\n }\n ]\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}/keys/{keyId}")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"roles\": [],\n \"assignedRoleIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"expireAt\": \"2023-11-07T05:31:56Z\",\n \"ipAccessList\": [\n {\n \"source\": \"<string>\",\n \"description\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.clickhouse.cloud/v1/organizations/{organizationId}/keys/{keyId}")
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 \"name\": \"<string>\",\n \"roles\": [],\n \"assignedRoleIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"expireAt\": \"2023-11-07T05:31:56Z\",\n \"ipAccessList\": [\n {\n \"source\": \"<string>\",\n \"description\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": 200,
"requestId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"result": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"roles": [],
"assignedRoles": [
{
"roleId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"roleName": "<string>"
}
],
"keySuffix": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"expireAt": "2023-11-07T05:31:56Z",
"usedAt": "2023-11-07T05:31:56Z",
"ipAccessList": [
{
"source": "<string>",
"description": "<string>"
}
]
}
}{
"status": 400,
"error": "<string>",
"requestId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"status": 500,
"error": "<string>",
"requestId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}Updates API key properties.
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 key.
ID of the key to update.
Body
application/json
Name of the key
DEPRECATED. Use assignedRoleIds instead. List of roles assigned to the key.
Available options:
admin, developer, query_endpoints Array of role UUIDs to assign to the API key
Timestamp the key expires. If null or is empty the key never expires. ISO-8601.
State of the key: 'enabled', 'disabled'.
Available options:
enabled, disabled List of IP addresses allowed to access the API using this key
Show child attributes
Show child attributes
Last modified on July 21, 2026
Was this page helpful?
Previous
Delete keyDeletes API key. Only a key not used to authenticate the active request can be deleted.
Next
⌘I
Update key
curl --request PATCH \
--url https://api.clickhouse.cloud/v1/organizations/{organizationId}/keys/{keyId} \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"roles": [],
"assignedRoleIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"expireAt": "2023-11-07T05:31:56Z",
"ipAccessList": [
{
"source": "<string>",
"description": "<string>"
}
]
}
'import requests
url = "https://api.clickhouse.cloud/v1/organizations/{organizationId}/keys/{keyId}"
payload = {
"name": "<string>",
"roles": [],
"assignedRoleIds": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"expireAt": "2023-11-07T05:31:56Z",
"ipAccessList": [
{
"source": "<string>",
"description": "<string>"
}
]
}
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({
name: '<string>',
roles: [],
assignedRoleIds: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
expireAt: '2023-11-07T05:31:56Z',
ipAccessList: [{source: '<string>', description: '<string>'}]
})
};
fetch('https://api.clickhouse.cloud/v1/organizations/{organizationId}/keys/{keyId}', 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}/keys/{keyId}",
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([
'name' => '<string>',
'roles' => [
],
'assignedRoleIds' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'expireAt' => '2023-11-07T05:31:56Z',
'ipAccessList' => [
[
'source' => '<string>',
'description' => '<string>'
]
]
]),
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}/keys/{keyId}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"roles\": [],\n \"assignedRoleIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"expireAt\": \"2023-11-07T05:31:56Z\",\n \"ipAccessList\": [\n {\n \"source\": \"<string>\",\n \"description\": \"<string>\"\n }\n ]\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}/keys/{keyId}")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"roles\": [],\n \"assignedRoleIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"expireAt\": \"2023-11-07T05:31:56Z\",\n \"ipAccessList\": [\n {\n \"source\": \"<string>\",\n \"description\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.clickhouse.cloud/v1/organizations/{organizationId}/keys/{keyId}")
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 \"name\": \"<string>\",\n \"roles\": [],\n \"assignedRoleIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"expireAt\": \"2023-11-07T05:31:56Z\",\n \"ipAccessList\": [\n {\n \"source\": \"<string>\",\n \"description\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": 200,
"requestId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"result": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"roles": [],
"assignedRoles": [
{
"roleId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"roleName": "<string>"
}
],
"keySuffix": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"expireAt": "2023-11-07T05:31:56Z",
"usedAt": "2023-11-07T05:31:56Z",
"ipAccessList": [
{
"source": "<string>",
"description": "<string>"
}
]
}
}{
"status": 400,
"error": "<string>",
"requestId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"status": 500,
"error": "<string>",
"requestId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}