curl --request GET \
--url https://api.baselayer.com/issuance/credentials/events \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.baselayer.com/issuance/credentials/events"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.baselayer.com/issuance/credentials/events', 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.baselayer.com/issuance/credentials/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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://api.baselayer.com/issuance/credentials/events"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<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://api.baselayer.com/issuance/credentials/events")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.baselayer.com/issuance/credentials/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"event_type": "ISSUED",
"occurred_at": "2023-11-07T05:31:56Z",
"credential_id": "<string>",
"environment": "sandbox",
"level": "L2",
"preset": "consumer_ecommerce",
"individual_display_name": "<string>",
"individual_ref": "<string>",
"business_legal_name": "<string>",
"business_ref": "<string>",
"issued_to": "<string>",
"audience": "<string>",
"state": "ACTIVE",
"actor": {
"kind": "USER",
"label": "<string>"
},
"revocation_reason": "agent_key_compromise",
"source_environment": "sandbox"
}
]{
"type": "validation_failed",
"code": 7112,
"message": "The request is invalid.",
"metadata": {}
}List your organization's credential events
Every issuance and revocation of your organization’s credentials, newest first by default, a page at a time: limit, then cursor from X-Next-Cursor, or offset. X-Total-Count and X-Total-Pages count every match and are sent on the first cursor page and on every offset page.
curl --request GET \
--url https://api.baselayer.com/issuance/credentials/events \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.baselayer.com/issuance/credentials/events"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.baselayer.com/issuance/credentials/events', 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.baselayer.com/issuance/credentials/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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://api.baselayer.com/issuance/credentials/events"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<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://api.baselayer.com/issuance/credentials/events")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.baselayer.com/issuance/credentials/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"event_type": "ISSUED",
"occurred_at": "2023-11-07T05:31:56Z",
"credential_id": "<string>",
"environment": "sandbox",
"level": "L2",
"preset": "consumer_ecommerce",
"individual_display_name": "<string>",
"individual_ref": "<string>",
"business_legal_name": "<string>",
"business_ref": "<string>",
"issued_to": "<string>",
"audience": "<string>",
"state": "ACTIVE",
"actor": {
"kind": "USER",
"label": "<string>"
},
"revocation_reason": "agent_key_compromise",
"source_environment": "sandbox"
}
]{
"type": "validation_failed",
"code": 7112,
"message": "The request is invalid.",
"metadata": {}
}Authorizations
Query Parameters
Maximum number of records to return in a single page. Must be between 1 and 1000.
1 <= x <= 1000Number of records to skip from the beginning. Use 0 for the first page. Cannot be used with cursor.
x >= 0Opaque pagination cursor token that identifies the position in the result set. Use the cursor from the previous response to get the next page. Cannot be used with offset.
occurred_at: when the credential was issued or revoked; ties break on the credential's created_at, then its id, then the event (ISSUED before REVOKED ascending). Defaults to occurred_at desc.
What a credential event list sorts by.
occurred_at asc or desc, for every key of the sort. Defaults to the field's own: occurred_at desc.
asc, desc Only credentials of these levels; repeat for more than one. Default all.
The credential layer a subject mint request selects (KYA).
Deliberately narrower than IssuedCredentialType: the individual
and business mint routes issue only the two subject layers.
Counterparty credentials have their own route and request shape, so
a level of COUNTERPARTY must stay an edge-level payload refusal
— this enum is what keeps issuance-record vocabulary growth from
widening the mint requests.
L2, L3 Only events of credentials in this state now. A credential's effective state as an issuance-log reader sees it.
Derived, never stored: IssuedCredentialStatus deliberately keeps
expiry out of the persisted status (verifiers check exp), but the
console and API consumers filter the log by what a credential is
right now — still presentable, aged out, or killed.
ACTIVE, EXPIRED, REVOKED Only credentials minted for this individual or by them for a business.
1 - 255Only credentials minted for this business.
1 - 255Every word must match the person's or business's name as the credential minted it, the audience or the credential id; a individual_ref or business_ref your organization holds matches exactly.
255Only these events; repeat for several.
What happened to a credential, as one row of its event stream.
ISSUED, REVOKED Filter records created on or after this date (format: YYYY-MM-DD).
Filter records created on or before this date (format: YYYY-MM-DD).
IANA timezone identifier used to interpret start_date and end_date (defaults to UTC).
"UTC"
"America/Los_Angeles"
"Europe/London"
Response
Credential events in the requested order.
What happened to a credential, as one row of its event stream.
ISSUED, REVOKED The credential's unique id: its token's jti.
The environment the credential was minted in.
sandbox, production The credential layer a subject mint request selects (KYA).
Deliberately narrower than IssuedCredentialType: the individual
and business mint routes issue only the two subject layers.
Counterparty credentials have their own route and request shape, so
a level of COUNTERPARTY must stay an edge-level payload refusal
— this enum is what keeps issuance-record vocabulary growth from
widening the mint requests.
L2, L3 The preset the mint named; null when it listed its own paths.
consumer_ecommerce, age_gated, consumer_regulated, b2b_ecommerce, b2b_regulated The Issued to column: the person's name, or the business's when no person acts for it.
The credential's state now, not at the event.
ACTIVE, EXPIRED, REVOKED Who minted (issued) or revoked (revoked), as they were then.
Show child attributes
Show child attributes
Why it was revoked; null on issued rows.
agent_key_compromise, identity_superseded, identity_withdrawn, operator_link_revoked, fraud_suspected, administrative_action On a test credential for a person or business verified in another environment, that environment; the credential itself is signed in environment. Null otherwise.
sandbox, production