TypeScript samples
Using the generated SDK. Server-side only — never ship an API key to a browser.
import { DiligenceApiKeyCredential, createManagementClient, createProductClient } from '@diligenceid/sdk';
const API_VERSION = '2026-08-30';
const apiKey = process.env.DILIGENCE_API_KEY;
if (!apiKey) throw new Error('DILIGENCE_API_KEY is not set.');
const credential = new DiligenceApiKeyCredential(apiKey);
const endpoint = 'https://api.example.diligence.id';
const management = createManagementClient(endpoint, credential);
const product = createProductClient(endpoint, credential);
List issuers
const issuers = await management.management.issuers.get(
{ queryParameters: { apiVersion: API_VERSION } },
);
for (const issuer of issuers?.value ?? []) {
console.log(issuer.issuerId, issuer.status, issuer.displayName);
}
Create an issuer
const created = await management.management.issuers.post(
{
displayName: 'Sample Issuer',
organisationReference: 'YOUR_ORGANISATION_REFERENCE',
issuerType: 'Root',
},
{ queryParameters: { apiVersion: API_VERSION } },
);
const issuerId = created!.name!;
Configure it, conditionally
const current = await management.management.issuers.byIssuerId(issuerId).get(
{ queryParameters: { apiVersion: API_VERSION } },
);
await management.management.issuers.byIssuerId(issuerId).patch(
{ displayName: 'Sample Issuer (renamed)' },
{
queryParameters: { apiVersion: API_VERSION },
headers: { 'If-Match': current!.etag! },
},
);
Issue
const issuance = await product.v10.credentials.issuance.post(
{
issuerId,
credentialConfiguration: 'sample-membership',
externalSubjectReference: 'sample-subject',
},
{ headers: { 'Idempotency-Key': 'sample-issue-001' } },
);
console.log(issuance?.data?.status); // awaiting_wallet
Handle errors
try {
await management.management.issuers.byIssuerId(issuerId).activate.post(
{ queryParameters: { apiVersion: API_VERSION } },
);
} catch (caught: any) {
console.error('code=%s requestId=%s', caught?.error?.code, caught?.error?.innerError?.requestId);
}
See SDK errors.