- 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.
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.string
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 afile 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