Credential Activity
curl --request POST \
--url https://api.thehyperstack.com/v1/credentials/activity \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"from": "<string>",
"to": "<string>",
"event": {},
"group_key": "<string>",
"credential_key": "<string>",
"page": 123,
"page_size": 123
}
'import requests
url = "https://api.thehyperstack.com/v1/credentials/activity"
payload = {
"from": "<string>",
"to": "<string>",
"event": {},
"group_key": "<string>",
"credential_key": "<string>",
"page": 123,
"page_size": 123
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
from: '<string>',
to: '<string>',
event: {},
group_key: '<string>',
credential_key: '<string>',
page: 123,
page_size: 123
})
};
fetch('https://api.thehyperstack.com/v1/credentials/activity', 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.thehyperstack.com/v1/credentials/activity",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'from' => '<string>',
'to' => '<string>',
'event' => [
],
'group_key' => '<string>',
'credential_key' => '<string>',
'page' => 123,
'page_size' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.thehyperstack.com/v1/credentials/activity"
payload := strings.NewReader("{\n \"from\": \"<string>\",\n \"to\": \"<string>\",\n \"event\": {},\n \"group_key\": \"<string>\",\n \"credential_key\": \"<string>\",\n \"page\": 123,\n \"page_size\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.thehyperstack.com/v1/credentials/activity")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"from\": \"<string>\",\n \"to\": \"<string>\",\n \"event\": {},\n \"group_key\": \"<string>\",\n \"credential_key\": \"<string>\",\n \"page\": 123,\n \"page_size\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.thehyperstack.com/v1/credentials/activity")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"from\": \"<string>\",\n \"to\": \"<string>\",\n \"event\": {},\n \"group_key\": \"<string>\",\n \"credential_key\": \"<string>\",\n \"page\": 123,\n \"page_size\": 123\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"from": "2026-03-01",
"to": "2026-03-31",
"page": 1,
"page_size": 100,
"total": 3,
"events": [
{
"time": "2026-03-16T08:12:45Z",
"event": "view",
"channel": "linkedin",
"credential": "6f1c2a8e-3b4d-4e5f-9a7b-1c2d3e4f5a6b",
"group_key": "Kq7Zp2LmX9aB",
"recipient": { "name": "Jane Doe", "email": "jane.doe@example.com" },
"country": "GB",
"device": "iPhone"
},
{
"time": "2026-03-16T08:14:02Z",
"event": "share",
"channel": "addtolinkedin",
"credential": "6f1c2a8e-3b4d-4e5f-9a7b-1c2d3e4f5a6b",
"group_key": "Kq7Zp2LmX9aB",
"recipient": { "name": "Jane Doe", "email": "jane.doe@example.com" },
"country": null,
"device": null
},
{
"time": "2026-03-18T15:40:19Z",
"event": "download",
"channel": "pdf",
"credential": "6f1c2a8e-3b4d-4e5f-9a7b-1c2d3e4f5a6b",
"group_key": "Kq7Zp2LmX9aB",
"recipient": { "name": "Jane Doe", "email": "jane.doe@example.com" },
"country": null,
"device": null
}
]
}
{
"success": false,
"error": "from and to are required, as dates in YYYY-MM-DD format",
"error_code": "invalid_date"
}
{
"success": false,
"error": "Date range is more than 31 days",
"error_code": "range_too_large"
}
{
"success": false,
"error": "event must be a list of: view, share, download, click",
"error_code": "invalid_event"
}
{
"success": false,
"error": "page must be 1 or more and page_size from 1 to 500",
"error_code": "invalid_page"
}
{
"success": false,
"error": "Group Not Found",
"error_code": "group_not_found"
}
{
"success": false,
"error": "Credential Not Found",
"error_code": "credential_not_found"
}
{
"detail": "Invalid token or organization not found"
}
Credentials
Credential Activity
POST
/
v1
/
credentials
/
activity
Credential Activity
curl --request POST \
--url https://api.thehyperstack.com/v1/credentials/activity \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"from": "<string>",
"to": "<string>",
"event": {},
"group_key": "<string>",
"credential_key": "<string>",
"page": 123,
"page_size": 123
}
'import requests
url = "https://api.thehyperstack.com/v1/credentials/activity"
payload = {
"from": "<string>",
"to": "<string>",
"event": {},
"group_key": "<string>",
"credential_key": "<string>",
"page": 123,
"page_size": 123
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
from: '<string>',
to: '<string>',
event: {},
group_key: '<string>',
credential_key: '<string>',
page: 123,
page_size: 123
})
};
fetch('https://api.thehyperstack.com/v1/credentials/activity', 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.thehyperstack.com/v1/credentials/activity",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'from' => '<string>',
'to' => '<string>',
'event' => [
],
'group_key' => '<string>',
'credential_key' => '<string>',
'page' => 123,
'page_size' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.thehyperstack.com/v1/credentials/activity"
payload := strings.NewReader("{\n \"from\": \"<string>\",\n \"to\": \"<string>\",\n \"event\": {},\n \"group_key\": \"<string>\",\n \"credential_key\": \"<string>\",\n \"page\": 123,\n \"page_size\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.thehyperstack.com/v1/credentials/activity")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"from\": \"<string>\",\n \"to\": \"<string>\",\n \"event\": {},\n \"group_key\": \"<string>\",\n \"credential_key\": \"<string>\",\n \"page\": 123,\n \"page_size\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.thehyperstack.com/v1/credentials/activity")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"from\": \"<string>\",\n \"to\": \"<string>\",\n \"event\": {},\n \"group_key\": \"<string>\",\n \"credential_key\": \"<string>\",\n \"page\": 123,\n \"page_size\": 123\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"from": "2026-03-01",
"to": "2026-03-31",
"page": 1,
"page_size": 100,
"total": 3,
"events": [
{
"time": "2026-03-16T08:12:45Z",
"event": "view",
"channel": "linkedin",
"credential": "6f1c2a8e-3b4d-4e5f-9a7b-1c2d3e4f5a6b",
"group_key": "Kq7Zp2LmX9aB",
"recipient": { "name": "Jane Doe", "email": "jane.doe@example.com" },
"country": "GB",
"device": "iPhone"
},
{
"time": "2026-03-16T08:14:02Z",
"event": "share",
"channel": "addtolinkedin",
"credential": "6f1c2a8e-3b4d-4e5f-9a7b-1c2d3e4f5a6b",
"group_key": "Kq7Zp2LmX9aB",
"recipient": { "name": "Jane Doe", "email": "jane.doe@example.com" },
"country": null,
"device": null
},
{
"time": "2026-03-18T15:40:19Z",
"event": "download",
"channel": "pdf",
"credential": "6f1c2a8e-3b4d-4e5f-9a7b-1c2d3e4f5a6b",
"group_key": "Kq7Zp2LmX9aB",
"recipient": { "name": "Jane Doe", "email": "jane.doe@example.com" },
"country": null,
"device": null
}
]
}
{
"success": false,
"error": "from and to are required, as dates in YYYY-MM-DD format",
"error_code": "invalid_date"
}
{
"success": false,
"error": "Date range is more than 31 days",
"error_code": "range_too_large"
}
{
"success": false,
"error": "event must be a list of: view, share, download, click",
"error_code": "invalid_event"
}
{
"success": false,
"error": "page must be 1 or more and page_size from 1 to 500",
"error_code": "invalid_page"
}
{
"success": false,
"error": "Group Not Found",
"error_code": "group_not_found"
}
{
"success": false,
"error": "Credential Not Found",
"error_code": "credential_not_found"
}
{
"detail": "Invalid token or organization not found"
}
Description
Returns what people did with your credentials: views, shares, downloads and clicks. Each event is one row, oldest first. Use it to build your own engagement reports. You can ask for up to 31 days at a time. For a longer period, make one call for each month. You can also call it withGET and send the parameters in the query string, for example ?from=2026-03-01&to=2026-03-31&event=view,share.
Headers
string
required
Your API key:
Bearer YOUR_API_KEY. Create a key in the Studio under Settings → Developers.Body Parameters
string
required
First day, as
YYYY-MM-DD (UTC). The day is included.string
required
Last day, as
YYYY-MM-DD (UTC). The day is included. It must not be before from, and the range can be 31 days at most.array[string]
The kinds of event to return. Default: all of them.
view: someone opened the credential’s page.share: someone shared the credential, for example to LinkedIn.download: someone downloaded the credential as a PDF.click: any other click, such as verify, add to wallet or the group’s link. It also counts the recipient opening the credential email.
"view,share".string
Only events of credentials in this group.
string
Only events of this credential (its
document_id). If you also send group_key, the credential must be in that group.number
default:"1"
Page number. Starts at
1.number
default:"100"
How many events on each page. From 1 to 500.
Success Response Fields
boolean
true when the request worked.string
First day of the range, as
YYYY-MM-DD.string
Last day of the range, as
YYYY-MM-DD.number
The page number of this response.
number
The page size used.
number
Number of events in the range, on all pages.
array[object]
The events on this page, oldest first.
Show event
Show event
string
When it happened, in UTC, such as
2026-03-16T08:12:45Z.string
view, share, download or click.string
More detail about the event. For a view, where the visitor came from, such as
linkedin, or direct when not known. For a share, where it was shared, such as addtolinkedin. For a download, pdf. For a click, what was clicked, such as verify. When the recipient opened the credential email, email-open.string
ID of the credential (
document_id).string | null
Key of the credential’s group.
object | null
The recipient’s
name and email.string | null
For a view, the visitor’s country code, such as
GB, when known. null for other events.string | null
For a view, the visitor’s device, such as
iPhone or Mac, when known. null for other events.Responses
{
"success": true,
"from": "2026-03-01",
"to": "2026-03-31",
"page": 1,
"page_size": 100,
"total": 3,
"events": [
{
"time": "2026-03-16T08:12:45Z",
"event": "view",
"channel": "linkedin",
"credential": "6f1c2a8e-3b4d-4e5f-9a7b-1c2d3e4f5a6b",
"group_key": "Kq7Zp2LmX9aB",
"recipient": { "name": "Jane Doe", "email": "jane.doe@example.com" },
"country": "GB",
"device": "iPhone"
},
{
"time": "2026-03-16T08:14:02Z",
"event": "share",
"channel": "addtolinkedin",
"credential": "6f1c2a8e-3b4d-4e5f-9a7b-1c2d3e4f5a6b",
"group_key": "Kq7Zp2LmX9aB",
"recipient": { "name": "Jane Doe", "email": "jane.doe@example.com" },
"country": null,
"device": null
},
{
"time": "2026-03-18T15:40:19Z",
"event": "download",
"channel": "pdf",
"credential": "6f1c2a8e-3b4d-4e5f-9a7b-1c2d3e4f5a6b",
"group_key": "Kq7Zp2LmX9aB",
"recipient": { "name": "Jane Doe", "email": "jane.doe@example.com" },
"country": null,
"device": null
}
]
}
{
"success": false,
"error": "from and to are required, as dates in YYYY-MM-DD format",
"error_code": "invalid_date"
}
{
"success": false,
"error": "Date range is more than 31 days",
"error_code": "range_too_large"
}
{
"success": false,
"error": "event must be a list of: view, share, download, click",
"error_code": "invalid_event"
}
{
"success": false,
"error": "page must be 1 or more and page_size from 1 to 500",
"error_code": "invalid_page"
}
{
"success": false,
"error": "Group Not Found",
"error_code": "group_not_found"
}
{
"success": false,
"error": "Credential Not Found",
"error_code": "credential_not_found"
}
{
"detail": "Invalid token or organization not found"
}
curl -X POST "https://api.thehyperstack.com/v1/credentials/activity" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "2026-03-01",
"to": "2026-03-31",
"event": ["view", "share", "download"],
"group_key": "Kq7Zp2LmX9aB",
"page": 1,
"page_size": 100
}'
Last modified on October 20, 2026
Was this page helpful?

