curl --request GET \
--url https://{instance}/api/export/v1/activities \
--header 'Authorization: <api-key>'import requests
url = "https://{instance}/api/export/v1/activities"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://{instance}/api/export/v1/activities', 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://{instance}/api/export/v1/activities",
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: <api-key>"
],
]);
$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://{instance}/api/export/v1/activities"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{instance}/api/export/v1/activities")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{instance}/api/export/v1/activities")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body<string>{
"error": "<string>"
}{
"error": "<string>"
}Export activity logs
Export activity log entries, one row per event. This endpoint backs the Export button on the activity logs in the UI; see Activity logs.
There is no single required permission: visibility is scoped per activity type by the permissions on your API key. For example, SOURCES_READ lets the export include source-related activity entries, and entries your key can’t see are left out.
Activity rows for deleted resources stay in the export with their original name preserved, so records such as “user X deleted source Y” remain visible after Y is removed.
This endpoint accepts filter but not sort.
| Column | Description |
|---|---|
Timestamp | ISO-8601 UTC timestamp. |
Action | Action verb (CREATED, UPDATED, DELETED, or a resource-specific verb). |
Activity type | Event type identifier. |
Entity name | Name of the affected resource at the time of the event. |
Entity ID | Identifier of the affected resource. |
Actor type | User, API key, or System. |
Actor | Email (for users) or API key name (for API keys); empty for System. |
Namespace | Namespace the resource belonged to, where applicable. |
Description | Human-readable summary of the event. |
curl --request GET \
--url https://{instance}/api/export/v1/activities \
--header 'Authorization: <api-key>'import requests
url = "https://{instance}/api/export/v1/activities"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://{instance}/api/export/v1/activities', 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://{instance}/api/export/v1/activities",
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: <api-key>"
],
]);
$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://{instance}/api/export/v1/activities"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{instance}/api/export/v1/activities")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{instance}/api/export/v1/activities")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body<string>{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Your API key's access key and access secret, colon-delimited: <access-key>:<access-secret>. The same header as the GraphQL API; see Authentication.
Query Parameters
A URL-encoded JSON object narrowing which entries to export. Fields: namespace, source, and validator (each an array of IDs), and timeRange (an object with start and end).
Response
A CSV export with a header row, capped at 100,000 rows. The Content-Disposition header carries a generated filename built from the resource, an optional entity name, and the time range (or today's date if the request has no time bounds).
The response is of type string.