Organizations
List Audit Logs
Retrieve a paginated, filterable list of audit events for your organization. Designed for SIEM integration and compliance workflows.
GET
/
v1
/
audit
/
logs
List Audit Logs
curl --request GET \
--url https://api.bland.ai/v1/audit/logs \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v1/audit/logs"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v1/audit/logs', 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.bland.ai/v1/audit/logs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"authorization: <authorization>"
],
]);
$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.bland.ai/v1/audit/logs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "<authorization>")
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.bland.ai/v1/audit/logs")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/audit/logs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"data": {
"events": [
{
"id": "00000000-0000-0000-0000-000000000001",
"org_id": "00000000-0000-0000-0000-000000000100",
"actor_id": "00000000-0000-0000-0000-000000000200",
"event_type": "pathway.published",
"resource_type": "convo_pathway",
"resource_id": "00000000-0000-0000-0000-000000000300",
"metadata": {
"version_number": 3,
"environment": "production"
},
"created_at": "2025-01-15T14:32:00.000Z"
},
{
"id": "00000000-0000-0000-0000-000000000002",
"org_id": "00000000-0000-0000-0000-000000000100",
"actor_id": "00000000-0000-0000-0000-000000000200",
"event_type": "auth.sso_login",
"resource_type": null,
"resource_id": null,
"metadata": {
"provider_id": "okta",
"email": "user@example.com"
},
"created_at": "2025-01-15T14:30:00.000Z"
}
],
"total": 2,
"total_pages": 1,
"current_page": 1,
"page_size": 50
},
"errors": null
}
Audit logs are an enterprise feature and not yet available for all accounts. To enable audit logging for your organization, contact your Bland representative or reach out to sales.
Overview
Returns a time-ordered log of auditable actions taken within your organization — logins, logouts, pathway changes, knowledge base edits, and more. Results are scoped to your organization and require an admin or owner role.Supported event types
| Event type | Description |
|---|---|
auth.sso_login | User logged in via SSO |
auth.logout | User logged out |
pathway.created | Conversational pathway created |
pathway.updated | Pathway version updated |
pathway.deleted | Pathway deleted |
pathway.published | Pathway version published to an environment |
kb.content_updated | Knowledge base text/markdown content edited |
kb.file_replaced | Knowledge base source file replaced |
kb.urls_replaced | Knowledge base URLs replaced (web scrape) |
kb.version_restored | Knowledge base version restored |
auth.*, pathway.*, kb.*) in your SIEM to group by category.
Headers
Query Parameters
Response
Array of audit event objects, ordered by
created_at descending (newest first).The type of resource affected (e.g.
convo_pathway, kb). null for events like login/logout that don’t target a specific resource.Additional context about the event. Contents vary by event type — may include fields like
version_id, name, environment, filename, email, etc.{
"data": {
"events": [
{
"id": "00000000-0000-0000-0000-000000000001",
"org_id": "00000000-0000-0000-0000-000000000100",
"actor_id": "00000000-0000-0000-0000-000000000200",
"event_type": "pathway.published",
"resource_type": "convo_pathway",
"resource_id": "00000000-0000-0000-0000-000000000300",
"metadata": {
"version_number": 3,
"environment": "production"
},
"created_at": "2025-01-15T14:32:00.000Z"
},
{
"id": "00000000-0000-0000-0000-000000000002",
"org_id": "00000000-0000-0000-0000-000000000100",
"actor_id": "00000000-0000-0000-0000-000000000200",
"event_type": "auth.sso_login",
"resource_type": null,
"resource_id": null,
"metadata": {
"provider_id": "okta",
"email": "user@example.com"
},
"created_at": "2025-01-15T14:30:00.000Z"
}
],
"total": 2,
"total_pages": 1,
"current_page": 1,
"page_size": 50
},
"errors": null
}
Docs for agents: llms.txt
Was this page helpful?
⌘I
List Audit Logs
curl --request GET \
--url https://api.bland.ai/v1/audit/logs \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v1/audit/logs"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v1/audit/logs', 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.bland.ai/v1/audit/logs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"authorization: <authorization>"
],
]);
$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.bland.ai/v1/audit/logs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "<authorization>")
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.bland.ai/v1/audit/logs")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/audit/logs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"data": {
"events": [
{
"id": "00000000-0000-0000-0000-000000000001",
"org_id": "00000000-0000-0000-0000-000000000100",
"actor_id": "00000000-0000-0000-0000-000000000200",
"event_type": "pathway.published",
"resource_type": "convo_pathway",
"resource_id": "00000000-0000-0000-0000-000000000300",
"metadata": {
"version_number": 3,
"environment": "production"
},
"created_at": "2025-01-15T14:32:00.000Z"
},
{
"id": "00000000-0000-0000-0000-000000000002",
"org_id": "00000000-0000-0000-0000-000000000100",
"actor_id": "00000000-0000-0000-0000-000000000200",
"event_type": "auth.sso_login",
"resource_type": null,
"resource_id": null,
"metadata": {
"provider_id": "okta",
"email": "user@example.com"
},
"created_at": "2025-01-15T14:30:00.000Z"
}
],
"total": 2,
"total_pages": 1,
"current_page": 1,
"page_size": 50
},
"errors": null
}