When to use
Use actor attribution whenever your audit trail must identify a responsible party:- Human workflows — analyst reviews, MLRO sign-offs, compliance approvals.
- Automated pipelines — name the service or model version that triggered the evaluation.
- Multi-step chains — attribute each step to a different actor (see Multi-actor chains).
Schema reference
Pass the
actor object at the top level of a POST /v1/decisions/record request body:
Trust model
The authenticated API key identifies the calling system. Theactor field identifies the responsible party within that system. Both are captured on every recorded decision.
What is cryptographically bound:
Only
actor.id is included in the SHA-256 integrity hash. If someone alters actor.id after the fact, receipt verification will fail. The other fields are stored as audit-display metadata.
Patterns
Automated system
id. This lets you filter audit trails by the specific service that acted.
Human reviewer
actor.id. Email addresses can change; IdP UUIDs are stable.
Service account
MLRO final sign-off
PII considerations
display_name is a convenience field for audit display. Avoid storing full names, email addresses, or other PII in actor.id — use a stable, opaque identifier from your identity provider instead. Keep the mapping from ID to personal details in your own system.
Backward compatibility
Actor attribution is fully backward compatible:- If
actoris omitted, the decision is recorded without actor attribution. Existing integrations are unaffected. - If
actoris omitted butcontext.metadata.actor_idis present, the API falls back to using that value for attribution. - When
actor.idis supplied, it takes precedence overcontext.metadata.actor_id.
TypeScript SDK
Pass actor as the third argument toclient.record():