Skip to main content
Most integrations don’t need this page. If you can issue against a published preset, do that. See Issue a credential. Custom templates are for cases where you need a credential shape that no preset covers (private credentials, internal-only schemes, experiments).

Overview

A credential template defines the schema for a verifiable credential: what attributes it carries, their types, and which are always disclosed. Create it once and reuse it to issue many credentials with different data. Use a custom template when:
  • No published preset matches the credential you want to issue.
  • You’re building a private or internal credential that shouldn’t live in a shared catalogue.
  • You need fine-grained control over alwaysDisclosed, attribute types, or the type URI.
The type field you set in a credential template is what verifiers later match against in the credential presentation flow.

Pick the right endpoint for your format

The API exposes a separate POST endpoint per credential format. Use the one that matches the credential you want to define:
  • SD-JWT: POST /templates/credentials/sd-jwt
  • mDoc: POST /templates/credentials/mdoc
A generic POST /templates/credentials exists too (it dispatches by credentialFormat in the body), but the format-specific endpoints have a single, format-shaped request body and are simpler to work with.

Request (SD-JWT)

type: naming the credential type

type carries the template’s credential type verbatim. It is what verifiers match against at presentation time, and it goes onto every credential issued from the template. The accepted shape depends on the format:
  • SD-JWT: the VCT, as a urn: URI (e.g. urn:eu.europa.ec.eudi:pid:1) or your own platform VCT URL (https://didx.co.za/vct/<your-alias>/...). Other http(s) URLs are rejected.
  • mDoc: the DocType, a dot-separated reverse-DNS string such as org.iso.18013.5.1.mDL.
SD-JWT templates additionally accept code instead of type, as a shortcut that projects to the platform VCT URL above (code: "basic-identity" becomes https://didx.co.za/vct/<your-alias>/basic-identity). Sending both is rejected with a 400, and code is not accepted on mDoc templates.

Attribute fields

Each attribute is a field on the credential. The following properties configure each one:

Response

HTTP 201 Created

Key response fields

Save the id from the response. You’ll need it as the credentialTemplateId in Issue a credential.