diff --git a/pages/api/nucleus/verify/complete.js b/pages/api/nucleus/verify/complete.js
new file mode 100644
index 0000000..1b58a04
--- /dev/null
+++ b/pages/api/nucleus/verify/complete.js
@@ -0,0 +1,22 @@
+import Axios from 'axios';
+import qs from 'querystring';
+
+const Complete = async (req, res) => {
+    const chk = await Axios.post('http://localhost:3000/api/nucleus/verify/verifyToken', qs.stringify({
+        tkn: req.body.tkn
+    }))
+    if ( !chk.data.success ) {
+        return res.status(200).send({success: false})
+    }
+    let secret = "slwu0rZV5W6WdmGtgI16du8Ar2tQGMr3Q9dE6u3poKiVODNV9SweaA3buawgkTmTuITXDWOUpBcTFA0qWrUvoshi1JB180WOFwA7"
+    try {
+        await Axios.post(`http://192.168.0.18:10000/verify/${req.body.code}`, {
+            secret: secret
+        });
+    } catch (e) {
+        return res.status(200).send({success: false})
+    }
+    return res.status(200).send({success: true});
+}
+
+export default Complete;
\ No newline at end of file
diff --git a/pages/api/nucleus/verify/fetch.js b/pages/api/nucleus/verify/fetch.js
new file mode 100644
index 0000000..ba7aa04
--- /dev/null
+++ b/pages/api/nucleus/verify/fetch.js
@@ -0,0 +1,22 @@
+import Axios from 'axios';
+
+const Validate = async (req, res) => {
+    try {
+        // var out = await Axios.get(`http://192.168.102.7:10000/verify/${req.body.code}`)
+        // out = out.data
+        // let props = {
+        //     user: out.user,
+        //     role: out.role,
+        //     role_name: out.role_name,
+        //     guild: out.guild,
+        //     guild_name: out.guild_name,
+        //     guild_icon_url: out.guild_icon_url,
+        //     guild_size: out.guild_size
+        // }
+        return res.status(200).send(props)
+    } catch (err) {
+        return res.status(400).end()
+    }
+}
+
+export default Validate;
\ No newline at end of file
diff --git a/pages/api/nucleus/verify/verifyToken.js b/pages/api/nucleus/verify/verifyToken.js
new file mode 100644
index 0000000..b44624e
--- /dev/null
+++ b/pages/api/nucleus/verify/verifyToken.js
@@ -0,0 +1,15 @@
+import Axios from 'axios';
+import qs from 'querystring';
+
+const verifyToken = async (req, res) => {
+    const chk = await Axios.post('https://hcaptcha.com/siteverify', qs.stringify({
+        response: req.body.tkn,
+        secret: '0x19C699BFfce07b2a026121DE6702706BB2d51D6c',
+        sitekey: '85074411-fa13-4d9b-b901-53095c6d1fc6'
+    }))
+
+    // return res.send({ success: false });
+    return res.send({ success: chk.data.success });
+}
+
+export default verifyToken;
\ No newline at end of file
