Skip to main content

Overview

With a credential template defined, you can now issue a specific credential by providing the template ID and the youth’s actual data. The API returns URIs that deliver the credential to the youth’s wallet.

Endpoint

Request

Request Body

Response

HTTP 200 OK

Key Response Fields

Two IDs, different purposes. The top-level id (iss_cm7d9cq5600pwk3zq3kmpg8uc) is the issuance ID — use this for revocation and webhook correlation. The nested credentials[0].id is the individual credential ID. For revocation, always use the top-level id, not credentials[0].id.

What Happens on the Youth’s Side

At this point, the credential exists as an offer — it hasn’t reached the youth’s wallet yet. The next step (Step 4) delivers it. But once delivered:
  • If Thandi has already activated her wallet, the credential appears as a pending item she can accept or reject
  • If she hasn’t activated yet, the credential waits in custody until she signs in
  • She reviews the credential attributes in her wallet before accepting
  • Once accepted, the credential is stored permanently in her wallet and available for presentation to verifiers

Tracking Issuance Status

Rather than polling, use webhooks to track what happens after issuance:
Save the offerUri from the response — you need it in Step 4: Send Credential Offer to Wallet.