Backend API AlternativeFor server-side credential issuance without client interaction, see Issue Credentials on Behalf. That API allows you to issue credentials directly from your server.
Issuing Credentials (SDK)
Step 1: Set Up an Issuance Program
- Use the Developer Dashboard to create an issuance program (Issuer -> Programs).
- While creating the program, search for the schema for the credentials you intend to issue, and check the attributes to be included (e.g., name, age, nationality, etc.). It is highly recommended to search for an existing schema so that credentials are interoperable across platforms and can be recognized, displayed, or verified by any verifier. If there are no suitable schemas available, please contact us, or you may create your own schema.
- Publish the program and take note of the program ID.
Step 2: Collect User Data
Securely authenticate and retrieve your user’s data within your existing application.Step 3: Generate Auth Token
Generate a Partner JWT securely with your backend server, and includescope=issue to limit its scope.
Step 4: Issue Credentials
To encrypt the user’s data and create a verified credential on-chain, simply call the issueCredential() function in AIR Kit.- Web
- Flutter
| Parameter | Type | Description |
|---|---|---|
authToken | string | Your signed Partner JWT, with scope=issue. |
issuerDid | string | Your Issuer DID. |
credentialId | string | Program ID for the credential being issued. |
credentialSubject | Record<string, unknown> | Object containing the credential’s claims and attributes for the subject. |
curve | "secp256r1" | "secp256k1" | Optional. Elliptic curve for compliance encryption key generation. Defaults to secp256r1 (P-256). |
cakPublicKey (Compliance Encryption User Public Key) if compliance encryption is enabled for the issuance program. The public key is deterministically derived from [User – Issuer – Schema] and can be used to encrypt compliance data before issuance. Throws an error if issuance fails.Compliance Encryption Public Key
When compliance encryption is enabled for your issuance program (configured in the Developer Dashboard), theissueCredential function returns a cakPublicKey (Compliance Encryption User Public Key) in the response. This feature allows issuers to:
- Obtain a user-specific public key before credential issuance
- Encrypt additional compliance data for regulated disclosure or threshold decryption workflows
- Use a deterministic key that is tied to the [User – Issuer – Schema] composite identifier
curve parameter:
secp256r1(P-256) - Default, recommended for most use casessecp256k1- Alternative curve option
Full CAK Issuer Guide
For complete details on Dashboard configuration, encrypting user data with the CAK public key, and implementing the callback endpoint, see the dedicated CAK Issuer Guide.
Best Practices for Issuers (SDK)
- Only issue credentials after thorough validation of submitted evidence or claims.
- Minimize inclusion of personally identifiable information—issue privacy-preserving credentials whenever possible.
- Adopt open, standardized schemas to maximize compatibility and reduce verification friction across apps.
- Implement robust expiry and revocation processes, and ensure that holders and verifiers are informed of credential status.
- Respect user sovereignty at all stages; credentials should be under full user control and portable across the ecosystem.