GlemoDocs

Issue credentials

Issue verifiable Open Badges 3.0 credentials — your recipients only need an email.

One call issues a W3C Verifiable Credential 2.0 / Open Badges 3.0 credential: signed (VC-JWT), selectively disclosable (SD-JWT) and anchored. If the recipient is an email address, Glemo delivers it with a public verification link — no wallet, no account, no crypto on their side.

Get a key with issue:write

Issuance needs an API key with the issue:write scope. Sandbox keys from the quickstart are verify-only — ask us for an issuer key, or use your live key if your organization is onboarded.

Issue your first credential

import { createGlemo } from "@glemo/sdk";
 
const glemo = createGlemo({ apiKey: process.env.GLEMO_API_KEY! });
 
const credential = await glemo.issue({
  recipient: { email: "ada@university.edu", name: "Ada Lovelace" },
  achievement: {
    name: "Avalanche Fundamentals",
    description: "Completed the Avalanche Academy Fundamentals course",
  },
});
 
console.log(credential.publicUrl);
// → https://app.glemo.io/verify/3f2a…

The response carries the credentialId, the signed jwt, the selectively disclosable sdJwt and the publicUrl your recipient received by email.

Close the loop: verify it

The credential you just issued verifies like any other — by anyone:

const verdict = await glemo.verify({ credentialId: credential.credentialId });
// verdict.status → "valid"

Or just open the publicUrl — the same verification, human-readable.

Selective disclosure is on by default

Every credential ships as an SD-JWT too: the holder can present only a subset of its claims (say, the achievement name without the description) and it still verifies. No premium tier, no flag — it's the default. See concepts for how disclosure works.

Issuing is not idempotent

Two identical issue() calls create two credentials. The SDK therefore does not retry issuance by default — opt in with glemo.issue(input, { retries: 1 }) only if your side deduplicates.

Bulk issuance (CSV, queued, idempotent per row) and visual templates are available from the issuer dashboard.

Export

Every issued credential is a signed W3C Verifiable Credential 2.0 / Open Badges 3.0. From the credential detail in the issuer dashboard you can download it as a VC-JWT or an Open Badges 3.0 JSON and verify it in any conformant tool, with no dependency on Glemo. That is what "no lock-in" means in practice.

On this page

Issue credentials