Credential Management

Once a wallet has received credentials, you can list them, inspect a single credential in full, import a raw credential directly, and delete credentials. The examples use http://localhost:7005 as the base URL.


List Credentials

List the metadata of every credential in the wallet. This is lightweight — it does not include the raw credential data.

CURL

Endpoint: GET /wallet/{walletId}/credentials | API Reference

Example Request
curl http://localhost:7005/wallet/{walletId}/credentials

Path Parameters

  • walletId: String (required) - The wallet whose credentials you want to list. See Managing Wallets.

Example Response
[
  {
    "id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
    "format": "dc+sd-jwt",
    "issuer": "http://localhost:7005/openid4vci",
    "subject": "did:key:z6Mkfriq1MqLBoPWecGoDLjguo1sB9brj6wT3qZ5BxkKpuP6",
    "label": null,
    "addedAt": "2026-07-08T10:15:30Z"
  }
]

Response Fields

  • id: String - The credential's ID, used to fetch or delete it.
  • format: String - Credential format (dc+sd-jwt, jwt_vc_json, mso_mdoc).
  • issuer / subject: String - Issuer and holder identifiers, when available.
  • label: String - Optional label set on import.
  • addedAt: String - ISO-8601 timestamp of when the credential was stored.

Get a Credential

Fetch a single credential, including its parsed contents and raw data.

CURL

Endpoint: GET /wallet/{walletId}/credentials/{credentialId} | API Reference

Example Request
curl http://localhost:7005/wallet/{walletId}/credentials/{credentialId}

Path Parameters

  • walletId: String (required) - The wallet holding the credential.
  • credentialId: String (required) - The credential to fetch. Obtain it from list credentials.

Example Response
{
  "id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
  "credential": {
    "format": "dc+sd-jwt",
    "...": "parsed credential contents"
  },
  "label": null,
  "addedAt": "2026-07-08T10:15:30Z"
}

Response Fields

  • id: String - The credential's ID.
  • credential: Object - The parsed credential, including its raw representation.
  • label / addedAt: The optional label and storage timestamp.

Import a Credential

Store a raw credential directly — for example one obtained outside the wallet, or fetched via the Custom Flow fetch step (which returns raw credentials without storing them).

CURL

Endpoint: POST /wallet/{walletId}/credentials/import | API Reference

Example Request
curl -X POST http://localhost:7005/wallet/{walletId}/credentials/import \
  -H 'Content-Type: application/json' \
  -d '{
    "rawCredential": "eyJhbGciOiJFUzI1NiIsInR5cCI6InZjK3NkLWp3dCJ9...",
    "label": "My identity credential"
  }'

Path Parameters

  • walletId: String (required) - The wallet to import into.

Body Parameters

  • rawCredential: String (required) - The raw credential (JWT, SD-JWT, or base64url mdoc). The wallet detects the format automatically.
  • label: String (optional) - A human-readable label to store alongside the credential.

Example Response
{
  "id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
  "credential": { "format": "dc+sd-jwt", "...": "parsed credential contents" },
  "label": "My identity credential",
  "addedAt": "2026-07-08T10:15:30Z"
}

Delete a Credential

CURL

Endpoint: DELETE /wallet/{walletId}/credentials/{credentialId} | API Reference

Example Request
curl -X DELETE http://localhost:7005/wallet/{walletId}/credentials/{credentialId}

Path Parameters

  • walletId: String (required) - The wallet holding the credential.
  • credentialId: String (required) - The credential to delete.

Example Response

204 No Content on success, or 404 Not Found if the credential doesn't exist.


Next Steps

Last updated on July 13, 2026