{"id":7,"date":"2026-07-03T18:59:02","date_gmt":"2026-07-03T18:59:02","guid":{"rendered":"https:\/\/demo-api.swiffle-grid.com\/?page_id=7"},"modified":"2026-07-03T18:59:02","modified_gmt":"2026-07-03T18:59:02","slug":"glimmerlings-api-key","status":"publish","type":"page","link":"https:\/\/demo-api.swiffle-grid.com\/glimmerlings-api-key\/","title":{"rendered":"Get a Glimmerlings API Key"},"content":{"rendered":"    <div id=\"gapi-wrap\" style=\"max-width:480px;margin:2rem auto;font-family:system-ui,sans-serif;\">\n        <div id=\"gapi-form-box\">\n            <h2 style=\"margin-top:0;\">\ud83d\udd11 Get a free API key<\/h2>\n            <p style=\"color:#555;font-size:.95rem;\">\n                Valid for <strong>1 hour<\/strong>. No account, no email required.\n                Max 5 keys per IP per hour.\n            <\/p>\n            <form id=\"gapi-form\" autocomplete=\"off\">\n                <input type=\"hidden\" name=\"form_token\" value=\"eb6ef55231b01274386f859d08cbe5b0\">\n\n                <!-- Honeypot fields \u2014 hidden from real users, bots fill them in -->\n                <div style=\"position:absolute;left:-9999px;top:-9999px;\" aria-hidden=\"true\">\n                    <input type=\"text\"  name=\"website\"       tabindex=\"-1\" autocomplete=\"off\">\n                    <input type=\"email\" name=\"email_confirm\" tabindex=\"-1\" autocomplete=\"off\">\n                <\/div>\n\n                <button type=\"submit\" id=\"gapi-btn\"\n                    style=\"padding:10px 24px;background:#2454ff;color:#fff;border:none;border-radius:6px;font-size:1rem;cursor:pointer;\">\n                    Generate my key\n                <\/button>\n                <p id=\"gapi-error\" style=\"color:#c0392b;display:none;margin-top:8px;\"><\/p>\n            <\/form>\n        <\/div>\n\n        <div id=\"gapi-result\" style=\"display:none;\">\n            <h3 style=\"margin-top:0;\">\u2705 Your API key<\/h3>\n            <code id=\"gapi-key\" style=\"display:block;padding:10px;background:#f1f3f9;border-radius:6px;\n                word-break:break-all;font-size:.95rem;margin-bottom:8px;\"><\/code>\n            <p style=\"font-size:.85rem;color:#555;\">\n                Expires in 1 hour. Copy it now \u2014 it won't be shown again.\n            <\/p>\n            <p style=\"font-size:.85rem;\">\n                Use it like this:<br>\n                <code id=\"gapi-example\" style=\"word-break:break-all;font-size:.82rem;\"><\/code>\n            <\/p>\n        <\/div>\n    <\/div>\n\n    <script>\n    document.getElementById('gapi-form').addEventListener('submit', function(e) {\n        e.preventDefault();\n        var btn  = document.getElementById('gapi-btn');\n        var err  = document.getElementById('gapi-error');\n        btn.disabled = true;\n        btn.textContent = 'Generating\u2026';\n        err.style.display = 'none';\n\n        var data = new FormData(this);\n\n        fetch('https:\/\/demo-api.swiffle-grid.com\/wp-json\/glimmerlings\/v1\/request-key', {\n            method: 'POST',\n            body: new URLSearchParams(data),\n            headers: { 'Content-Type': 'application\/x-www-form-urlencoded' }\n        })\n        .then(function(r) { return r.json(); })\n        .then(function(json) {\n            if (json.api_key) {\n                document.getElementById('gapi-form-box').style.display = 'none';\n                document.getElementById('gapi-result').style.display   = 'block';\n                document.getElementById('gapi-key').textContent        = json.api_key;\n                document.getElementById('gapi-example').textContent    =\n                    'https:\/\/demo-api.swiffle-grid.com\/wp-json\/glimmerlings\/v1\/creatures?api_key=' + json.api_key;\n            } else {\n                err.textContent    = json.error || 'An error occurred. Please try again.';\n                err.style.display  = 'block';\n                btn.disabled       = false;\n                btn.textContent    = 'Generate my key';\n            }\n        })\n        .catch(function() {\n            err.textContent   = 'Network error. Please try again.';\n            err.style.display = 'block';\n            btn.disabled      = false;\n            btn.textContent   = 'Generate my key';\n        });\n    });\n    <\/script>\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-7","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/demo-api.swiffle-grid.com\/wp-json\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demo-api.swiffle-grid.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/demo-api.swiffle-grid.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/demo-api.swiffle-grid.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demo-api.swiffle-grid.com\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":0,"href":"https:\/\/demo-api.swiffle-grid.com\/wp-json\/wp\/v2\/pages\/7\/revisions"}],"wp:attachment":[{"href":"https:\/\/demo-api.swiffle-grid.com\/wp-json\/wp\/v2\/media?parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}