Documentation

API reference

Three POST endpoints. The widget calls the first two automatically; you only need the third (/siteverify) directly.

Base URL

https://challenges.trustedcaptcha.com/api/v1

POST /siteverify

Server-to-server. Validate a token submitted by your user's form.

Parameters

FieldRequiredDescription
secretyesYour site's secret key. Never share, never embed in client code.
responseyesThe token from the form's trustedcaptcha-response field.
remoteiprecommendedThe end user's IP address. Used for risk-engine cross-check.

Successful response

{
  "success":      true,
  "score":        0.92,
  "mode":         "smart",
  "hostname":     "example.com",
  "challenge_ts": "2026-05-11T09:00:00+00:00",
  "action":       null,
  "error_codes":  []
}

Error response

{
  "success":     false,
  "error_codes": ["invalid-input-response"]
}

Error codes

CodeHTTPCause
missing-input-secret200secret field empty.
invalid-input-secret200Secret doesn't match any site.
missing-input-response200response field empty.
invalid-input-response200Token doesn't exist, or wrong site.
timeout-or-duplicate200Token expired or already verified.
rate-limited200Too many verify calls for this secret. Back off.

POST /challenge & /answer

These are called by the widget directly. You generally don't need them. They're documented in widget reference and used by SDK authors who want to build a non-iframe widget.

Rate limits

EndpointLimitScope
/challenge60/minper IP
/answer60/minper IP
/siteverify600/minper secret
Per sitekey5000/minall /challenge for one sitekey

Pro plans have higher quotas. Contact us if you need volume above 10 M verifications/month.