Crovly

Crovly Documentation

Learn how to integrate Crovly's privacy-first Proof of Work captcha. Guides for HTML, React, Vue, Node.js, PHP, Python, WordPress, and more.

How It Works

Crovly is a privacy-first captcha that uses Proof of Work instead of image challenges. When a user visits your page, their browser solves a small computational puzzle. Bots struggle because it requires real CPU time, while legitimate users barely notice a ~200ms delay.

  1. Challenge — Browser receives a cryptographic puzzle from the API
  2. Solve — Browser computes SHA-256 hashes + collects fingerprint signals
  3. Verify — Your backend validates the token with a single API call

Quick Start

1. Create a Site

Sign up at app.crovly.com and create a new site. You'll receive a Site Key (public) and an API Key (private).

2. Add the Widget

<script src="https://get.crovly.com/widget.js"
        data-site-key="YOUR_SITE_KEY"></script>

<form action="/submit" method="POST">
  <div id="crovly-captcha"></div>
  <button type="submit">Submit</button>
</form>

3. Verify on Your Server

const res = await fetch("https://api.crovly.com/verify-token", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    token: formData.get("crovly-token"),
    expectedIp: request.ip,
  }),
});

const { success, score } = await res.json();
if (!success) {
  // reject the request
}

Testing

Use these test site keys during development — no API calls are made:

KeyBehavior
test_always_passAlways succeeds after 500ms
test_always_failAlways fails after 500ms
<script src="https://get.crovly.com/widget.js"
        data-site-key="test_always_pass"></script>

<form action="/submit" method="POST">
  <div id="crovly-captcha"></div>
  <button type="submit">Submit</button>
</form>

Test keys work in any environment and do not require a Crovly account. The widget renders normally but skips the real challenge/verify flow. Use test_always_fail to test your error handling paths.

Next Steps

SDKs

LanguagePackageInstall
React@crovly/reactnpm install @crovly/react
Vue 3@crovly/vuenpm install @crovly/vue
Node.js@crovly/nodenpm install @crovly/node
PHPcrovly/crovly-phpcomposer require crovly/crovly-php
Pythoncrovlypip install crovly
React Native@crovly/react-nativenpm install @crovly/react-native
Fluttercrovly_flutterflutter pub add crovly_flutter
Androidcrovly-androidGradle / Maven
iOSCrovlyCaptchaSPM / CocoaPods
WordPressPluginDownload
XenForoAddonDownload
Desktop AppsGuideWebView integration

On this page