AI Watermark Remover API

Quickstart

cURL
curl --location 'https://keywordresearch.api.kwrds.ai/ai/watermark-remove' \
--header 'X-API-KEY: YOUR_API_KEY_GOES_HERE' \
--header 'Content-Type: application/json' \
--data '{
"text": "Keyword research is not just about finding terms — it is about understanding intent. Moreover, modern SEO requires a robust approach that leverages both data and intuition.",
"source_model": "claude"
}'

To increase your API limits, please choose your plan right from our pricing page.

Introduction

The Watermark Remover API rewrites AI-generated text through a model different from the one that produced it, so the output carries none of the original model's generation fingerprint.

Pass the model that wrote your text as source_model and the API automatically routes the rewrite to a different provider.

Endpoint

POST /ai/watermark-remove

Example Request

Here's an example of how to use the Watermark Remover API with cURL:

cURL
curl --location 'https://keywordresearch.api.kwrds.ai/ai/watermark-remove' \
--header 'X-API-KEY: YOUR_API_KEY_GOES_HERE' \
--header 'Content-Type: application/json' \
--data '{
"text": "Keyword research is not just about finding terms — it is about understanding intent. Moreover, modern SEO requires a robust approach that leverages both data and intuition.",
"source_model": "claude"
}'

Request Body

  • text: (Required) The content to rewrite. Up to 20,000 characters.

  • source_model: (Optional) The model that generated your text. Used to route the rewrite to a different provider. Default is unknown. Matching is case-insensitive and works on partial names, so a full model id such as claude-3-opus-20240229 or gpt-4o-mini is accepted. Recognized values:

    • Anthropic: claude, anthropic
    • OpenAI: gpt, openai, chatgpt, o1, o3
    • Google: gemini, bard, google
    • Meta: llama, meta
    • Mistral: mistral, mixtral
    • DeepSeek: deepseek
    • xAI: grok, xai
    • Cohere: command, cohere
    • Alibaba: qwen

    If the value is not recognized it is treated as unknown, the rewrite still runs against an independent model, and the response includes a notes entry saying so.

Headers

  • X-API-KEY: (Required) Your API key for authentication.
  • Content-Type: (Required) The content type of the request, which should be application/json.

Example Response

cURL
{
"output": "Finding terms is the easy part. What you actually want to know is intent, meaning what the person hoped to find when they typed the phrase. Good SEO runs on both data and judgement."
}

Response Structure

  • output: The rewritten text.
  • notes: (Only when applicable) An array of strings flagging anything worth knowing about the routing, such as an unrecognized source_model. Absent on a clean rewrite.

Response Codes

  • 200: Success. The rewritten text is in the output field.
  • 400: Invalid input. The text is empty or exceeds 20,000 characters.
  • 403: Your plan does not include this endpoint.
  • 429: Monthly quota reached.
  • 502: The rewrite failed. Retry the request.