---
title: Changelog
---

# 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.
