{"id":11003,"date":"2026-04-08T20:32:46","date_gmt":"2026-04-08T20:32:46","guid":{"rendered":"https:\/\/gauntlet.gallery\/index.php\/coa-verification\/"},"modified":"2026-04-08T20:32:46","modified_gmt":"2026-04-08T20:32:46","slug":"coa-verification","status":"publish","type":"page","link":"https:\/\/gauntlet.gallery\/index.php\/coa-verification\/","title":{"rendered":"COA Verification"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_row full_width=&quot;stretch_row&quot; equal_height=&quot;yes&quot; content_placement=&quot;middle&quot; css=&quot;.vc_custom_1744144501000{background: linear-gradient(135deg, #0F2847 0%, #1A3A6C 100%) !important; padding-top: 70px !important; padding-bottom: 70px !important;}&quot;][vc_column width=&quot;7\/12&quot;][vc_custom_heading text=&quot;Verify a Gauntlet COA.&quot; font_container=&quot;tag:h1|font_size:64|text_align:left|color:%23ffffff|line_height:0.95&quot; use_theme_fonts=&quot;yes&quot;][vc_custom_heading text=&quot;Certificate of Authenticity&quot; font_container=&quot;tag:p|font_size:12|text_align:left|color:rgba%28255%2C255%2C255%2C0.72%29|letter_spacing:3&quot; use_theme_fonts=&quot;yes&quot; css=&quot;.vc_custom_1744144501001{margin-bottom: 16px !important;}&quot;][vc_column_text css=&quot;.vc_custom_1744144501002{margin-top: 18px !important;}&quot;]<\/p>\n<div style=\"color: rgba(255,255,255,.84); font-size: 18px; line-height: 1.85; max-width: 680px;\">Enter a COA code or scan a QR sticker to continue to the live verification record. This page is the WordPress entry point for collectors, buyers, and anyone checking an issued certificate.<\/div>\n<p>[\/vc_column_text][\/vc_column][vc_column width=&quot;5\/12&quot;][vc_column_text css=&quot;.vc_custom_1744144501003{background: #FBFAF6; border-radius: 28px; padding: 34px !important; box-shadow: 0 28px 70px rgba(15,40,71,.12); border: 1px solid rgba(15,40,71,.12);}&quot;]<\/p>\n<div id=\"gg-coa-card\">\n<h2 style=\"margin:0 0 12px; color:#0F2847; font-size:30px; letter-spacing:-.03em;\">Start Verification<\/h2>\n<p style=\"margin:0 0 16px; color:#3D4F63; line-height:1.75;\">Use the exact code printed on the certificate or scan the QR label. We will send you into the secure verification experience.<\/p>\n<form id=\"gg-coa-form\" style=\"display:grid; grid-template-columns:1fr auto; gap:12px; margin-top:14px;\">\n    <input id=\"gg-coa-input\" type=\"text\" placeholder=\"Enter COA code, e.g. 290745\" autocomplete=\"off\" style=\"min-height:56px; padding:0 18px; border:1px solid rgba(15,40,71,.16); border-radius:999px; background:#fff; color:#0F2847; font-size:15px;\"><br \/>\n    <button type=\"submit\" style=\"min-height:56px; padding:0 22px; border:0; border-radius:999px; font-size:13px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; cursor:pointer; background:#C9A227; color:#111;\">Verify<\/button><br \/>\n  <\/form>\n<div style=\"display:flex; align-items:center; gap:12px; margin:18px 0; color:#738195; font-size:11px; font-weight:700; letter-spacing:.16em; text-transform:uppercase;\"><span style=\"height:1px; flex:1; background:rgba(15,40,71,.12);\"><\/span>or<span style=\"height:1px; flex:1; background:rgba(15,40,71,.12);\"><\/span><\/div>\n<p><button id=\"gg-scan-btn\" type=\"button\" style=\"min-height:56px; padding:0 22px; border:1px solid rgba(15,40,71,.14); border-radius:999px; font-size:13px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; cursor:pointer; background:transparent; color:#0F2847; width:100%;\">Scan QR Code<\/button><\/p>\n<div id=\"gg-scanner\" style=\"display:none; margin-top:18px;\">\n<div id=\"gg-qr-reader\" style=\"width:100%; overflow:hidden; border-radius:18px; border:1px solid rgba(15,40,71,.12); background:#fff;\"><\/div>\n<div style=\"margin-top:12px;\"><button id=\"gg-cancel-scan\" type=\"button\" style=\"min-height:56px; padding:0 22px; border:0; border-radius:999px; font-size:13px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; cursor:pointer; background:#e9edf2; color:#0F2847;\">Cancel Scan<\/button><\/div><\/div>\n<p style=\"margin-top:14px; font-size:13px; color:#657286;\">Accepted formats: raw COA code, a QR sticker containing AUTHENTICATE\/123456, or a verification URL.<\/p>\n<p id=\"gg-coa-error\" style=\"display:none; margin-top:14px; padding:12px 14px; border-radius:16px; background:#fff1f1; color:#7b1d1d; font-size:14px;\">\n<\/div>\n<p>[\/vc_column_text][\/vc_column][\/vc_row]<\/p>\n<p>[vc_row css=&quot;.vc_custom_1744144501004{padding-top: 28px !important; padding-bottom: 18px !important;}&quot;][vc_column][vc_column_text css=&quot;.vc_custom_1744144501005{background: rgba(251,250,246,.72); border-radius: 30px; padding: 32px !important; box-shadow: 0 18px 60px rgba(15,40,71,.06); border: 1px solid rgba(15,40,71,.12);}&quot;]<\/p>\n<h3 style=\"margin:0 0 10px; color:#0F2847; font-size:24px; letter-spacing:-.02em;\">How it works<\/h3>\n<\/p>\n<p style=\"font-size:16px; line-height:1.8; color:#3D4F63;\">Each certificate or QR label points to a live verification record. If the code is valid, you will be taken to the COA viewer where the issued record, item data, and verification details are shown.<\/p>\n<ul style=\"margin:0; padding-left:18px; color:#3D4F63;\">\n<li style=\"font-size:16px; line-height:1.8;\">Enter the printed COA code manually.<\/li>\n<li style=\"font-size:16px; line-height:1.8;\">Or scan the QR sticker from your phone or desktop camera.<\/li>\n<li style=\"font-size:16px; line-height:1.8;\">The secure verification view opens on the dedicated COA service.<\/li>\n<\/ul>\n<p>[\/vc_column_text][\/vc_column][\/vc_row]<\/p>\n<p>[vc_row css=&#8221;.vc_custom_1744144501006{padding-top: 8px !important; padding-bottom: 60px !important;}&#8221;][vc_column][vc_column_text]<br \/>\n<script>\n(function(){\n  const BASE = 'https:\/\/gauntlet-coa-frontend.vercel.app';\n  const input = document.getElementById('gg-coa-input');\n  const form = document.getElementById('gg-coa-form');\n  const error = document.getElementById('gg-coa-error');\n  const scanBtn = document.getElementById('gg-scan-btn');\n  const scannerWrap = document.getElementById('gg-scanner');\n  const cancelBtn = document.getElementById('gg-cancel-scan');\n  let qrInstance = null;<\/p>\n<p>  function showError(message){\n    if (!error) return;\n    error.textContent = message;\n    error.style.display = 'block';\n  }<\/p>\n<p>  function clearError(){\n    if (!error) return;\n    error.textContent = '';\n    error.style.display = 'none';\n  }<\/p>\n<p>  function extractCode(value){\n    const raw = (value || '').trim();\n    if (!raw) return '';\n    const authMatch = raw.match(\/AUTHENTICATE\/([A-Za-z0-9-]+)\/i);\n    if (authMatch) return authMatch[1];\n    const verifyMatch = raw.match(\/\/verify\/([A-Za-z0-9-]+)\/i);\n    if (verifyMatch) return verifyMatch[1];\n    try {\n      const url = new URL(raw);\n      const queryCode = url.searchParams.get('code');\n      if (queryCode) return queryCode;\n      const pathMatch = url.pathname.match(\/\/(?:AUTHENTICATE|verify)\/([A-Za-z0-9-]+)\/i);\n      if (pathMatch) return pathMatch[1];\n    } catch (e) {}\n    return raw.replace(\/[^A-Za-z0-9-]\/g, '');\n  }<\/p>\n<p>  function go(code){\n    const normalized = extractCode(code);\n    if (!normalized) {\n      showError('Please enter a valid COA code.');\n      return;\n    }\n    clearError();\n    window.location.href = BASE + '\/verify\/' + encodeURIComponent(normalized);\n  }<\/p>\n<p>  if (form) {\n    form.addEventListener('submit', function(e){\n      e.preventDefault();\n      go(input && input.value);\n    });\n  }<\/p>\n<p>  if (input) {\n    input.addEventListener('keydown', function(e){\n      if (e.key === 'Enter') {\n        e.preventDefault();\n        go(input.value);\n      }\n    });\n  }<\/p>\n<p>  async function loadScanner(){\n    if (window.Html5Qrcode) return true;\n    return new Promise(function(resolve, reject){\n      const script = document.createElement('script');\n      script.src = 'https:\/\/unpkg.com\/html5-qrcode@2.3.8\/minified\/html5-qrcode.min.js';\n      script.onload = function(){ resolve(true); };\n      script.onerror = function(){ reject(new Error('Scanner failed to load.')); };\n      document.head.appendChild(script);\n    });\n  }<\/p>\n<p>  async function startScan(){\n    clearError();\n    try {\n      await loadScanner();\n      scannerWrap.style.display = 'block';\n      if (qrInstance) return;\n      qrInstance = new Html5Qrcode('gg-qr-reader');\n      await qrInstance.start(\n        { facingMode: 'environment' },\n        { fps: 10, qrbox: { width: 240, height: 240 } },\n        function(decodedText){ stopScan().then(function(){ go(decodedText); }); },\n        function(){}\n      );\n    } catch (err) {\n      showError(err && err.message ? err.message : 'Unable to start the QR scanner.');\n      scannerWrap.style.display = 'none';\n    }\n  }<\/p>\n<p>  async function stopScan(){\n    try {\n      if (qrInstance) {\n        await qrInstance.stop();\n        qrInstance.clear();\n      }\n    } catch (e) {}\n    qrInstance = null;\n    scannerWrap.style.display = 'none';\n  }<\/p>\n<p>  if (scanBtn) scanBtn.addEventListener('click', startScan);\n  if (cancelBtn) cancelBtn.addEventListener('click', stopScan);<\/p>\n<p>  const params = new URLSearchParams(window.location.search);\n  const existingCode = params.get('code');\n  if (existingCode) go(existingCode);\n})();\n<\/script><br \/>\n[\/vc_column_text][\/vc_column][\/vc_row]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_row full_width=&quot;stretch_row&quot; equal_height=&quot;yes&quot; content_placement=&quot;middle&quot; css=&quot;.vc_custom_1744144501000{background: linear-gradient(135deg, #0F2847 0%, #1A3A6C 100%) !important; padding-top: 70px !important; padding-bottom: 70px !important;}&quot;][vc_column width=&quot;7\/12&quot;][vc_custom_heading text=&quot;Verify a<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-11003","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/gauntlet.gallery\/index.php\/wp-json\/wp\/v2\/pages\/11003","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gauntlet.gallery\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gauntlet.gallery\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gauntlet.gallery\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gauntlet.gallery\/index.php\/wp-json\/wp\/v2\/comments?post=11003"}],"version-history":[{"count":0,"href":"https:\/\/gauntlet.gallery\/index.php\/wp-json\/wp\/v2\/pages\/11003\/revisions"}],"wp:attachment":[{"href":"https:\/\/gauntlet.gallery\/index.php\/wp-json\/wp\/v2\/media?parent=11003"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}