Import and Store W3C Credentials in walt.id Wallet
This guide will walk you through the process of importing and storing self-signed W3C credentials into your walt.id wallet using the API. This is particularly useful for testing and development purposes.
Prerequisites
- A walt.id wallet set up and running. If you haven't set up a wallet yet, you can follow the walt.id wallet setup guide.
- A self-signed W3C credential in JWT format that you want to import into the wallet.
- A did you want to associate the credential with.
Steps to Import and Store Credentials
1. Prepare Your Self-Signed Credential
Ensure you have a self-signed W3C credential in JWT format. The credential should include the necessary claims and be signed. Here is an example of a self-signed credential in JWT format:
{
"iss": "did:example:123456789abcdefghi",
"sub": "did:example:abcdefghi123456789",
"vc": {
"@context": [
"https://www.w3.org/2018/credentials/v1"
],
"type": ["VerifiableCredential"],
"credentialSubject": {
"id": "did:example:abcdefghi123456789",
"name": "John Doe"
}
},
"iat": 1618884473,
"exp": 1672531199,
"jti": "urn:uuid:123e4567-e89b-12d3-a456-426614174000"
}
2. Use the API to Import the Credential
You can use the following API endpoint to import the self-signed credential into your walt.id wallet:
CURL
Endpoint:/wallet-api/wallet/{wallet_id}/credentials/import
| API Reference
Example Request:
curl -X 'POST' \
'https://wallet.test.waltid.cloud/wallet-api/wallet/{wallet_id}/credentials/import' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"jwt": "eyJraWQiOiJWeng3bDVmaDU2RjNQZjlhUjNERUNVNUJ3ZnJZNlpKZTA1YWlXWVd6YW44IiwiYWxnIjoiRWREU0EifQ.eyJpc3MiOiJkaWQ6a2V5Ono2TWtqb1JocTFqU05KZExpcnVTWHJGRnhhZ3FyenRaYVhIcUhHVVRLSmJjTnl3cCIsInN1YiI6ImRpZDprZXk6ejZNa2pvUmhxMWpTTkpkTGlydVNYckZGeGFncXJ6dFphWEhxSEdVVEtKYmNOeXdwIiwidmMiOnsiQGNvbnRleHQiOlsiaHR0cHM6Ly93d3cudzMub3JnLzIwMTgvY3JlZGVudGlhbHMvdjEiLCJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy9leGFtcGxlcy92MSJdLCJpZCI6Imh0dHA6Ly9leGFtcGxlLmdvdi9jcmVkZW50aWFscy8zNzMyIiwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIlVuaXZlcnNpdHlEZWdyZWVDcmVkZW50aWFsIl0sImlzc3VlciI6eyJpZCI6ImRpZDp3ZWI6dmMudHJhbnNtdXRlLndvcmxkIn0sImlzc3VhbmNlRGF0ZSI6IjIwMjAtMDMtMTBUMDQ6MjQ6MTIuMTY0WiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwiZGVncmVlIjp7InR5cGUiOiJCYWNoZWxvckRlZ3JlZSIsIm5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIn19fX0.PureDss8Z-w3fyrraVEds0-qftaadS6i7JqF1zxjxAUpFY2qUNGNiiQUaQ5pACFVRmJv7bw1SQZqnkZgstDlAA",
"associated_did": "did:jwk:eyJrdHkiOiJPS1AiLCJjcnYiOiJFZDI1NTE5Iiwia2lkIjoiaDRDcmJUYnc1NG8wTFMtLWtMTUUzSFZ4ZFpTczNHa0YyS1BUSEl0R0lqbyIsIngiOiJWZ0JFc0hwQmp3aE8waXZQWlpuS0MtY3dfeHNDYjZEbEhxUnd6SFRkN0RZIn0"
}'
Body Parameters:
associated_did
: The DID to associate the credential with.jwt
: The self-signed W3C credential in JWT format.- Response Codes:
201
: Credential imported successfully.400
: Invalid JWT or VC structure.401
: Invalid authentication.409
: Credential already exists.
Last updated on September 18, 2025