Register (or rotate) the public key Tuteliq uses to encrypt your incident records
curl --request POST \
--url https://api.tuteliq.ai/api/v1/account/encryption-key \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"public_key_pem": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({public_key_pem: '<string>'})
};
fetch('https://api.tuteliq.ai/api/v1/account/encryption-key', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.tuteliq.ai/api/v1/account/encryption-key"
payload = { "public_key_pem": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"public_key_pem\": \"<string>\"\n}")
val request = Request.Builder()
.url("https://api.tuteliq.ai/api/v1/account/encryption-key")
.post(body)
.addHeader("Authorization", "Bearer <token>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = ["public_key_pem": "<string>"] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.tuteliq.ai/api/v1/account/encryption-key")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))using RestSharp;
var options = new RestClientOptions("https://api.tuteliq.ai/api/v1/account/encryption-key");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"public_key_pem\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
false{
"algorithm": "<string>",
"public_key_pem": "<string>",
"key_fingerprint": "<string>",
"registered_at": "<string>",
"rotated_from": "<string>"
}Register (or rotate) the public key Tuteliq uses to encrypt your incident records
Registers an RSA public key. After registration, all NEW incident records (rationale, visual_description, etc.) are encrypted with a per-record AES key, which is itself wrapped with this RSA key (hybrid scheme RSA-OAEP + AES-256-GCM). Tuteliq cannot decrypt — only your dashboard (with the matching private key) can.
Rotating: POST a new key here. New incidents use the new key; old incidents remain readable with the old private key until they expire (90 days).
Private key is YOUR responsibility — Tuteliq cannot recover lost-key incidents.
POST
/
api
/
v1
/
account
/
encryption-key
Register (or rotate) the public key Tuteliq uses to encrypt your incident records
curl --request POST \
--url https://api.tuteliq.ai/api/v1/account/encryption-key \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"public_key_pem": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({public_key_pem: '<string>'})
};
fetch('https://api.tuteliq.ai/api/v1/account/encryption-key', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.tuteliq.ai/api/v1/account/encryption-key"
payload = { "public_key_pem": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"public_key_pem\": \"<string>\"\n}")
val request = Request.Builder()
.url("https://api.tuteliq.ai/api/v1/account/encryption-key")
.post(body)
.addHeader("Authorization", "Bearer <token>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = ["public_key_pem": "<string>"] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.tuteliq.ai/api/v1/account/encryption-key")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))using RestSharp;
var options = new RestClientOptions("https://api.tuteliq.ai/api/v1/account/encryption-key");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"public_key_pem\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
false{
"algorithm": "<string>",
"public_key_pem": "<string>",
"key_fingerprint": "<string>",
"registered_at": "<string>",
"rotated_from": "<string>"
}Authorizations
bearerAuthapiKeyHeader
API key as Bearer token
Body
application/json