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.
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.
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).
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
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
- Present a credential to a verifier.
- Receive more credentials.
