Skip to main content
This walks you from zero to a verified webhook in four steps. The example runs a business-redacted age check (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:
  1. Create a workflow with one age_verify step and set its threshold to 21.
  2. Choose API only, configure a signed webhook, and publish revision 1.
  3. Copy the workflow id and an API key (alentra_...).
A webhook URL is required. Webhooks are the primary result channel; the session GET exists only for one-off reconciliation, not polling. A session won’t be created until your business has a webhook configured. You’ll also need your webhook signing secret (alentra_whsec_...) from the dashboard to verify deliveries (step 4).
2

Create a session

Server-to-server, with your API key. Pass the published workflow_id plus any string-valued correlation metadata for this run.
Alentra returns the session and its hosted URL:
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 POST to your webhook URL — one logical step.completed per step plus a terminal session.* event. Network retries can change arrival order.
Always verify the signature before trusting a delivery:

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; use stage 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 ENVIRONMENT unset 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=SANDBOX uses 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=PRODUCTION accepts only ledger routes explicitly promoted to live, with provider credentials and authenticated issuer roots for each exact credential profile.
The API and webhook contract are identical in all three modes. See Wallets & environments.

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.