API/Enroll an identity
v1.0.0-beta.mdGet API keys
Identity

Enroll an identity

POST /functions/v1/process-biovital-enrollment

One call creates an identity from a live capture. The account is born with face and voice; the document is not part of enrollment.

Browser-safe: a publishable pk_ key is correct here, because the capture happens on the person's own device.

Body

FieldTypeNotes
actionACTION_GENESISrequired
merchant_idstringrequired
sieve_hashstringrequired
consentobject{ version, locale, accepted_at } — mandatory; there is no bypass flag
device_signaturestringrequired
client_instance_idstringrequired
device_labelstringWhat the person will recognise in her device list
face_templateobject{ vector: exactly 128 numbers, quality }
biometric_vitalsobject{ bpm, hrv, stress_score, voice_pulse_correlation, liveness_confidence, liveness_proof }

Response

{
  "success": true,
  "status": "enrolled",
  "subject_ref": "sr_2f91c8de44",
  "session_token_hash": "e91c...",
  "consent": { "version": "2026-06", "retention_days": 3650 }
}

subject_ref is HMAC(sieve_id, merchant_id) — a per-merchant pseudonym, never the real identifier.

Two facts to build on

  • The account is born with face and voice. The document is not part of enrollment — it is asked for at the first operation that requires it, see the document rule.
  • user_id is minted by the engine — a surface never supplies, chooses or guesses one. An alias is only a public handle attached to that identity, see alias.

Sessions

The identity session lives in the storage of the domain that ran the capture. Sessions do not cross domains, and there is no separate “create an iframe session” call.

Errors

StatusCode
400INVALID_INPUT (carries fields)
403CONSENT_REQUIRED, BIOMETRIC_LIVENESS_FAILED
409SESSION_PRESENT, IDENTITY_UNREACHABLE
422FACE_TEMPLATE_REQUIRED
500IDENTITY_CREATE_FAILED, TEMPLATE_STORE_FAILED, SESSION_MINT_FAILED
Sidaxis is the human authorisation layer. It never moves money, holds funds or settles. The machine-readable contract is openapi.yaml.
Sidaxis API documentationQuickstartAuthenticationHosted or headlessSandbox and productionIdempotencyRate limitsErrors and refusalsField namesWebhooksAssuranceThe document ruleAlias availabilityMerchant themeMCP serverCompatibilityStatusRoadmapChangelogIdentityEnroll an identityRecognise a personDisclose an attributeMandatesThe eight scopesIssue a mandateCheck an actionConsume a mandateRead a mandateRevoke a mandateReceiptsRead a merchant's receiptsVerify a receiptHosted sessionsCreate a hosted sessionConsume a hosted sessionOne Face for agents