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 /v1/templates/credentials/sd-jwt - mDoc:
POST /v1/templates/credentials/mdoc
POST /v1/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 such asurn:eu.europa.ec.eudi:pid:1, or your own platform VCT URL ($BASE_URL/vct/YOUR_ALIAS/...). The platform rejects otherhttp(s)URLs. - 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 $BASE_URL/vct/YOUR_ALIAS/basic-identity). Sending both returns a 400, and mDoc templates do not accept code at all.
Platform VCT URLs are rooted at the environment’s host, so a projected VCT differs between environments. Supply an external urn: when you need one type to hold everywhere.
Attribute fields
Each attribute is a field on the credential. The following properties configure each one:Response
HTTP 201 Created

