Credential Designs: Assets
Catalog id: resource.credentialDesigns.assets
Assets are the binary files designs and render variants point at: logos, background images and SVG templates. They are content addressed, so the same file uploaded twice yields one asset and one URI. That matters before you upload, because a logo shared by two credential types is genuinely one object and replacing it affects both.
An asset is not a credential type. It carries no claims and never appears in issuer metadata on its own.
Audience: tenant administrator.
Guide: Credential designs.
What an upload gives you back
The response carries a uri and an integrity hash. The URI is content addressed and served from
the tenant host root as https://<tenant-host>/public/assets/design/<hash>.<ext>, never under an
issuer instance path. That URI goes into a render variant's logo or background slot, or into issuer
display branding.
Wallets fetch these anonymously while drawing a credential, so an asset has to stay reachable for as long as any issued credential references it. Removing one that a live card still points at leaves holders with a broken image, which is why the console shows which variants use a URI before you replace it.
Prefer formats that wallets render well at small sizes. A large image costs every holder who opens the card and nothing downsamples it for them.
Uploading
Upload a logo
POST/api/credential-design/v1/designs/credentials/00000000-0000-4000-8000-000000000000/assets/en/LOGO201 Created- Admin Console
- Request
- Response
- Try it
The console asks for the asset type and the file, shows a preview, then confirms. Over REST the body is the raw image with its own content type rather than a JSON envelope, which is why this request shows no JSON body.

Reuse the same file for another type
POST/api/credential-design/v1/designs/credentials/00000000-0000-4000-8000-000000000000/assets/en/LOGO201 Created- Admin Console
- Request
- Response
- Try it
Uploading the same image again for the mdoc design returns the identical uri and integrity. One
stored object, two designs referencing it. The repeated values in these two examples are the
deduplication showing through rather than a mistake in the capture.

Upload for issuer branding
POST/api/credential-design/v1/designs/credentials/00000000-0000-4000-8000-000000000000/assets/en/LOGO201 Created- Admin Console
- Request
- Response
- Try it
Issuer branding uses the same asset mechanism through its own route. The resulting URI goes onto the issuer design rather than onto a credential render variant.
Full schema: Credential design API.