Developers

LutraID issues credentials to EUDI-compatible wallets over OpenID4VCI and verifies presentations over OpenID4VP. You provision issuers, verifiers and profiles in the dashboard, then drive them from your backend with a scoped API key.

How an integration is shaped

StepRuns where
Create an issuer or verifier, assign profilesDashboard
Mint an API key scoped to itDashboard
Create an offer or a verification requestYour backend
Render the returned URI as a QR code or linkYour frontend
Poll for the outcomeYour backend

Wallets talk to LutraID directly over the protocol endpoints. You never proxy them.

Base URL

Paths in these pages are relative to your deployment's API base URL. The generated OpenAPI reference is served by the API itself at /doc/reference, the raw document at /doc.

export LUTRAID_API="https://your-lutraid-host"
export LUTRAID_KEY="iss_..."
export ORG="<organizationId>" ISSUER="<issuerId>" VERIFIER="<verifierId>"

Editions

LutraID ships in three editions and they do not expose the same routes. GET /health tells you which one you are talking to.

curl -s "$LUTRAID_API/health"
# {"status":"ok","edition":"saas","timestamp":"...","version":"..."}
SaaS · Self-hostedPublic
Create offers and verification requestsyesyes
Email delivery, bulk offersyesno
Offer status, diagnostics, platform root CAnoyes
API key management endpointsyesseeded keys only

Every endpoint below carries an Editions line. public is the sandbox edition described in Local testing.

Conventions

  • Authentication is the X-API-Key header. See Authentication.
  • Every response carries X-Request-ID; an inbound W3C traceparent is honoured and threaded through logs and diagnostics.
  • There are no outbound webhooks. You poll. See Status and diagnostics.

Was this page helpful?