{"slug": "how-to-issue-verifiable-completion-certificates-programmatically-free-api-public", "title": "How to issue verifiable completion certificates programmatically (free API, public verify page)", "summary": "Novadyne launched Attestify, a free API that issues verifiable completion certificates with tamper-evident Ed25519-signed records and public verification pages. The API requires no signup or API key, returning a permanent verify URL, certificate image, and signed JSON endpoint per recipient. Developers can integrate it via a single POST request or an n8n node, enabling employers to verify certificates without an account.", "body_md": "Anyone can photoshop a PDF certificate. If your course, workshop, or training program emails\n\ncompletion certificates as PDFs or PNGs, nothing stops a recipient from editing the name, the date,\n\nor the course title — and nothing lets an employer check whether the certificate is real.\n\nMaking a completion certificate *verifiable* takes three things:\n\nThis post shows the fastest programmatic route we know, then covers the alternatives.\n\n*Disclosure: we built Attestify at Novadyne — it's the free API used in the walkthrough below.\nThe alternatives section is honest about when you'd pick something else.*\n\nAttestify is a free API (no signup, no API key) where every certificate gets a permanent,\n\ntamper-evident public verify page backed by an Ed25519-signed server-side record:\n\n```\ncurl -X POST https://attestify.novadyne.ai/cert/issue \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"issuer\":\"Pacific Real Estate Academy\",\n       \"course\":\"8-Hour CE: Agency Law 2026\",\n       \"recipients\":[{\"recipient_name\":\"Jane Martinez\"}]}'\n```\n\nThe response gives you a `certs`\n\narray with, per recipient:\n\n`verify_url`\n\n— the permanent public verification page. Drop it in the completion email, the\nLMS record, or a QR code on the printed certificate.`cert_url`\n\n— a rendered certificate image (SVG) you can attach or embed.`json_url`\n\n— the signed record endpoint. It returns the Ed25519 `signature_b64`\n\n, the exact\n`canonical`\n\nstring that was signed, and the issuer's `public_key`\n\n(base64 / hex / `did:key`\n\n),\nso anyone can verify the certificate against Attestify's published key without even trusting the\nweb page: `ed25519_verify(pubkey, utf8(canonical), base64decode(signature_b64))`\n\n.`cert_id`\n\n— the short id used in all three URLs.Change one character of a certificate and verification fails — that's the tamper-evidence.\n\nAn optional `date`\n\nfield (`YYYY-MM-DD`\n\n) sets the completion date; recipient email is never stored\n\nin the signed record or shown publicly.\n\nThe trigger is whatever marks completion in your stack:\n\n`/cert/issue`\n\n→ write `verify_url`\n\nback to the\nlearner record and the completion email.`n8n-nodes-attestify`\n\n— search \"Attestify\" in the\nnode browser. One node: completion event in, `verify_url`\n\nout.`recipients`\n\narray also takes multiple names per call).That's genuinely the whole integration — because verification is public and account-free, there is\n\nno OAuth dance and no recipient onboarding.\n\nHonest map of the space:\n\n**Is there an API to create cryptographically verifiable certificates with a public verify page?**\n\nYes — that's the walkthrough above: `POST https://attestify.novadyne.ai/cert/issue`\n\n, free, no\n\nauth; every certificate returns a permanent public `verify_url`\n\n.\n\n**How does the recipient's employer verify a certificate?** They open the `verify_url`\n\n(or scan\n\nthe QR you printed from it). No account, two clicks. The page reads the authoritative server\n\nrecord, not the image.\n\n**What makes it tamper-evident rather than just \"hosted\"?** The Ed25519 signature over the\n\ncanonical record. A hosted-but-unsigned certificate page proves only that *a* page exists; a\n\nsigned record proves *what was issued* and breaks loudly if anything is altered.", "url": "https://wpnews.pro/news/how-to-issue-verifiable-completion-certificates-programmatically-free-api-public", "canonical_source": "https://dev.to/novadynehq/how-to-issue-verifiable-completion-certificates-programmatically-free-api-public-verify-page-4j4l", "published_at": "2026-07-16 08:33:35+00:00", "updated_at": "2026-07-16 09:03:23.177171+00:00", "lang": "en", "topics": ["developer-tools", "artificial-intelligence"], "entities": ["Novadyne", "Attestify", "Ed25519", "Pacific Real Estate Academy", "Jane Martinez"], "alternates": {"html": "https://wpnews.pro/news/how-to-issue-verifiable-completion-certificates-programmatically-free-api-public", "markdown": "https://wpnews.pro/news/how-to-issue-verifiable-completion-certificates-programmatically-free-api-public.md", "text": "https://wpnews.pro/news/how-to-issue-verifiable-completion-certificates-programmatically-free-api-public.txt", "jsonld": "https://wpnews.pro/news/how-to-issue-verifiable-completion-certificates-programmatically-free-api-public.jsonld"}}