Developers
Live seal embed & verification API
The seal is served from the AI FREE registry. If a certificate is suspended, revoked or expires, every embedded seal updates automatically — no action needed on your site.
Embed the seal
Paste where the seal should appear, plus the script once before </body>.
<div data-aifree-certificate="HUM-2026-ABX91" data-aifree-width="150"></div> <script src="https://www.aifreecertification.org/api/public/embed.js" async></script>
QR code
Always-current QR code served by the registry, pointing to the public verification page.
HTML
<a href="https://www.aifreecertification.org/verify/HUM-2026-ABX91" target="_blank" rel="noopener"> <img src="https://www.aifreecertification.org/api/public/qr/HUM-2026-ABX91.svg" alt="Verify AI FREE certificate HUM-2026-ABX91" width="140" height="140" loading="lazy"> </a>
React / Next.js
export function AiFreeQr({ id = "HUM-2026-ABX91", size = 140 }) {
return (
<a href={`https://www.aifreecertification.org/verify/${id}`} target="_blank" rel="noopener">
<img
src={`https://www.aifreecertification.org/api/public/qr/${id}.svg`}
alt={`Verify AI FREE certificate ${id}`}
width={size}
height={size}
loading="lazy"
/>
</a>
);
}Verification API
Public, read-only and CORS-enabled. Returns 404 for unknown certificates.
GET https://www.aifreecertification.org/api/v1/verify/HUM-2026-ABX91
# canonical endpoint (no redirect): https://www.aifreecertification.org/api/public/v1/verify/HUM-2026-ABX91
{
"id": "HUM-2026-ABX91",
"status": "active",
"category": "100% HUMAN",
"category_code": "HUMAN_100",
"level": "100% HUMAN", // Deprecated. Use category instead.
"level_code": "HUMAN_100", // Deprecated. Use category_code instead.
"holder": "John Smith",
"issued": "2026-09-11",
"expires": "2027-09-11",
"hash": "f79c6fee…"
}
# "category" is the official field. "level" and "level_code" are kept for
# backwards compatibility and will become the official terminology-only
# "category" pair in a future major API version.cURL
curl -s https://www.aifreecertification.org/api/v1/verify/HUM-2026-ABX91
JavaScript
const res = await fetch("https://www.aifreecertification.org/api/v1/verify/HUM-2026-ABX91");
const cert = await res.json();
if (cert.status === "active") {
// show the seal
}PHP / WordPress
$response = wp_remote_get( 'https://www.aifreecertification.org/api/v1/verify/HUM-2026-ABX91' );
$cert = json_decode( wp_remote_retrieve_body( $response ), true );
if ( isset( $cert['status'] ) && $cert['status'] === 'active' ) {
// render the seal
}Shopify (Liquid + JS)
<div id="aifree-status"></div>
<script>
fetch("https://www.aifreecertification.org/api/v1/verify/HUM-2026-ABX91")
.then((r) => r.json())
.then((c) => {
document.getElementById("aifree-status").textContent = c.status;
});
</script>Authorized domains
Certificate holders register the websites allowed to display their seal in Dashboard → Authorized domains. Once at least one domain is verified, the registry only serves the live seal to those sites; any other site receives an “unauthorized site” seal and the access is logged.
Short links
- https://www.aifreecertification.org/c/CERTIFICATE-ID — companies
- https://www.aifreecertification.org/w/CERTIFICATE-ID — written works
- https://www.aifreecertification.org/i/CERTIFICATE-ID — images
- https://www.aifreecertification.org/s/example.com — websites, by domain
