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 thetypeURI.
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
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>/...). Otherhttp(s)URLs are rejected. - mDoc: the DocType, a dot-separated reverse-DNS string such as
org.iso.18013.5.1.mDL.
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.

