curl --request GET \
--url https://api.baselayer.com/identities/principals/{principal_ref} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.baselayer.com/identities/principals/{principal_ref}"
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/identities/principals/{principal_ref}', 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/identities/principals/{principal_ref}",
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/identities/principals/{principal_ref}"
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/identities/principals/{principal_ref}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.baselayer.com/identities/principals/{principal_ref}")
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{
"principal_ref": "<string>",
"verification_state": "CURRENT",
"display_name": "<string>",
"verified_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"active_keys": [
"<string>"
],
"verification_level": 123,
"businesses": [
{
"business_ref": "<string>",
"status": "VERIFIED"
}
],
"submissions": [
{
"submission_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"state": "PENDING",
"created_at": "2023-11-07T05:31:56Z",
"verdict": "APPROVED",
"reference_id": "<string>",
"completed_at": "2023-11-07T05:31:56Z",
"terminal_reason": {
"state": "FAILED",
"message": "<string>"
}
}
],
"credential_activity": {
"credentials_minted_30d": 123,
"last_minted_at": "2023-11-07T05:31:56Z"
},
"verification_history": [
{
"verified_at": "2023-11-07T05:31:56Z",
"superseded_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z"
}
]
}{
"code": 1,
"message": "Could not locate the resource for the given URI.",
"metadata": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Look up a verified identity by pairwise reference
Returns the verification state, verified-attribute keys, verification level, and covered business links for a principal_ref issued to your organization. References issued to other organizations and unknown references are indistinguishable 404s.
curl --request GET \
--url https://api.baselayer.com/identities/principals/{principal_ref} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.baselayer.com/identities/principals/{principal_ref}"
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/identities/principals/{principal_ref}', 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/identities/principals/{principal_ref}",
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/identities/principals/{principal_ref}"
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/identities/principals/{principal_ref}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.baselayer.com/identities/principals/{principal_ref}")
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{
"principal_ref": "<string>",
"verification_state": "CURRENT",
"display_name": "<string>",
"verified_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"active_keys": [
"<string>"
],
"verification_level": 123,
"businesses": [
{
"business_ref": "<string>",
"status": "VERIFIED"
}
],
"submissions": [
{
"submission_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"state": "PENDING",
"created_at": "2023-11-07T05:31:56Z",
"verdict": "APPROVED",
"reference_id": "<string>",
"completed_at": "2023-11-07T05:31:56Z",
"terminal_reason": {
"state": "FAILED",
"message": "<string>"
}
}
],
"credential_activity": {
"credentials_minted_30d": 123,
"last_minted_at": "2023-11-07T05:31:56Z"
},
"verification_history": [
{
"verified_at": "2023-11-07T05:31:56Z",
"superseded_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z"
}
]
}{
"code": 1,
"message": "Could not locate the resource for the given URI.",
"metadata": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Path Parameters
Response
Response
Body for GET /identities/principals/{principal_ref}.
Strictly scoped to the calling organization: only links it covered with
its own sessions are listed, and no PII beyond what the organization
itself submitted is echoed — display_name repeats the verified name
the list row already returns to the same caller, nothing more.
The queried pairwise principal reference.
CURRENT, EXPIRED (re-verify before minting), or SUPERSEDED.
CURRENT, EXPIRED, SUPERSEDED The verified name, as the latest snapshot recorded it — the same value the list row carries. Null when every snapshot has been superseded. Mask it in shared surfaces; the API returns what the organization itself submitted.
When the latest verification was recorded.
When the latest verification expires.
Dotted keys of the identity attributes the latest verification can attest to (e.g. user.email.hash) — the same vocabulary credential disclosure paths use.
Verification level derived from active_keys; null when the attested attributes are insufficient for any defined level.
Businesses this organization holds covered operator links for, each with its pairwise ref and link status.
Show child attributes
Show child attributes
This organization's verification attempts of the person, newest first — every submission whose evaluation ran against the same national id, whatever the outcome.
Show child attributes
Show child attributes
Summary of this organization's recent credential mints for the person.
Show child attributes
Show child attributes
Superseded verifications, newest first — when the person was verified before and when each verification was replaced. Dates only; superseded identity fields are never re-disclosed.
Show child attributes
Show child attributes