OpenID4VP Verification

Poll a presentation request (holder + status)

Public, unauthenticated poll endpoint for a presentation request — the request uuid is itself the capability, so any holder/wallet that received the request can read it without an API key. Returns the request management fields (DCQL, nonce, status) enriched with a holder-facing view: who is asking (requester), the human-labelled claims being requested with their selective-disclosure flags, and — once a presentation has been verified — a result object with the verdict and disclosed claims. Holders poll this to render the consent screen and to observe the verification outcome.

get/v1/presentations/{uuid}

Path parameters

uuidstring uuid required

UUID of the presentation request to fetch. An unknown or soft-deleted id returns 404.

Response

The presentation request in its holder-facing shape: the request fields plus requester, claims, and (once verified) result.

uuidstring uuid

Unique identifier of the presentation request.

transaction_idstring uuid

Transaction identifier binding the holder's presentation to this request.

dcqlobject

The OpenID4VP DCQL query the wallet evaluates to build the presentation (same structure returned at creation).

requested_vctstring

The Verifiable Credential Type required by this request.

requested_claimsstring[]

Raw claim names the verifier requested.

audstring

The verifier audience (client_id / origin) bound into the request.

noncestring

Single-use nonce the holder signs into the KB-JWT.

status'pending' | 'presented' | 'verified' | 'failed'

Lifecycle state of the presentation request.

created_atstring date-time

ISO 8601 timestamp when the request was created.

Example response

{
  "uuid": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
  "transaction_id": "f0e1d2c3-b4a5-6978-8c9d-0a1b2c3d4e5f",
  "dcql": {
    "credentials": [
      {
        "id": "cred1",
        "format": "dc+sd-jwt",
        "meta": {
          "vct_values": [
            "https://credentials.didit.me/vct/identity-card"
          ]
        },
        "claims": [
          {
            "path": [
              "given_name"
            ]
          },
          {
            "path": [
              "birth_date"
            ]
          }
        ]
      }
    ]
  },
  "requested_vct": "https://credentials.didit.me/vct/identity-card",
  "requested_claims": [
    "given_name",
    "birth_date"
  ],
  "aud": "https://checkin.acme-air.com",
  "nonce": "Xy7Zq9-Ab3kQ9z1Xy7Zq9Ab3kQ9z1Xy7Zq9Ab3kQ9",
  "status": "pending",
  "created_at": "2026-06-30T12:00:00+00:00",
  "requester": {
    "id": "relying-party",
    "name": "https://checkin.acme-air.com",
    "did": "did:web:acme-air.didit.test",
    "purpose": "Confirm your identity for this verification."
  },
  "claims": [
    {
      "name": "given_name",
      "label": "Given Name",
      "requested": true,
      "selective_disclosure": true
    }
  ],
  "result": {
    "uuid": "b2c3d4e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
    "verdict": "verified",
    "disclosed_claims": {
      "given_name": "Ada",
      "family_name": "Lovelace",
      "birth_date": "1815-12-10"
    },
    "checks": {
      "signature": true,
      "key_binding": true,
      "aud": true,
      "nonce": true,
      "alg_allowlist": true,
      "not_expired": true,
      "not_revoked": true
    }
  }
}

Changes