Resources
List Audit Events
Query the immutable audit trail.
GET
/
api
/
v1
/
audit
List Audit Events
curl --request GET \
--url https://api.example.com/api/v1/auditimport requests
url = "https://api.example.com/api/v1/audit"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/v1/audit', 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.example.com/api/v1/audit",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/audit"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/audit")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/audit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"id": "<string>",
"action": "<string>",
"entityType": "<string>",
"entityId": "<string>",
"userId": "<string>",
"timestamp": "<string>",
"inputSummary": {},
"outputSummary": {}
}Query the immutable audit trail. Every API action (completions, skill installs, key operations, etc.) is logged with full context.
Authentication
Requires a Bearer token. See Authentication.Request Example
curl https://www.hitheo.ai/api/v1/audit \
-H "Authorization: Bearer $THEO_API_KEY"
Response
Returns an array of audit event objects. Each event includes:string
Event ID.
string
Action performed (e.g.,
"completion.created", "skill.installed", "key.created").string
Type of entity affected (e.g.,
"completion", "skill", "api_key").string
ID of the affected entity.
string
User who performed the action.
string
ISO 8601 timestamp.
object
Summary of the request input.
object
Summary of the response output.
Audit events are stored in a tamper-evident, append-only log. They cannot be modified or deleted.
Endpoint
GET /api/v1/audit
Requires authentication via Bearer token. See Authentication.Was this page helpful?
List Audit Events
curl --request GET \
--url https://api.example.com/api/v1/auditimport requests
url = "https://api.example.com/api/v1/audit"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/v1/audit', 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.example.com/api/v1/audit",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/audit"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/audit")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/audit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"id": "<string>",
"action": "<string>",
"entityType": "<string>",
"entityId": "<string>",
"userId": "<string>",
"timestamp": "<string>",
"inputSummary": {},
"outputSummary": {}
}