API Documentation — Claude Watermark Remover
Complete reference for the Claude Watermark Remover API. It is free and open — no API key. Send an HTTPS POST, receive JSON.
Authentication
None. There is no API key and no Authorization header. Just POST your request. Fair-use rate limiting may apply per IP to keep the service available.
Base URL
All endpoints are served over HTTPS from a single base URL. Request and response bodies are JSON (UTF-8). Send Content-Type: application/json for text endpoints; for image stripping, send the raw image bytes with the image content type.
https:"syn-comment">//api.claudewatermark.org
Limits
Text endpoints accept up to 200KB (20KB for rewrite). Images up to 12MB, JPEG and PNG. If you exceed a fair-use rate limit the API returns HTTP 429 with a Retry-After header.
Endpoint Reference
Four endpoints, all POST. Each returns structured JSON. Every response includes an honest disclaimer field where relevant.
/v1/text/scanDetect hidden zero-width and invisible characters in text. Returns each character’s name, code point, and count.
/v1/text/cleanStrip hidden characters and normalize to Unicode NFC. Returns the cleaned text and a removal breakdown.
/v1/text/rewriteParaphrase text with a different model to reduce statistical watermark signal. Changes word choice; does not guarantee removal.
/v1/image/stripRemove EXIF, XMP, IPTC, and C2PA metadata from JPEG & PNG. Returns the cleaned image as base64 plus a list of what was removed.
Error Handling
The API uses standard HTTP status codes. Successful requests return 200. Client errors return 4xx codes with a JSON body containing an error object with code, message, and optional details fields. Server errors return 5xx codes. All SDK clients automatically parse error responses and raise typed exceptions for easy handling in your application code.
{
"syn-string">"error": {
"syn-string">"code": "syn-string">"rate_limit_exceeded",
"syn-string">"message": "syn-string">"You have exceeded the fair-use rate limit. Please retry shortly.",
"syn-string">"details": {
"syn-string">"retry_after": 12,
"syn-string">"limit": 10,
"syn-string">"remaining": 0,
"syn-string">"reset_at": "syn-string">"2026-08-13T12:01:00Z"
}
}
}
API Versioning
The API is versioned via the URL path (currently /v1). Breaking changes will only be introduced in new major versions. Minor additions (new optional fields, new endpoints) may be added to the current version without a version bump. We recommend pinning your SDK version and reviewing changelogs before upgrading to ensure compatibility with your integration.