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
httpOnlyrefresh 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-serveron 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 endpoint —
GET /api/v2/credits/balancereturns 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:
payload→secret;original_text→text. - Encode response changed:
watermarked_text→encoded. - 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.