provider field in your config.json, then fill in the matching configuration block. If you configure more than one provider at the same time, visitors will see a “switch provider” link on the challenge page — letting them move to a different provider if the first one isn’t working for them.
Available providers
cap— a self-hosted CAPTCHA server; you run it on your own infrastructure.turnstile— Cloudflare Turnstile; requires a Cloudflare account.hcaptcha— hCaptcha; requires an hCaptcha account.
Choosing your provider
Set theprovider field to the name of the provider you want to use by default. Then fill in the configuration block that matches that provider name. The sections below show the exact fields for each option.
- Cap
- Turnstile
- hCaptcha
Cap is a self-hosted CAPTCHA server. You install and run it yourself, so
challenge traffic goes through your own infrastructure.
string
required
The public URL of your Cap instance. The visitor’s browser loads the
widget script and submits the challenge from this address, so it must be
reachable from the internet.
string
The URL verifyngo uses internally to verify a submitted token. Because
this call happens server-side, you can point it at a local or internal
address (e.g.
"http://127.0.0.1:3000") to avoid an extra round-trip
through the internet. If left empty, verifyngo falls back to api_url.string
required
The site key for your Cap instance. You’ll find this in your Cap server’s
admin panel.
string
required
The secret key for your Cap instance. Keep this value private — it is used
to verify tokens server-side.
string
An optional URL to load the Cap widget script from. Leave it empty to use
the default Cap CDN (
https://cdn.jsdelivr.net/npm/@cap.js/widget). Set
this if you self-host the widget script alongside your Cap server.Configuring multiple providers
You can fill in more than one provider block in the sameconfig.json. The provider field controls which one is shown first — the others act as alternatives. When verifyngo detects that more than one provider is fully configured, it displays a “switch provider” link on the challenge page. Visitors can click it to switch to a different provider if the current one is unavailable or blocked for them.