curl --request POST \
--url https://api.usedatabrain.com/api/v2/data-app/rotate-api \
--header 'Authorization: Bearer 550e8400-e29b-41d4-a716-446655440000' \
--header 'Content-Type: application/json' \
--data '{
"expireAt": 0
}'
curl --request POST \
--url https://api.usedatabrain.com/api/v2/data-app/rotate-api \
--header 'Authorization: Bearer 550e8400-e29b-41d4-a716-446655440000' \
--header 'Content-Type: application/json' \
--data '{
"expireAt": 3600
}'
const response = await fetch('https://api.usedatabrain.com/api/v2/data-app/rotate-api', {
method: 'POST',
headers: {
'Authorization': 'Bearer 550e8400-e29b-41d4-a716-446655440000',
'Content-Type': 'application/json'
},
body: JSON.stringify({
expireAt: 3600
})
});
const data = await response.json();
console.log('New API Key:', data.key);
import requests
response = requests.post(
'https://api.usedatabrain.com/api/v2/data-app/rotate-api',
headers={
'Authorization': 'Bearer 550e8400-e29b-41d4-a716-446655440000',
'Content-Type': 'application/json'
},
json={
'expireAt': 3600
}
)
data = response.json()
print('New API Key:', data['key'])
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;
HttpClient client = HttpClient.newHttpClient();
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> requestBody = Map.of(
"expireAt", 3600
);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.usedatabrain.com/api/v2/data-app/rotate-api"))
.header("Authorization", "Bearer 550e8400-e29b-41d4-a716-446655440000")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(mapper.writeValueAsString(requestBody)))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("Response: " + response.body());
<?php
$curl = curl_init();
$data = [
'expireAt' => 3600
];
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.usedatabrain.com/api/v2/data-app/rotate-api',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer 550e8400-e29b-41d4-a716-446655440000',
'Content-Type: application/json'
],
]);
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response, true);
echo 'New API Key: ' . $result['key'];
?>
require 'net/http'
require 'json'
uri = URI('https://api.usedatabrain.com/api/v2/data-app/rotate-api')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer 550e8400-e29b-41d4-a716-446655440000'
request['Content-Type'] = 'application/json'
request.body = {
expireAt: 3600
}.to_json
response = http.request(request)
result = JSON.parse(response.body)
puts "New API Key: #{result['key']}"
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
type RotateKeyRequest struct {
ExpireAt int `json:"expireAt"`
}
type RotateKeyResponse struct {
Key string `json:"key"`
}
func main() {
requestBody := RotateKeyRequest{
ExpireAt: 3600,
}
jsonData, _ := json.Marshal(requestBody)
req, _ := http.NewRequest("POST", "https://api.usedatabrain.com/api/v2/data-app/rotate-api", bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer 550e8400-e29b-41d4-a716-446655440000")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var result RotateKeyResponse
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("New API Key: %s\n", result.Key)
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
public class RotateKeyRequest
{
[JsonProperty("expireAt")]
public int ExpireAt { get; set; }
}
public class RotateKeyResponse
{
[JsonProperty("key")]
public string Key { get; set; }
}
var client = new HttpClient();
var request = new RotateKeyRequest { ExpireAt = 3600 };
var json = JsonConvert.SerializeObject(request);
var content = new StringContent(json, Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Add("Authorization", "Bearer 550e8400-e29b-41d4-a716-446655440000");
var response = await client.PostAsync("https://api.usedatabrain.com/api/v2/data-app/rotate-api", content);
var result = JsonConvert.DeserializeObject<RotateKeyResponse>(await response.Content.ReadAsStringAsync());
Console.WriteLine($"New API Key: {result.Key}");
{
"key": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
{
"error": {
"code": "INVALID_REQUEST_BODY",
"message": "\"expireAt\" is required"
}
}
{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "API Key is not provided or Invalid!"
}
}
{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "API Key is invalid or expired!"
}
}
{
"error": {
"code": "INVALID_DATA_APP_API_KEY",
"message": "invalid or expired API KEY, data app not found"
}
}
{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "INTERNAL_SERVER_ERROR"
}
}
curl --request POST \
--url https://api.usedatabrain.com/api/v2/data-app/rotate-api \
--header 'Authorization: Bearer 550e8400-e29b-41d4-a716-446655440000' \
--header 'Content-Type: application/json' \
--data '{
"expireAt": 0
}'
curl --request POST \
--url https://api.usedatabrain.com/api/v2/data-app/rotate-api \
--header 'Authorization: Bearer 550e8400-e29b-41d4-a716-446655440000' \
--header 'Content-Type: application/json' \
--data '{
"expireAt": 3600
}'
const response = await fetch('https://api.usedatabrain.com/api/v2/data-app/rotate-api', {
method: 'POST',
headers: {
'Authorization': 'Bearer 550e8400-e29b-41d4-a716-446655440000',
'Content-Type': 'application/json'
},
body: JSON.stringify({
expireAt: 3600
})
});
const data = await response.json();
console.log('New API Key:', data.key);
import requests
response = requests.post(
'https://api.usedatabrain.com/api/v2/data-app/rotate-api',
headers={
'Authorization': 'Bearer 550e8400-e29b-41d4-a716-446655440000',
'Content-Type': 'application/json'
},
json={
'expireAt': 3600
}
)
data = response.json()
print('New API Key:', data['key'])
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;
HttpClient client = HttpClient.newHttpClient();
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> requestBody = Map.of(
"expireAt", 3600
);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.usedatabrain.com/api/v2/data-app/rotate-api"))
.header("Authorization", "Bearer 550e8400-e29b-41d4-a716-446655440000")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(mapper.writeValueAsString(requestBody)))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("Response: " + response.body());
<?php
$curl = curl_init();
$data = [
'expireAt' => 3600
];
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.usedatabrain.com/api/v2/data-app/rotate-api',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer 550e8400-e29b-41d4-a716-446655440000',
'Content-Type: application/json'
],
]);
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response, true);
echo 'New API Key: ' . $result['key'];
?>
require 'net/http'
require 'json'
uri = URI('https://api.usedatabrain.com/api/v2/data-app/rotate-api')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer 550e8400-e29b-41d4-a716-446655440000'
request['Content-Type'] = 'application/json'
request.body = {
expireAt: 3600
}.to_json
response = http.request(request)
result = JSON.parse(response.body)
puts "New API Key: #{result['key']}"
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
type RotateKeyRequest struct {
ExpireAt int `json:"expireAt"`
}
type RotateKeyResponse struct {
Key string `json:"key"`
}
func main() {
requestBody := RotateKeyRequest{
ExpireAt: 3600,
}
jsonData, _ := json.Marshal(requestBody)
req, _ := http.NewRequest("POST", "https://api.usedatabrain.com/api/v2/data-app/rotate-api", bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer 550e8400-e29b-41d4-a716-446655440000")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var result RotateKeyResponse
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("New API Key: %s\n", result.Key)
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
public class RotateKeyRequest
{
[JsonProperty("expireAt")]
public int ExpireAt { get; set; }
}
public class RotateKeyResponse
{
[JsonProperty("key")]
public string Key { get; set; }
}
var client = new HttpClient();
var request = new RotateKeyRequest { ExpireAt = 3600 };
var json = JsonConvert.SerializeObject(request);
var content = new StringContent(json, Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Add("Authorization", "Bearer 550e8400-e29b-41d4-a716-446655440000");
var response = await client.PostAsync("https://api.usedatabrain.com/api/v2/data-app/rotate-api", content);
var result = JsonConvert.DeserializeObject<RotateKeyResponse>(await response.Content.ReadAsStringAsync());
Console.WriteLine($"New API Key: {result.Key}");
{
"key": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
{
"error": {
"code": "INVALID_REQUEST_BODY",
"message": "\"expireAt\" is required"
}
}
{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "API Key is not provided or Invalid!"
}
}
{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "API Key is invalid or expired!"
}
}
{
"error": {
"code": "INVALID_DATA_APP_API_KEY",
"message": "invalid or expired API KEY, data app not found"
}
}
{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "INTERNAL_SERVER_ERROR"
}
}
API Tokens
Rotate API Key
Rotate your Data App API key to enhance security and manage key lifecycle effectively.
curl --request POST \
--url https://api.usedatabrain.com/api/v2/data-app/rotate-api \
--header 'Authorization: Bearer 550e8400-e29b-41d4-a716-446655440000' \
--header 'Content-Type: application/json' \
--data '{
"expireAt": 0
}'
curl --request POST \
--url https://api.usedatabrain.com/api/v2/data-app/rotate-api \
--header 'Authorization: Bearer 550e8400-e29b-41d4-a716-446655440000' \
--header 'Content-Type: application/json' \
--data '{
"expireAt": 3600
}'
const response = await fetch('https://api.usedatabrain.com/api/v2/data-app/rotate-api', {
method: 'POST',
headers: {
'Authorization': 'Bearer 550e8400-e29b-41d4-a716-446655440000',
'Content-Type': 'application/json'
},
body: JSON.stringify({
expireAt: 3600
})
});
const data = await response.json();
console.log('New API Key:', data.key);
import requests
response = requests.post(
'https://api.usedatabrain.com/api/v2/data-app/rotate-api',
headers={
'Authorization': 'Bearer 550e8400-e29b-41d4-a716-446655440000',
'Content-Type': 'application/json'
},
json={
'expireAt': 3600
}
)
data = response.json()
print('New API Key:', data['key'])
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;
HttpClient client = HttpClient.newHttpClient();
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> requestBody = Map.of(
"expireAt", 3600
);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.usedatabrain.com/api/v2/data-app/rotate-api"))
.header("Authorization", "Bearer 550e8400-e29b-41d4-a716-446655440000")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(mapper.writeValueAsString(requestBody)))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("Response: " + response.body());
<?php
$curl = curl_init();
$data = [
'expireAt' => 3600
];
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.usedatabrain.com/api/v2/data-app/rotate-api',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer 550e8400-e29b-41d4-a716-446655440000',
'Content-Type: application/json'
],
]);
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response, true);
echo 'New API Key: ' . $result['key'];
?>
require 'net/http'
require 'json'
uri = URI('https://api.usedatabrain.com/api/v2/data-app/rotate-api')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer 550e8400-e29b-41d4-a716-446655440000'
request['Content-Type'] = 'application/json'
request.body = {
expireAt: 3600
}.to_json
response = http.request(request)
result = JSON.parse(response.body)
puts "New API Key: #{result['key']}"
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
type RotateKeyRequest struct {
ExpireAt int `json:"expireAt"`
}
type RotateKeyResponse struct {
Key string `json:"key"`
}
func main() {
requestBody := RotateKeyRequest{
ExpireAt: 3600,
}
jsonData, _ := json.Marshal(requestBody)
req, _ := http.NewRequest("POST", "https://api.usedatabrain.com/api/v2/data-app/rotate-api", bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer 550e8400-e29b-41d4-a716-446655440000")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var result RotateKeyResponse
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("New API Key: %s\n", result.Key)
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
public class RotateKeyRequest
{
[JsonProperty("expireAt")]
public int ExpireAt { get; set; }
}
public class RotateKeyResponse
{
[JsonProperty("key")]
public string Key { get; set; }
}
var client = new HttpClient();
var request = new RotateKeyRequest { ExpireAt = 3600 };
var json = JsonConvert.SerializeObject(request);
var content = new StringContent(json, Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Add("Authorization", "Bearer 550e8400-e29b-41d4-a716-446655440000");
var response = await client.PostAsync("https://api.usedatabrain.com/api/v2/data-app/rotate-api", content);
var result = JsonConvert.DeserializeObject<RotateKeyResponse>(await response.Content.ReadAsStringAsync());
Console.WriteLine($"New API Key: {result.Key}");
{
"key": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
{
"error": {
"code": "INVALID_REQUEST_BODY",
"message": "\"expireAt\" is required"
}
}
{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "API Key is not provided or Invalid!"
}
}
{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "API Key is invalid or expired!"
}
}
{
"error": {
"code": "INVALID_DATA_APP_API_KEY",
"message": "invalid or expired API KEY, data app not found"
}
}
{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "INTERNAL_SERVER_ERROR"
}
}
POST
/
api
/
v2
/
data-app
/
rotate-api
curl --request POST \
--url https://api.usedatabrain.com/api/v2/data-app/rotate-api \
--header 'Authorization: Bearer 550e8400-e29b-41d4-a716-446655440000' \
--header 'Content-Type: application/json' \
--data '{
"expireAt": 0
}'
curl --request POST \
--url https://api.usedatabrain.com/api/v2/data-app/rotate-api \
--header 'Authorization: Bearer 550e8400-e29b-41d4-a716-446655440000' \
--header 'Content-Type: application/json' \
--data '{
"expireAt": 3600
}'
const response = await fetch('https://api.usedatabrain.com/api/v2/data-app/rotate-api', {
method: 'POST',
headers: {
'Authorization': 'Bearer 550e8400-e29b-41d4-a716-446655440000',
'Content-Type': 'application/json'
},
body: JSON.stringify({
expireAt: 3600
})
});
const data = await response.json();
console.log('New API Key:', data.key);
import requests
response = requests.post(
'https://api.usedatabrain.com/api/v2/data-app/rotate-api',
headers={
'Authorization': 'Bearer 550e8400-e29b-41d4-a716-446655440000',
'Content-Type': 'application/json'
},
json={
'expireAt': 3600
}
)
data = response.json()
print('New API Key:', data['key'])
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;
HttpClient client = HttpClient.newHttpClient();
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> requestBody = Map.of(
"expireAt", 3600
);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.usedatabrain.com/api/v2/data-app/rotate-api"))
.header("Authorization", "Bearer 550e8400-e29b-41d4-a716-446655440000")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(mapper.writeValueAsString(requestBody)))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("Response: " + response.body());
<?php
$curl = curl_init();
$data = [
'expireAt' => 3600
];
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.usedatabrain.com/api/v2/data-app/rotate-api',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer 550e8400-e29b-41d4-a716-446655440000',
'Content-Type: application/json'
],
]);
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response, true);
echo 'New API Key: ' . $result['key'];
?>
require 'net/http'
require 'json'
uri = URI('https://api.usedatabrain.com/api/v2/data-app/rotate-api')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer 550e8400-e29b-41d4-a716-446655440000'
request['Content-Type'] = 'application/json'
request.body = {
expireAt: 3600
}.to_json
response = http.request(request)
result = JSON.parse(response.body)
puts "New API Key: #{result['key']}"
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
type RotateKeyRequest struct {
ExpireAt int `json:"expireAt"`
}
type RotateKeyResponse struct {
Key string `json:"key"`
}
func main() {
requestBody := RotateKeyRequest{
ExpireAt: 3600,
}
jsonData, _ := json.Marshal(requestBody)
req, _ := http.NewRequest("POST", "https://api.usedatabrain.com/api/v2/data-app/rotate-api", bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer 550e8400-e29b-41d4-a716-446655440000")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var result RotateKeyResponse
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("New API Key: %s\n", result.Key)
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
public class RotateKeyRequest
{
[JsonProperty("expireAt")]
public int ExpireAt { get; set; }
}
public class RotateKeyResponse
{
[JsonProperty("key")]
public string Key { get; set; }
}
var client = new HttpClient();
var request = new RotateKeyRequest { ExpireAt = 3600 };
var json = JsonConvert.SerializeObject(request);
var content = new StringContent(json, Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Add("Authorization", "Bearer 550e8400-e29b-41d4-a716-446655440000");
var response = await client.PostAsync("https://api.usedatabrain.com/api/v2/data-app/rotate-api", content);
var result = JsonConvert.DeserializeObject<RotateKeyResponse>(await response.Content.ReadAsStringAsync());
Console.WriteLine($"New API Key: {result.Key}");
{
"key": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
{
"error": {
"code": "INVALID_REQUEST_BODY",
"message": "\"expireAt\" is required"
}
}
{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "API Key is not provided or Invalid!"
}
}
{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "API Key is invalid or expired!"
}
}
{
"error": {
"code": "INVALID_DATA_APP_API_KEY",
"message": "invalid or expired API KEY, data app not found"
}
}
{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "INTERNAL_SERVER_ERROR"
}
}
Rotate your data app API key to maintain security best practices by periodically refreshing credentials. This endpoint expires the current API key and generates a new one, ensuring seamless transition while maintaining security.
The API key used in the
Authorization header is the key being rotated. You only need to provide expireAt in the request body — no key field required.Authentication
This endpoint requires the data app API key you want to rotate in theAuthorization header. The key used for authentication is the key that will be expired and replaced with a new one.
To access your data app API key:
- Go to your Databrain dashboard and open the Data Apps section.
- Select the data app whose API key you want to rotate.
- Find the API Key under the data app settings.
Headers
Bearer token for API authentication. Use the data app API key you want to rotate.
Authorization: Bearer 550e8400-e29b-41d4-a716-446655440000
Must be set to
application/json for all requests.Content-Type: application/json
Request Body
Duration in seconds until the current API key expires. This allows for a grace period to update your applications before the old key stops working. Accepts a number or a numeric string.
Show Common expiration durations
Show Common expiration durations
0- Expire immediately (instant rotation)300- 5 minutes3600- 1 hour86400- 24 hours604800- 7 days
3600) to allow time for updating your applications without service interruption.Response
The newly generated API key (UUID format). Use this key for all future API requests.
Examples
HTTP Status Code Summary
| Status Code | Description |
|---|---|
200 | OK - Key rotated successfully |
400 | Bad Request - Invalid request parameters or invalid key state |
401 | Unauthorized - API key not found in DB or already expired |
500 | Internal Server Error - Server error occurred |
Possible Errors
| Error Code | HTTP Status | Description |
|---|---|---|
INVALID_REQUEST_BODY | 400 | Missing or invalid expireAt parameter |
AUTHENTICATION_ERROR | 400 / 401 | API key missing or not a valid UUID (400); or not found / already expired in DB (401) |
INVALID_DATA_APP_API_KEY | 400 | Token is a service token (no dataAppId), key not found, belongs to a different org, or the key already has an expiry date set |
INTERNAL_SERVER_ERROR | 500 | Server error |
Related Resources
API Token Guide
Learn about API token management and authentication
Create Data App
Create data apps and generate initial API tokens
Guest Token API
Generate guest tokens using your data app API key
List Embeds API
List all embed configurations for your data app
⌘I

