KYC Proofs
Get Operator Key
Read the registered proof signing key and enforcement settings
GET
/
customers
/
api
/
identity
/
operator-key
curl "https://api.trusset.org/customers/api/identity/operator-key" \
-H "X-API-Key: trusset_your_key_here"
const res = await fetch('https://api.trusset.org/customers/api/identity/operator-key', {
headers: { 'X-API-Key': 'trusset_your_key_here' }
});
const { data } = await res.json();
const sendProofs = data.proofVerificationEnforced;
const stalenessDays = data.maxStalenessDays ?? 400;
{
"success": true,
"data": {
"operatorKey": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
"operatorKeySetAt": "2026-09-06T12:00:00.000Z",
"proofVerificationEnabled": true,
"proofVerificationEnforced": true,
"maxStalenessDays": 365
},
"error": null,
"metadata": {
"requestId": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-09-06T12:00:00.000Z"
}
}
Returns the ed25519 public key this instance verifies proof manifests against, and whether proof verification is actually being enforced.
Response Fields
object
Show child attributes
Show child attributes
string
The registered key, lowercased and unprefixed.
null when none is set. Without a key, an instance that does not enforce proofs skips the signature check.string
When it was last set, ISO 8601, or
null.boolean
Whether this instance asked for proofs to be required.
boolean
Whether they actually are. This is
true when the instance asked for it, and always on a production instance, whose trust anchors require proofs whatever the instance set. Gate your flow on this field.integer
The staleness bound for a bundle’s batch date, in days.
null when unset, in which case the default of 400 days applies.proofVerificationEnabled and proofVerificationEnforced differ on a production instance that did not ask for proofs. The setting is what you chose; the enforced flag is what a submission will be judged against.curl "https://api.trusset.org/customers/api/identity/operator-key" \
-H "X-API-Key: trusset_your_key_here"
const res = await fetch('https://api.trusset.org/customers/api/identity/operator-key', {
headers: { 'X-API-Key': 'trusset_your_key_here' }
});
const { data } = await res.json();
const sendProofs = data.proofVerificationEnforced;
const stalenessDays = data.maxStalenessDays ?? 400;
{
"success": true,
"data": {
"operatorKey": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
"operatorKeySetAt": "2026-09-06T12:00:00.000Z",
"proofVerificationEnabled": true,
"proofVerificationEnforced": true,
"maxStalenessDays": 365
},
"error": null,
"metadata": {
"requestId": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-09-06T12:00:00.000Z"
}
}
Error Codes
| Code | HTTP | Cause |
|---|---|---|
INSTANCE_NOT_FOUND | 404 | The instance behind your key no longer exists |
OPERATOR_KEY_FAILED | 500 | The settings could not be read |
⌘I
curl "https://api.trusset.org/customers/api/identity/operator-key" \
-H "X-API-Key: trusset_your_key_here"
const res = await fetch('https://api.trusset.org/customers/api/identity/operator-key', {
headers: { 'X-API-Key': 'trusset_your_key_here' }
});
const { data } = await res.json();
const sendProofs = data.proofVerificationEnforced;
const stalenessDays = data.maxStalenessDays ?? 400;
{
"success": true,
"data": {
"operatorKey": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
"operatorKeySetAt": "2026-09-06T12:00:00.000Z",
"proofVerificationEnabled": true,
"proofVerificationEnforced": true,
"maxStalenessDays": 365
},
"error": null,
"metadata": {
"requestId": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-09-06T12:00:00.000Z"
}
}
