Changelog

Stay up-to-date with the latest changes, improvements, and new features for the TextWatermark API.

Version 2.0.0 — 2026-03-31

Full platform rewrite. New authentication system, billing integration, signing channels, credits, and a published MCP server.

Added

  • Custom JWT authentication — stateless access tokens (2h TTL) with httpOnly refresh cookies (30d TTL). No third-party auth dependency.
  • API tokens (64-char hex, prefixed mcp_ internally) for server-to-server watermark operations. Scoped per token, revocable at any time.
  • Signing channels — named key-pair objects that cryptographically bind a watermark to your account. Enables tamper detection and origin verification.
  • Credit system — each encode/decode consumes credits. Subscription plans include a monthly allocation; top-up packs available. Balance never expires while account is active.
  • Subscription billing via LemonSqueezy — monthly and annual plans. Webhooks maintain subscription state in real time (active, past_due, paused, cancelled).
  • Robust mode for watermark encoding — adds redundant encoding that survives moderate text editing, copy-paste, and format conversion.
  • MCP server (@textwatermarking/mcp-server on npm) — use TextWatermark directly from Claude, Cursor, or any MCP-compatible AI tool without writing code.
  • Email verification flow — accounts require email verification before watermark operations are allowed.
  • Credit balance endpointGET /api/v2/credits/balance returns current balance and subscription tier.
  • Fast encoding option — reduced latency encode path for latency-sensitive workloads.

Changed

  • Base URL consolidated to https://textwatermarking.com — no separate API subdomain.
  • Account management endpoints now use /api/v2/ prefix. Watermarking remains at /api/watermark/.
  • Auth endpoints moved to /api/auth/ (register, login, verify, refresh, logout, password reset).
  • Encode request body changed: payloadsecret; original_texttext.
  • Encode response changed: watermarked_textencoded.
  • Watermark API authentication changed to Authorization: Bearer <api-token>. JWT is no longer accepted on watermark endpoints.
  • Rust/WASM watermarking core updated to rustc 1.86, wasm-pack 0.13.
  • Node.js runtime upgraded to v24.

Removed

  • Supabase authentication — replaced with custom JWT.
  • Polar.sh billing — replaced with LemonSqueezy.
  • Webhook management public endpoints — LemonSqueezy webhooks are handled server-side only.
  • /api/v1/ prefix — all endpoints are now /api/v2/ or unversioned.

Version 1.x — 2024

Original release. Supabase authentication, Polar.sh billing, /api/v1/ endpoints. Superseded by v2.0.0.