Documentation

Everything you need to integrate with Chitin Certs.

Quick Start

1. Register as an Issuer

Connect your wallet at /register and provide your organization name and website.

2. Generate an API Key

Go to /settings and create an API key for programmatic access.

3. Issue Certificates

Use the dashboard or the REST API to issue certificates to passport holders.

REST API

Base URL: https://certs.chitin.id/api/v1

POST/certs

Issue a single certificate.

curl -X POST https://certs.chitin.id/api/v1/certs \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "issuerAddress": "0x...",
    "recipientAddress": "0x...",
    "certType": "achievement",
    "title": "ETH Denver 2026 Winner",
    "evidence": "https://ethdenver.com/results/...",
    "tags": ["hackathon", "2026"]
  }'

Response:

{
  "success": true,
  "data": {
    "tokenId": 1,
    "txHash": "0x...",
    "arweaveTxId": "abc123..."
  }
}
POST/certs/batch

Issue multiple certificates at once (max 100).

curl -X POST https://certs.chitin.id/api/v1/certs/batch \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "issuerAddress": "0x...",
    "certs": [
      { "recipientAddress": "0x...", "certType": "achievement", "title": "Winner" },
      { "recipientAddress": "0x...", "certType": "capability", "title": "Verified" }
    ]
  }'
GET/verify/{certId}

Verify a certificate. No authentication required.

curl https://certs.chitin.id/api/v1/verify/1

Response:

{
  "success": true,
  "data": {
    "tokenId": 1,
    "issuer": "0x...",
    "recipient": "0x...",
    "certType": "achievement",
    "arweaveTxId": "abc123...",
    "issuedAt": 1738972800,
    "revoked": false,
    "metadata": { ... }
  }
}
GET/certs?passport={address}

List all certificates for a passport address.

GET/certs?issuer={address}

List all certificates issued by an address.

DELETE/certs/{certId}

Revoke a certificate. Only the original issuer can revoke. Requires wallet signature (client-side transaction).

POSTGET/events

Create and list certification events (e.g., “ETH Denver 2026”). Events group related certificates together.

POSTGET/webhooks

Register webhook URLs to receive notifications when certificates are minted or revoked.

Authentication

API KEY

Include your API key in the Authorization header:

Authorization: Bearer ck_your_api_key_here

WALLET

The web dashboard uses wallet-based authentication via Coinbase Smart Wallet or any injected wallet (MetaMask, etc.).

Smart Contract

ContractChitinCertRegistry (UUPS Proxy)
NetworkBase Sepolia (84532)
Token StandardERC-721 (non-transferable)
Metadata StorageArweave (permanent)

Rate Limits

Single mintNo limit (gas-sponsored)
Batch mint100 certs per request
VerificationNo limit (public, no auth)

For the full protocol specification, see the Chitin Whitepaper.