Before you start, you need the
clientId and clientSecret DIDx issued for your organisation, and the host for
your environment. Both arrive through partner onboarding. There is
no self-serve signup.client_credentials flow on the Authentication page. Tokens last five minutes. If you take longer, re-run the auth call and re-export.
1
Onboard yourself as a user
The Consumer Onboarding API provisions users in your tenant. For this quickstart, you’ll provision yourself.Response (201):
emailSent: true means your onboarding link is on its way. tempPassword comes back empty on this pathway. It only carries a value on the older temp-password flow.2
Complete onboarding and sign in
Check the inbox for the address you just onboarded. You’ll have an onboarding email with a single-use, time-boxed link.Follow it to set your own password, verify your email, and configure strong auth. That lands you in the didx:me wallet. It runs in any browser, and opening it on your phone is closest to how holders will use it.You’ll see an empty wallet: your name in a welcome banner, with No credentials yet below. Keep this tab open.
3
Create a credential preset
A preset is the published shape of the credential: its format, attributes, and disclosure rules. Publish it once, then issue many credentials against it. The platform manages the underlying template for you.Each attribute takes a JSON key (the field name inside the credential payload) and a few properties:
type is the JSON type, name is the display label shown in the wallet, required controls whether issuance demands a value, and alwaysDisclosed controls whether the holder can withhold the attribute at presentation time. An optional description adds wallet-side helper text, which this example omits. See Credentials for the selective-disclosure model behind alwaysDisclosed.The response includes the preset’s id, in the form YOUR_TENANT_ALIAS:demo. Save it for the next step.templateName is the preset’s display name. The inner templateAttributes.name defines an attribute called name. They are different scopes and don’t collide in JSON.4
Create an issuance
An issuance binds a preset to a specific set of values for one credential.Ignore
reference is how you name what to issue: KIND:VALUE, where kind is presetId, templateId, or credentialType. Pass more than one entry in credentials to bundle several credentials into one offer. See Issue a credential for the other reference kinds.The response (201) includes the offerUri:credentialTemplateId for now. The platform manages that template for you. It only matters if you later want to list everything issued from this preset; see Issuance vs credential.The offerUri points at a creds-app.* deep-link host, the wallet’s invitation entry point, which is a different host from $BASE_URL. You pass this URI along unchanged; never construct it yourself.Save the offerUri.5
Push the offer to your wallet
Send the credential offer directly to your wallet. It will appear in the Pending state in your wallet.A
201 Created with { "data": null } confirms that the platform delivered the offer.6
Accept the credential in the wallet
Switch to the wallet tab. Refresh if needed. A Pending Credentials section now shows a card for your DEMO credential.Tap into the card. The detail view shows the claims (Name, Surname) and credential information. Tap Accept.The credential moves from Pending to Recent. You now have a verifiable credential signed by your tenant, held in your wallet.
What next
Once the quickstart works, here are the common next moves:- Webhooks. Your application learns about issuance lifecycle events (
offered,completed,failed,expired) without polling. See Webhooks. - Verify a credential. Define a presentation template, request a presentation from a holder, validate what they share. See the Verifier journey.
- Trust hardening. Attach trusted entities to your presentation templates so verifiers only accept credentials from issuers you have explicitly named. See Trust.
- Production readiness. Rotate certificates and set up retry policies on your webhook handler. Talk to DIDx when you’re ready to move beyond your initial environment.

