Open Badges 2.0 · API-first

Credentials your platform issues, hosts and proves

Headless, white-label verifiable-credential infrastructure. Issue Open Badges 2.0 with resolvable HTTPS ids, host public verification and an earner wallet, and manage the whole lifecycle through one API — under your brand, not ours.

Resolvable HTTPS ids, not URNs Database-per-tenant Append-only audit log
OB 2.0
Open Badges standard
HTTPS
Resolvable credential ids
DB-per-tenant
Data isolation
Append-only
Audit log
Built for RTOs & training providers LMS platforms Workforce & compliance systems Membership & certification bodies
Features

Everything a credential needs, in one API

Issuance, hosted verification, an earner wallet, and the integrations to connect them — all behind a public REST API with an OpenAPI spec.

Issuance

Issue from anywhere completions already happen

Upload a CSV for an instant batch, call the REST API directly, or connect a source system once and let it flow. Every issuance is idempotent, so retries and re-syncs never duplicate a credential.

  • CSV / manual import with a per-row report
  • JobReady, aXcelerate, eSkilled connectors
  • Canvas, Moodle & HRIS connector presets
  • Zapier & Make, for everything else
Batch import — completions.csv312 rows
1Columns auto-detecteddone
2308 issued, 4 skipped (duplicate)done
3Report ready for downloaddone
Hosted verification

Every credential is publicly, independently verifiable

Issuer profile, credential definition and each assertion are all served as Open Badges 2.0 JSON-LD at their own resolvable HTTPS id — the id is the record. A human verification page and QR code sit alongside it, live status included.

  • Verify page + QR, reflecting live status
  • Single and bulk verify API, no auth required
  • Revoke and reissue, never a silent delete
  • Optional custom verify domain, your brand
GET /v1/issuers/ampd/assertions/…200 OK
Status
Valid
Type
Assertion
Format
OB 2.0 JSON-LD
Id
HTTPS URL
Self-resolving id — verifiable by anyoneno API key needed
Earner wallet

One wallet, every issuer, in the recipient's hands

A passwordless portal lets an earner see, control and share every credential issued to them across every issuer on the platform — add to LinkedIn, download a wallet pass or a certificate PDF, and choose what's public.

  • Passwordless sign-in, no password to leak
  • Cross-issuer wallet with per-credential privacy
  • Add to LinkedIn, Apple/Google Wallet, PDF
  • Shareable public profile at a single link
My credentials4 valid
CIVCertificate IV in FitnessAmpd
WHSWorkplace Safety InductionCivil Co
AQFDiploma of Sport CoachingCampus
Embed & SDK

Drop a live-verified badge anywhere

A single script tag renders a badge on any page, reading the public verify API in real time — no API key, no PII in the request. A typed SDK covers the rest for anyone building against the API directly.

  • Drop-in embed script, no key required
  • Headless React widget for custom UI
  • Typed SDK (@cohiva/credentials-sdk)
  • Signed webhooks for issued/revoked/expired
embed.htmllive
Markup
<div data-cohiva-credential="https://api.credentials.cohiva.app/…"></div>
Renders a live-verified badge, styled to fit the host page.
No PII leaves the browser — the request is a public status check.

The gap this closes: URN-based badges resolve to nothing, so they can't be independently checked. Every id here is a live HTTPS URL that verifies itself — see how on the trust page.

For developers

One API. Full OpenAPI spec. Real idempotency.

Authenticate with an issuer API key, issue a credential, and verify it — no dashboard click-through required.

issue-and-verify.ts
@cohiva/credentials-sdk
// npm install @cohiva/credentials-sdk
import { CredentialsClient } from '@cohiva/credentials-sdk';

const credentials = new CredentialsClient({
  baseUrl: 'https://api.credentials.cohiva.app',
  apiKey: process.env.CREDENTIALS_API_KEY,
});

// Idempotent on completionKey — safe to retry
const issued = await credentials.issueCredential({
  definitionId,
  recipientEmail,
  completionKey,
});

// Public — no API key needed to verify
const result = await credentials.verify(issued.assertionUrl);
Pricing

Simple, per-issuer pricing

Plans are managed centrally on the Cohiva platform. What you see here is live from the marketplace.

Loading plans…

Need a larger volume or a custom integration? Talk to sales for a tailored quote. No credit card required. Cancel anytime.

Frequently asked questions

What credential standard do you use?
Open Badges 2.0 today, with signed OB 3.0 / W3C Verifiable Credentials available on the Scale plan. Every id is a resolvable HTTPS URL — never a URN — so a credential can be verified by anyone, anywhere, without our involvement.
How is data isolated between issuers?
Database-per-tenant. Every subscribing account gets its own Postgres database, with row-level security enforced as defence in depth inside it. There is no shared-table multi-tenancy.
Do you store recipient email addresses?
No. Recipient emails are hashed with a per-issuer salt on arrival and the plaintext is discarded. Earners are identified only by that hash inside the platform.
How do I get completions in without building an integration?
Upload a CSV — column names are auto-detected and each row is issued idempotently, with a per-row report. If you already run JobReady, aXcelerate, eSkilled, Canvas, Moodle or an HRIS, a connector can pick up completions automatically. Zapier and Make are also supported for no-code automation.
Can I white-label the verification pages?
Yes. Branding (logo, colours), a custom verify domain, and per-issuer email sender authentication are all supported so the public verification experience carries your brand, not ours.

Ready to issue your first credential?

Get started free, or talk to us about a connector, a custom verify domain, or a migration from your current provider.

Free tier, no credit card Cancel anytime API-first from day one