Verify a credential

One call turns a verification profile into a wallet launch URI. The wallet returns a presentation, LutraID validates it, and you read the result back by ID.

POST/verifiers/{verifierId}/initiate-verification

Initiate a verification

Editions: SaaS · Self-hosted · Public

curl "$LUTRAID_API/v1/organizations/$ORG/verifiers/$VERIFIER/initiate-verification" \
  -H "X-API-Key: $LUTRAID_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "verificationProfileId": "b21c…",
    "metadata": { "redirectUri": "https://your-app.example/verify/done" }
  }'
{
  "verificationUri": "openid4vp://?client_id=x509_san_dns%3A…&request_uri=https%3A%2F%2F…",
  "verificationId": "0f7a…"
}
  • Name
    verificationProfileId
    Type
    uuid
    Description

    Required. Carries the DCQL query and the assurance policy.

  • Name
    metadata.redirectUri
    Type
    uri
    Description

    Required — redirect_uri is accepted as an alias. Omitting both returns 400. The response_code is appended as a URL fragment when the wallet returns the holder.

  • Name
    requestUriMethod
    Type
    string
    Description

    get (default) or post.

  • Name
    launchScheme
    Type
    string
    Description

    openid4vp or haip-vp. Omit to use the profile default. SaaS and self-hosted only.

A request expires after 15 minutes, or 60 minutes when delivered by email.

GET/verifiers/{verifierId}/verifications/{verificationId}

Read the result

Editions: SaaS · Self-hosted · Public

curl "$LUTRAID_API/v1/organizations/$ORG/verifiers/$VERIFIER/verifications/$VERIFICATION" \
  -H "X-API-Key: $LUTRAID_KEY"

status is initiated, success, failure or expired. On success the disclosed claims are in rawPresentation; on failure read failureReason. Poll until status leaves initiated or expiresAt passes.

What the request object contains

Query languageDCQL onlypresentation_definition is not implemented
Request deliveryalways by reference (request_uri), signed as an RFC 9101 JWT
client_id prefixesx509_san_dns: and x509_hash:
response_modedirect_post and direct_post.jwt
response_typevp_token

Transaction data (QES-style binding) is not supported.

Was this page helpful?