Documentation

Node / Express

Verify the proof token from your server with your secret key.

route example

import express from "express";

const app = express();
app.use(express.json());

app.post("/submit-form", async (req, res) => {
  const verifyResponse = await fetch("https://captcha.cc/v1/siteverify", {
    method: "POST",
    headers: { "content-type": "application/json" },
    body: JSON.stringify({
      secret_key: process.env.CAPTCHA_CC_SECRET_KEY,
      proof_token: req.body.proofToken
    })
  });

  const verify = await verifyResponse.json();
  if (!verify.success) {
    return res.status(400).json({ error: "captcha verification failed", verify });
  }

  if (verify.metadata?.solve_mode === "shared_clearance" && req.path === "/login") {
    return res.status(400).json({ error: "fresh interactive solve required" });
  }

  return res.json({ ok: true });
});