--- title: Changelog description: Release notes for the CaptchaLa platform, SDKs, and plugins. --- # Changelog Notable changes to the CaptchaLa API and SDKs. Dates are UTC. ## API ### 2026-06-20 - **`/v1/validate` response** now returns a `captcha_args` object — solve-time context echoed back for logging / your own risk scoring (never required for pass/fail): - `platform` — `web` / `android` / `ios` / `flutter` / `windows` / … - `user_ip` — end-user IP recorded at solve time - `referer` — solve page URL (web); `null` on native - `pkg` — app package / bundle id (native); `null` on web - `solved_at` — solve completion time (unix seconds) - `risk_score` — solve-time risk score (0-100, higher = riskier) - **`client_ip`** on `/v1/validate` is **optional but recommended** — the end-user's IP from your inbound request, used for additional risk checks. Safe to omit. (Exact solve-vs-submit IP matching was dropped because it rejected legitimate users on CDN + dual-stack IPv4/IPv6 networks.) - Fully backward compatible — existing integrations keep working unchanged. ## PHP SDK (`captchala/captchala-php`) ### 1.2.3 — 2026-06-20 - Added `ValidateResult::getUserIp()` and `ValidateResult::getCaptchaArgs()`. - `validate()`'s `$clientIp` is now optional but recommended (used for risk checks). Backward compatible. ## Go SDK (`github.com/Captcha-La/captchala-go`) ### 1.2.2 — 2026-06-20 - Added `ValidateResult.CaptchaArgs` (`CaptchaArgs` struct: `Platform`, `UserIP`, `Referer`, `Pkg`, `SolvedAt`, `RiskScore`). - `ValidateWithClientIP`'s IP argument is now optional but recommended. Backward compatible.