API REFERENCE

SkillCert API

Complete API reference for managing web3 skill certificates

Base URL:/api
POST

/issue

Issue a new certificate to a user for completing a course. The certificate is created off-chain and can later be settled to the blockchain.

Authentication

Authorization: Bearer sk_your_api_key_here

Request Body

JSON
{
  "userWallet": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
  "course": "Solidity 101",
  "skills": ["ERC721", "IPFS", "Smart Contracts"],
  "expiresInDays": 90
}

Parameters

FieldTypeDescription
userWalletstringEthereum address of the certificate recipient
coursestringName of the completed course
skillsstring[]Array of skills acquired in the course
expiresInDaysnumberCertificate validity period in days

Response

JSON200 OK
{
                        "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"
                        }
                      }
POST

/renew

Extend the rental period for an existing certificate, adding additional days to its validity.

Request Body

JSON
{
  "tokenId": 123,
  "userWallet": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
  "additionalDays": 30
}

Parameters

FieldTypeDescription
tokenIdnumberNFT token ID of the certificate
userWalletstringEthereum address of the certificate holder
additionalDaysnumberNumber of days to extend the certificate

Response

JSON200 OK
{
  "success": true,
  "message": "Certificate renewed successfully",
  "data": {
    "tokenId": 123,
    "newExpirationDate": "2026-02-22T14:30:00Z",
    "daysAdded": 30
  }
}
POST

/revoke

Revoke a certificate, immediately removing the user's access and invalidating the credential.

Request Body

JSON
{
  "tokenId": 123
}

Parameters

FieldTypeDescription
tokenIdnumberNFT token ID of the certificate to revoke

Response

JSON200 OK
{
  "success": true,
  "message": "Certificate revoked successfully",
  "data": {
    "tokenId": 123,
    "status": "revoked",
    "revokedAt": "2025-10-25T14:30:00Z"
  }
}
POST

/settle

Settle pending credentials to the blockchain, making them permanently verifiable on-chain.

Request Body

JSON
{
  "userWallet": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
}

Parameters

FieldTypeDescription
userWalletstringEthereum address to settle credentials for

Response

JSON200 OK
{
  "success": true,
  "message": "Credentials settled successfully",
  "data": {
    "transactionHash": "0x1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t",
    "settledCount": 3,
    "blockNumber": 18234567,
    "gasUsed": "245120"
  }
}
GET

/credentials

Retrieve all certificates associated with a specific wallet address.

Query Parameters

ParameterTypeDescription
userWalletstringEthereum address to query credentials for

Example Request

cURL
GET /api/credentials?userWallet=0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb

Response

JSON200 OK
{
  "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
  }
}