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