age_verify), but the flow is identical for any primitive.
1
Publish a workflow + configure delivery
Sign up at alentra.app, create a business, and from the
dashboard:
- Create a workflow with one
age_verifystep and set its threshold to 21. - Choose API only, configure a signed webhook, and publish revision 1.
- Copy the workflow id and an API key (
alentra_...).
2
Create a session
Server-to-server, with your API key. Pass the published Alentra returns the session and its hosted URL:
workflow_id plus any
string-valued correlation metadata for this run.3
Send the user to the hosted page
Hand the user
session.url. Alentra’s hosted page invokes the W3C Digital
Credentials API; the browser owns the same-device or cross-device handoff. Do
not call Alentra’s hosted-page transport endpoints or build a polling/QR protocol of
your own.4
Receive the signed result
When the wallet responds and Alentra verifies it, you get a Always verify the signature
before trusting a delivery:
POST to your webhook
URL — one logical step.completed per step plus a terminal session.* event.
Network retries can change arrival order.Compose multiple steps
Real flows often need more than one verified action—for example, identify the signer, then sign the contract. Add both primitives to the workflow builder and drag them into the order you want before publishing. Every run snapshots that exact revision. Alentra creates one logical webhook per step; usestage and the stable delivery id because
retries can arrive late or out of order.
A reusable workflow never stores run documents. When an API-only workflow contains
sign, create each session as multipart/form-data: send workflow_id and one
named file part per document. See Primitives → sign.Choose a test mode
Before creating a deployed session, open the business’s Coverage page in the Alentra dashboard. Sandbox businesses begin with Utopia selected. Production businesses begin with no usable route: select the routes and submit the reusable provider packet; Alentra handles Google registration and keeps every unapproved route fail-closed.- Local development: run the service with
ENVIRONMENTunset and the web app in its development build. The hosted page then exposes Simulate, and backend issuer trust is relaxed. These results are for development only. - Google Sandbox:
ENVIRONMENT=SANDBOXuses Google’s published request signer, RP metadata, Utopia ID Pass profile, and sandbox IACA. It runs the real encrypted wallet path with strict sandbox issuer trust; install a Utopia test ID in Google Wallet first. - Production:
ENVIRONMENT=PRODUCTIONaccepts only ledger routes explicitly promoted to live, with provider credentials and authenticated issuer roots for each exact credential profile.
Next steps
Primitives
Every primitive’s parameters and result shape.
Sessions
Lifecycle, gates (continue/stop), binding, and expiry.
Webhooks
Every event, payload, and signature verification.
Create a session
The full request reference, including all options.