Skip to main content
Credential issuance is the process of an issuer creating and delivering a verifiable credential to a holder. CREDEBL supports several issuance flows:
  • Connection-based offer — issue a credential directly to a holder over an established DIDComm connection.
  • Out-of-band (OOB) offer — generate a credential offer that can be accepted without a prior connection, delivered as a URL or QR code.
  • OOB via email — send OOB credential offers to one or more holders by email.
  • Bulk CSV issuance — upload a CSV file to issue credentials to many holders simultaneously.
Both AnonCreds (Indy) and W3C JSON-LD credential types are supported. Specify the type using the credentialType query parameter (INDY or JSONLD).

Base path

All endpoints are rooted at /orgs/:orgId/credentials.

Authentication

Every endpoint requires a JWT bearer token.

Role-based access

Endpoints

Issue credential (connection)

POST /orgs/:orgId/credentials/offer — Issue to a connected holder.

Issue credential (OOB)

POST /orgs/:orgId/credentials/oob/offer — Create an OOB credential offer.

Issue via email (OOB)

POST /orgs/:orgId/credentials/oob/email — Send OOB offers via email.

List credentials

GET /orgs/:orgId/credentials — Retrieve all issued credential records.

Get credential

GET /orgs/:orgId/credentials/:credentialRecordId — Get a specific credential record.

Bulk templates

GET /orgs/:orgId/credentials/bulk/template — List or download a CSV template for bulk issuance.

Upload CSV

POST /orgs/:orgId/bulk/upload — Upload a filled CSV file for bulk issuance.

Execute bulk issuance

POST /orgs/:orgId/:requestId/bulk — Trigger bulk credential issuance for an uploaded file.

Delete issuance records

DELETE /orgs/:orgId/issuance-records — Delete all issuance records for an organization.

Issue credential (connection-based)

POST /orgs/:orgId/credentials/offer Issue one or more verifiable credentials to holders over established DIDComm connections. Required roles: owner, admin, issuer

Path parameters

string
required
UUID of the issuing organization.

Query parameters

string
required
Credential format. Enum: INDY (default) or JSONLD.
boolean
Validate credential attributes against the schema before issuing. Defaults to true.

Request body

string
The ledger credential definition ID. Required when credentialType is INDY. Example: "WgWxqztrNooG92RXvxSTWv:3:CL:123:default".
string
Optional human-readable comment attached to the credential offer.
string
DIDComm protocol version. Example: "v1" or "v2".
string
Auto-acceptance mode. Enum: always, contentApproved, never.
string
A goal code for the credential offer thread.
string
Parent thread ID to attach this offer to an existing thread.
boolean
Whether the issuer confirms receipt of the presentation.
string
Label for the credential offer message.
string
Image URL to include with the credential offer.
boolean
Reuse an existing connection if available. Defaults to true.
boolean
Shorten the OOB URL in the response.
object[]
required
Array of credential offers. Each element targets a specific connection.

Examples

201 response

Create out-of-band credential offer

POST /orgs/:orgId/credentials/oob/offer Create an out-of-band credential offer that can be accepted by a holder without a pre-existing connection. The response contains an invitation URL. Required roles: owner, admin, issuer

Path parameters

string
required
UUID of the issuing organization.

Query parameters

string
required
Credential format. Enum: INDY (default) or JSONLD.
boolean
Validate attributes against the schema. Defaults to true.

Request body

string
Ledger credential definition ID. Required for INDY type.
string
Optional comment attached to the credential offer.
string
DIDComm protocol version.
string
Auto-acceptance mode. Enum: always, contentApproved, never.
boolean
Whether to return a shortened invitation URL.
boolean
Attempt to reuse an existing connection.
object[]
Credential attribute name/value pairs. Required for INDY type.
object
W3C Verifiable Credential object. Required for JSONLD type.
object
Linked Data proof options. Required for JSONLD type.

Examples

201 response

Issue credential via email

