diff --git a/pages/api/rsmv/complete.js b/pages/api/rsmv/complete.js
new file mode 100644
index 0000000..3259967
--- /dev/null
+++ b/pages/api/rsmv/complete.js
@@ -0,0 +1,17 @@
+import Axios from 'axios';
+
+export default async (req, res) => {
+    let code = await Axios.post('http://localhost:3000/api/rsmv/validate', {code:req.body.code});
+    if (code.status != 200) {
+        return res.send(404);
+    }
+    if (code.data.user  != req.body.uid) return res.send(401)
+    if (code.data.guild != req.body.gid) return res.send(401)
+    if (code.data.role  != req.body.rid) return res.send(401)
+
+    let secret = "slwu0rZV5W6WdmGtgI16du8Ar2tQGMr3Q9dE6u3poKiVODNV9SweaA3buawgkTmTuITXDWOUpBcTFA0qWrUvoshi1JB180WOFwA7"
+    let resp = await Axios.get(
+        `http://192.168.102.5:10000/role/gid/${req.body.gid}/rid/${req.body.rid}/user/${req.body.uid}/secret/${secret}/code/${req.body.code}`
+    )
+    return res.send(resp.status);
+}
diff --git a/pages/api/rsmv/validate.js b/pages/api/rsmv/validate.js
new file mode 100644
index 0000000..7359a68
--- /dev/null
+++ b/pages/api/rsmv/validate.js
@@ -0,0 +1,28 @@
+import MongoClient from 'mongodb';
+
+
+const url = 'mongodb://rsm:LJMy*orVFAATQ5PaX7EKXq74&HCDFaLE@192.168.101.2:27017/rsm';
+const db = 'rsm';
+const collection = 'rsmv-tokens'
+
+export default (req, res) => {
+    return new Promise((resolve, reject) => {
+        MongoClient.connect(url, async function(err, client) {
+            let db_response = await client.db(db).collection(collection).findOne({code: req.body.code});
+
+            if (!db_response) return resolve(res.status(404).end());
+            if (db_response.timestamp + (1800) >= Date.now()) return resolve(res.status(410));
+
+            let props = {
+                user: db_response.user,
+                role: db_response.role,
+                role_name: db_response.role_name,
+                guild: db_response.guild,
+                guild_name: db_response.guild_name,
+                guild_icon_url: db_response.guild_icon_url,
+                guild_size: db_response.guild_size
+            }
+            return resolve(res.status(200).send(props));
+        })
+    })
+}
\ No newline at end of file
diff --git a/pages/api/rsmv/verifyTkn.js b/pages/api/rsmv/verifyTkn.js
new file mode 100644
index 0000000..7e9d06f
--- /dev/null
+++ b/pages/api/rsmv/verifyTkn.js
@@ -0,0 +1,12 @@
+import Axios from 'axios';
+import qs from 'querystring';
+
+export default 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: chk.data.success });
+}
\ No newline at end of file
