Build on the Credentials API
Every surface in the console is also a public or API-key-authenticated REST endpoint. There is no functionality that exists only behind the admin UI — the SDK and the console call the same API.
# Typed client over the public REST API — no hand-rolled HTTP
npm install @cohiva/credentials-sdk Authentication
Every partner-facing call authenticates with the issuer's API key:
Authorization: Bearer <key> or X-API-Key: <key>. Keys are
hashed at rest (SHA-256) and shown in full exactly once, at creation, in the console. There is
no way to retrieve a lost key — only reissue one.
Core endpoints
POST /api/v1/credentials— issue a credential, idempotent oncompletionKeyGET /api/v1/credentials— list issued credentials, paginated and filterable by status/definitionPOST /api/v1/definitions·GET /api/v1/definitions[/:id]— manage credential definitions (Open Badges BadgeClass)POST /api/v1/ingest/csv— CSV/manual import: batch issue with a per-row reportPOST /api/v1/ingest/completions— generic REST ingest of one completion (connector seam)GET /api/v1/reports/issuance·/issuance.csv— issuance/lifecycle/verifies by definition, with CSV exportPOST /api/v1/pathways·/:id/stages·/:id/progress— staged pathways and recipient progressPOST /api/v1/credentials/:id/revoke·/reissue— lifecycle changes, never a silent delete
Public verification (no auth)
GET /v1/issuers/:slug— Issuer Profile, Open Badges 2.0 JSON-LDGET /v1/issuers/:slug/badges/:defSlug— CredentialDefinition (BadgeClass) JSON-LDGET /v1/issuers/:slug/assertions/:id— Assertion JSON-LD — the id resolves to itselfGET /verify/:slug/:id— human verification page with QRPOST /api/v1/verify·/verify/bulk— verify one or many credentials by assertion id
Connectors
If completions already flow through a system you use, a connector can pick them up without a custom integration: JobReady, aXcelerate, eSkilled, Canvas, Moodle and generic HRIS presets run on the same connector engine, mapping provider fields to an issuance. Zapier and Make are also supported, for teams who'd rather wire it up with no code at all.
Webhooks
Register an endpoint in the console and subscribe to credential.issued,
revoked, reissued, expired or verified.
Every delivery is signed (X-Cohiva-Signature: sha256=…, HMAC over the body)
and retried with backoff on failure.
Embed a live-verified badge
Renders from the public, no-auth verify API — no key, no PII in the request.
<div data-cohiva-credential="https://api.credentials.cohiva.app/v1/issuers/ampd/assertions/<id>"></div> <script src="https://api.credentials.cohiva.app/embed/v1.js"></script>
Also ships
- A headless React widget (
@cohiva/credentials-embed/react) for custom UI - Pure SSR render functions for server-rendered embeds
- A profile/wall embed (
data-cohiva-profile) for an earner's whole public wallet