Complete API reference for managing web3 skill certificates
/apiIssue a new certificate to a user for completing a course. The certificate is created off-chain and can later be settled to the blockchain.
Authorization: Bearer sk_your_api_key_here{
"userWallet": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"course": "Solidity 101",
"skills": ["ERC721", "IPFS", "Smart Contracts"],
"expiresInDays": 90
}| Field | Type | Description |
|---|---|---|
| userWallet | string | Ethereum address of the certificate recipient |
| course | string | Name of the completed course |
| skills | string[] | Array of skills acquired in the course |
| expiresInDays | number | Certificate validity period in days |
{
"success": true,
"message": "Certificate issued successfully",
"data": {
"credentialId": "cred_1a2b3c4d5e6f",
"userWallet": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"course": "Solidity 101",
"skills": ["ERC721", "IPFS", "Smart Contracts"],
"issuedAt": "2025-10-25T14:30:00Z",
"expiresAt": "2026-01-23T14:30:00Z",
"status": "pending"
}
}Extend the rental period for an existing certificate, adding additional days to its validity.
{
"tokenId": 123,
"userWallet": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"additionalDays": 30
}| Field | Type | Description |
|---|---|---|
| tokenId | number | NFT token ID of the certificate |
| userWallet | string | Ethereum address of the certificate holder |
| additionalDays | number | Number of days to extend the certificate |
{
"success": true,
"message": "Certificate renewed successfully",
"data": {
"tokenId": 123,
"newExpirationDate": "2026-02-22T14:30:00Z",
"daysAdded": 30
}
}Revoke a certificate, immediately removing the user's access and invalidating the credential.
{
"tokenId": 123
}| Field | Type | Description |
|---|---|---|
| tokenId | number | NFT token ID of the certificate to revoke |
{
"success": true,
"message": "Certificate revoked successfully",
"data": {
"tokenId": 123,
"status": "revoked",
"revokedAt": "2025-10-25T14:30:00Z"
}
}Settle pending credentials to the blockchain, making them permanently verifiable on-chain.
{
"userWallet": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
}| Field | Type | Description |
|---|---|---|
| userWallet | string | Ethereum address to settle credentials for |
{
"success": true,
"message": "Credentials settled successfully",
"data": {
"transactionHash": "0x1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t",
"settledCount": 3,
"blockNumber": 18234567,
"gasUsed": "245120"
}
}Retrieve all certificates associated with a specific wallet address.
| Parameter | Type | Description |
|---|---|---|
| userWallet | string | Ethereum address to query credentials for |
GET /api/credentials?userWallet=0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb{
"success": true,
"data": {
"userWallet": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"credentials": [
{
"credentialId": "cred_1a2b3c4d5e6f",
"course": "Solidity 101",
"skills": ["ERC721", "IPFS", "Smart Contracts"],
"issuedAt": "2025-10-25T14:30:00Z",
"expiresAt": "2026-01-23T14:30:00Z",
"status": "active",
"tokenId": 123
},
{
"credentialId": "cred_7g8h9i0j1k2l",
"course": "Advanced Web3 Development",
"skills": ["DeFi", "DAOs", "Layer 2"],
"issuedAt": "2025-09-15T10:20:00Z",
"expiresAt": "2025-12-14T10:20:00Z",
"status": "active",
"tokenId": 89
}
],
"totalCount": 2
}
}