POST /orgs/:orgId/credentials/oob/email Create OOB credential offers and deliver them to holders by email. Each element in credentialOffer targets a specific email address. Required roles: owner, admin, issuer

Path parameters

string
required
UUID of the issuing organization.

Query parameters

string
required
Credential format. Enum: INDY (default) or JSONLD.
boolean
Validate attributes against the schema. Defaults to true.

Request body

string
Ledger credential definition ID. Required for INDY type.
string
Optional comment for all offers in this batch.
string
DIDComm protocol version.
boolean
Attempt to reuse an existing connection with each recipient.
object[]
required
Array of per-recipient credential offers. The maximum number of entries is controlled by the OOB_BATCH_SIZE environment variable.

Examples

201 response

List issued credentials

GET /orgs/:orgId/credentials Retrieve all issued credential records for an organization. Supports pagination, search, and sorting. Required roles: owner, admin, issuer, verifier, member, holder

Path parameters

string
required
UUID of the organization.

Query parameters

number
Page to retrieve. Min 1. Defaults to 1.
number
Records per page. Min 1, max 100. Defaults to 10.
Free-text search across credential records.
string
Field to sort by. Enum: createDateTime (default).
string
Sort direction. ASC or DESC (default).

Examples

200 response

Get credential by record ID

GET /orgs/:orgId/credentials/:credentialRecordId Retrieve the details of a single credential issuance record. Required roles: owner, admin, issuer, verifier, member, holder

Path parameters

string
required
UUID of the organization.
string
required
UUID of the credential record to retrieve.

Examples

200 response

Bulk issuance

CREDEBL supports issuing credentials to large numbers of holders by uploading a filled CSV file. The bulk issuance flow has three steps:
1

Download a CSV template

Use GET /orgs/:orgId/credentials/bulk/template to list available templates, or POST /orgs/:orgId/credentials/bulk/template to download a CSV template file pre-filled with the correct column headers for a specific credential definition.
2

Upload the filled CSV

Fill in the CSV with one row per holder and upload it via POST /orgs/:orgId/bulk/upload. The server returns a requestId.
3

Trigger issuance

Call POST /orgs/:orgId/:requestId/bulk to start the issuance process for all rows in the uploaded file.

Download CSV template

POST /orgs/:orgId/credentials/bulk/template Download a CSV template with column headers derived from a credential definition’s schema. Required roles: owner, admin, issuer, verifier

Request body

string
required
The ledger credential definition ID to use as a template. Example: "WgWxqztrNooG92RXvxSTWv:3:CL:123:default".
string
required
Schema type. Enum: INDY or W3C.

Examples

Upload CSV for bulk issuance

POST /orgs/:orgId/bulk/upload Upload a filled CSV file for bulk issuance. The file is uploaded as multipart/form-data. Required roles: owner, admin, issuer, verifier

Path parameters

string
required
UUID of the organization.

Query parameters

string
required
Schema type of the CSV data. Enum: INDY or W3C.
string
required
The credential definition ID used as the template.
boolean
Validate rows against the schema on upload. Defaults to true.

Request body

Upload a file field as multipart/form-data containing the CSV binary. Optionally include a fileName field.

Examples

201 response

Execute bulk issuance

POST /orgs/:orgId/:requestId/bulk Start the bulk credential issuance process for a previously uploaded CSV file. Required roles: owner, admin, issuer, verifier

Path parameters

string
required
UUID of the organization.
string
required
The requestId returned when the CSV was uploaded.

Query parameters

boolean
Validate rows against the schema before issuing. Defaults to true.
string
Override the credential definition ID for this issuance run.

Request body

string
Client identifier for tracking the bulk job.
string
Name of the CSV file being processed.
boolean
When true, allows selective issuance for specific rows.
string
URL of the organization’s logo to include in credential emails.
string
Platform name to include in credential emails.

Delete issuance records

DELETE /orgs/:orgId/issuance-records Delete all issuance records for an organization. This action is irreversible. Required roles: owner

Path parameters

string
required
UUID of the organization.

Examples

200 response