curl --request POST \
--url https://sdk.anghami.com/v1/developer/keys/{id}/rotate \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"id": "<string>"
}
'import requests
url = "https://sdk.anghami.com/v1/developer/keys/{id}/rotate"
payload = { "id": "<string>" }
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({id: '<string>'})
};
fetch('https://sdk.anghami.com/v1/developer/keys/{id}/rotate', 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://sdk.anghami.com/v1/developer/keys/{id}/rotate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"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://sdk.anghami.com/v1/developer/keys/{id}/rotate"
payload := strings.NewReader("{\n \"id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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.post("https://sdk.anghami.com/v1/developer/keys/{id}/rotate")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sdk.anghami.com/v1/developer/keys/{id}/rotate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"apiKey": {
"id": "<string>",
"name": "<string>",
"keyPrefix": "<string>",
"status": "API_KEY_STATUS_UNSPECIFIED",
"scopes": [
"<string>"
],
"createdAt": "<string>",
"lastUsedAt": "<string>",
"expiresAt": "<string>"
},
"secret": "<string>"
}{
"violations": [
{
"field": "<string>",
"description": "<string>"
}
]
}{
"message": "<string>"
}RotateApiKey
RotateApiKey generates a new secret for an existing API key. The old key remains valid for a server-defined grace period to allow migration. Returns the new full secret once — it cannot be retrieved again.
curl --request POST \
--url https://sdk.anghami.com/v1/developer/keys/{id}/rotate \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"id": "<string>"
}
'import requests
url = "https://sdk.anghami.com/v1/developer/keys/{id}/rotate"
payload = { "id": "<string>" }
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({id: '<string>'})
};
fetch('https://sdk.anghami.com/v1/developer/keys/{id}/rotate', 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://sdk.anghami.com/v1/developer/keys/{id}/rotate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"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://sdk.anghami.com/v1/developer/keys/{id}/rotate"
payload := strings.NewReader("{\n \"id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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.post("https://sdk.anghami.com/v1/developer/keys/{id}/rotate")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sdk.anghami.com/v1/developer/keys/{id}/rotate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"apiKey": {
"id": "<string>",
"name": "<string>",
"keyPrefix": "<string>",
"status": "API_KEY_STATUS_UNSPECIFIED",
"scopes": [
"<string>"
],
"createdAt": "<string>",
"lastUsedAt": "<string>",
"expiresAt": "<string>"
},
"secret": "<string>"
}{
"violations": [
{
"field": "<string>",
"description": "<string>"
}
]
}{
"message": "<string>"
}Headers
OAuth 2.0 Bearer token. Required for all key management operations. Format: Bearer <access_token>.
"Bearer eyJhbGciOiJSUzI1NiIs..."
Path Parameters
Unique identifier of the API key to rotate.
Body
RotateApiKeyRequest is the request message for rotating an API key's secret. A new secret is generated while the old key remains valid for a server-defined grace period.
Unique identifier of the API key to rotate.
Response
Successful response
RotateApiKeyResponse is the response message containing the rotated API key and new secret. This is the only time the new secret is returned — store it securely.
ApiKey represents a developer API key used for server-to-server authentication. API keys are passed in the x-api-key HTTP header and are billed per key. The full secret is only returned on creation and rotation.
Show child attributes
Show child attributes
The new full API key secret. This replaces the previous x-api-key value. The old key remains valid for a server-defined grace period.