AI NEWS
Text Processing
8 min reading

AI Text Watermarking: Which LLM APIs Mark Their Output

Summarize this article with:

summary

OpenAI, Anthropic, xAI and Google now watermark AI-generated text, each in its own way. This guide explains which LLM APIs mark their output, why the same model can come back marked or unmarked depending on who serves it, and how to watermark models that don't do it themselves.

Three major LLM providers changed how they mark generated text within five weeks. On October 5, 2026, OpenAI let API customers worldwide opt in to its textGrain watermark. On November 3, Anthropic extended Claude's text watermark to four older models. On November 7, xAI turns watermarking on by default for seven Grok models. Google, meanwhile, has confirmed that text from the Gemini API already carries a SynthID watermark.

The trigger is the EU AI Act. Its machine-readable marking rule has applied since August 2, and generative AI systems that were already on the market before that date have until December 2 to comply.

For developers, the less obvious consequence is this: the model name no longer tells you whether a response is watermarked. The model version, the provider serving it, account settings and generation settings all play a part. When several providers can answer the same request, as they can behind an AI gateway, two calls to the same model can come back with different provenance.

This guide explains how text watermarks work, which LLM APIs mark their output today, why routing changes the picture, and how to watermark models that don't do it themselves.

Text watermarking in autumn 2026
Provider changes and EU AI Act dates
  1. Aug 2
    Article 50 appliesMarking duty for new generative AI systems
  2. Oct 5
    OpenAIOpt-in text watermarking for select API models
  3. Nov 3
    AnthropicWatermark extended to four older Claude models
  4. Nov 7
    xAIOn by default for seven Grok models
  5. Dec 2
    AI Act deadlineSystems on the market before August 2 must comply

What is an AI text watermark?

An AI text watermark is a statistical signal hidden in the word choices of generated text. It isn't a visible label or a metadata field, and it adds no hidden characters: the text reads exactly as it would without it.

At each step, a language model usually has several plausible next tokens. A watermarking algorithm uses a secret key to steer which of those good options gets picked. Over a few hundred tokens, these choices form a pattern that a detector holding the same key can test for. Without the key, the pattern is indistinguishable from ordinary variation.

How an AI text watermark is created and checked
A simplified view of statistical token watermarking
Step 01 · Generation
The model weighs several plausible next tokens
“The ___ will change next week.”
weather climate forecast conditions
↓
Step 02 · Watermarking
A secret key steers which good option is picked
weather climate forecast conditions

Repeated over hundreds of tokens, these keyed choices form a statistical pattern.

↓
Step 03 · Output
Normal-looking text that carries a hidden signal

No visible label and no extra characters: the signal lives in the word choices.

↓
Step 04 · Verification
A detector holding the same key tests the text
Signal detected The text likely passed through that model or system
No signal detected Not proof that a human wrote it

The implementations differ in their details. OpenAI's textGrain combines keyed randomness with what it calls entropy-calibrated sampling. Google DeepMind's SynthID-Text adjusts token probabilities with a pseudorandom function, and Anthropic uses a version of it for Claude. The native option in vLLM uses Gumbel-max sampling. The principle is the same in all of them.

Two practical consequences follow. First, only someone holding the key can run detection, so checking a watermark usually means going through the provider or an approved access program. Second, the signal grows with length and with how much freedom the model has in its word choices. OpenAI reports detecting textGrain in about 80% of 200-token passages and 95% of 400-token passages on psychology questions, at a 1% false-positive target, with substantially lower rates for mathematics.

What a watermark can and can't prove

A detected watermark is evidence that the text was generated or processed by a particular model at some point. It says nothing about who sent the request, who owns the content, whether it's accurate, or how much a person edited it afterwards.

The absence of a watermark proves even less. The text may come from an unsupported model, from an account where watermarking was off, or from a passage too short or too heavily edited to carry the signal. In a separate OpenAI robustness test on 400-token passages, replacing 10% of the words with synonyms dropped detection from about 92% to 66%, and replacing 25% dropped it to 17%.

A watermark is a provenance signal, not a verdict on authorship.

Who has to mark AI-generated text?

Under Article 50(2) of the EU AI Act, providers of generative AI systems must mark their output in a machine-readable, detectable format. The duty sits with the provider of the AI system, meaning the company that ships the product. It doesn't stop with the company that trained the model.

The Commission's guidelines on Article 50 let that company rely on marking applied by its model provider. It still answers for the result, though, so it must be able to show that the marking is actually applied to its outputs and can be detected. That's why knowing which provider served each request matters, as the rest of this guide shows.

There are exceptions, including systems that only assist with standard editing or don't substantially alter the input. This is the "exception under the law" that xAI asks administrators to confirm before opting out.

The rule has applied since August 2, 2026. Systems already on the market before that date have until December 2, 2026. Visible labels, which are a separate obligation on deployers, are covered in our guide to EU AI Act labelling rules, and the full calendar is in AI Act: 30 Days Before the Next Deadline.

This guide covers the technical side. Whether and how Article 50 applies to a specific product is a question for your legal team.

Which LLM providers watermark their text?

Four major providers have now announced text watermarking, each with different defaults, controls and detector access. The comparison below reflects public documentation as of November 4, 2026, and covers text only, not images, audio or video.

Provider Text watermark Default and controls Detection
OpenAI API Opt-in
textGrain on select API models
Off by default. Enabled per project or organization. Approved researchers and expert organizations
Anthropic On
Supported Claude models; older models added in stages
On, with no opt-out. Cloud coverage listed per model. Private preview for approved organizations
xAI (SpaceXSI) On from Nov 7
Seven Grok models
On. Team admins can opt out per model after confirming a legal exception. Access on request
Google Gemini API On
SynthID-Text, confirmed by Google staff
No setting documented. Vertex AI not confirmed. No public text detector
Mistral, Meta and others Not documented
No public statement found
Ask the provider Not documented
Self-hosted open-weight You decide
Added at inference, e.g. with vLLM
Off unless you configure it Your own detector and key

Snapshot as of November 4, 2026. “Not documented” means no public statement was found, not that the output is proven unmarked. Coverage changes often, so check the provider’s current documentation before relying on it.

OpenAI: off by default for API customers

OpenAI announced its approach to EU text provenance on October 5. API customers anywhere can turn on textGrain for select models, at project or organization level, but it stays off until they do.

ChatGPT and Codex are a separate case. OpenAI is watermarking eligible text from both in the EU by default, rolling out over several weeks. That consumer default doesn't carry over to API requests, so a team calling the API with standard settings gets unmarked text. Detector access is limited to approved researchers and expert organizations.

Anthropic: on by default, rolled out model by model

Claude's text watermark is on with no opt-out, and Anthropic adds it model by model. Newer models such as Opus 5.5 carried it from launch. On November 4, Anthropic began watermarking text from four older models on its own API: Mythos 5, Opus 4.7, Opus 4.6 and Sonnet 4.6. Its customer email, reported by Mashable, says the Amazon Bedrock rollout may take a few more days. Opus 4.5, Sonnet 4.5 and Haiku 4.5 weren't on that list.

Anthropic's help center page "How Claude marks AI-generated content" lists coverage per model and per surface: Anthropic's own API and apps, AWS, Google Cloud and Microsoft Foundry. It also lists Content Credentials for generated files, which is a separate signal from the text watermark. Detection is in private preview for approved organizations.

xAI: on by default for seven Grok models

According to xAI's output watermarking documentation, text from Grok 4.7, 4.6, 4.5 and 4.3, plus the three Grok 4.20 variants (reasoning, non-reasoning and multi-agent), carries a watermark from November 7, 2026. It applies on xAI's global and regional endpoints and covers plain text, structured outputs and tool call arguments.

Team administrators can opt out per model in the SpaceXSI Console, but only after confirming that a legal exception applies and that their team takes responsibility for marking. Some models may be locked on.

Two details stand out. Each marked response carries an x-watermark: true header, which gives per-request proof when you call xAI directly. And older models such as Grok 4.1 Fast, Grok 4, Grok 3 and Grok Code Fast aren't on the list, so their output stays unmarked even on xAI's own API.

Google: SynthID in Gemini API text

Google has watermarked text in the Gemini app with SynthID since 2024. For the API, the clearest statement comes from Google's developer forum. A staff member first said Gemini API text wasn't watermarked, then corrected it two weeks later: text from the Gemini API and Google AI Studio is SynthID-watermarked.

Two questions remain open. The thread doesn't say whether Gemini on Vertex AI behaves the same way, and Google offers no public detector for text. A forum reply is also a thinner basis than product documentation, so teams relying on it for compliance should get written confirmation.

Mistral, Meta and other hosted models

We found no documented text watermark for Mistral, Meta or most other hosted providers as of November 4. Treat that as a gap to close with the provider, not as proof that the output is unmarked.

Same model, different provider: why the route matters

Most popular models are sold by several providers: the model maker's own API, cloud platforms such as Amazon Bedrock and Google Vertex AI, and independent inference providers. A watermark announced by the model maker doesn't automatically apply on every one of them.

Claude Opus 4.7 shows this well. As of November 4, its text is watermarked on Anthropic's API, while the Bedrock rollout is still a few days away and other platforms haven't been listed yet. Two requests for the same model on the same day can return text with different provenance.

One model: Claude Opus 4.7

Text watermark status by provider route, as of November 4, 2026

Anthropic API Watermarked
Amazon Bedrock Rolling out
Google Vertex AI Not yet listed
Databricks Not documented
DeepInfra Not documented
Documented as watermarked Announced, not live yet No public statement found

The same model name can return differently marked text depending on which provider serves the request. Check each route you use, not only the model.

Four things decide whether a given response carries a watermark.

1. The model version. Watermarking usually arrives with new releases and reaches older ones later, if at all. Grok 4.7 is covered while Grok 4 isn't.

2. The provider serving the request. xAI's documentation covers xAI's own endpoints, yet Grok 4.7 is also sold through Amazon Bedrock and Databricks. Anthropic lists cloud coverage model by model. A route that the model maker doesn't mention is a route you need to verify.

3. The account settings. OpenAI's API watermark is switched on per project or organization, and xAI's is managed per team. When a reseller or gateway calls the provider with its own keys, its account settings apply. With your own keys, yours do.

4. The generation settings. In self-hosted setups, some requests can't carry a watermark at all, such as deterministic decoding in vLLM (covered below). Hosted providers haven't published similar limits, so don't assume either way.

Data residency adds a further check. Routes chosen to keep processing in Europe are often cloud platforms rather than the model maker's own API. Residency and watermark coverage are two separate questions, and both need an answer for the route you actually use.

How to watermark models that don't do it themselves

If you serve an open-weight model yourself, nobody marks its output unless you do. The good news is that this no longer means building a watermark from scratch. There are two practical options: native watermarking in vLLM, and Google's SynthID-Text through Hugging Face Transformers.

Native watermarking in vLLM

vLLM added native text watermarking in September 2026. It's off by default and switched on when the server starts:

vllm serve YOUR_MODEL \
  --watermark-config '{"algorithm":"gumbel","key":42,"enforce":true}'

The key 42 comes from vLLM's documentation and is only a placeholder. In production, use a secret key and store it like any other credential.

The vLLM watermarking documentation is worth reading in full. These points matter most:

  • Request opt-outs: clients can send watermarking: false to skip the watermark. Setting enforce overrides those opt-outs.
  • Requests that can't be marked: greedy decoding (temperature=0), top_k=1 and beam search run without a watermark, even with enforce on. vLLM logs a warning the first time it happens.
  • Weaker signal: structured outputs and tool grammars constrain word choices, which leaves less room for the signal.
  • Engine requirement: watermarking currently works only with vLLM's Model Runner V2.
  • Coverage monitoring: a Prometheus counter, vllm:watermark_requests_total, splits finished requests into watermarked, skipped and not_watermarked. That gives you a measurable record of coverage.

Detection is a separate step. The detector works on token IDs and needs the same tokenizer, algorithm and key used for generation:

from transformers import AutoTokenizer
from vllm.v1.watermarking import GumbelWatermarkDetector

tokenizer = AutoTokenizer.from_pretrained("YOUR_MODEL")
token_ids = tokenizer.encode(text, add_special_tokens=False)

result = GumbelWatermarkDetector(key=YOUR_SECRET_KEY, prf="philox").detect(token_ids)
print(result.p_value, result.is_watermarked)

Before relying on is_watermarked, vLLM recommends measuring the false-positive rate on your own unwatermarked traffic. Also keep the detector internal or rate-limited, because repeated queries to it can help someone learn how to remove or imitate the signal. SynthID-Text support in vLLM is planned but not implemented yet.

SynthID-Text with Hugging Face Transformers

Google has open-sourced SynthID-Text, and Hugging Face Transformers ships it as a logits processor. You configure it with secret keys and an n-gram length, which trades detectability against robustness to edits, and it works with any compatible model without retraining. Detection again requires the same keys.

Transformers suits batch jobs and smaller deployments. For high-throughput serving, vLLM's native option is the more practical choice today. If you already serve a model such as Aleph Alpha's Kolibri with vLLM, adding a watermark is a configuration change rather than a new system.

What running your own watermark involves

Self-hosting gives you control, and with it the responsibilities a provider would otherwise carry:

  • Keys: keep them secret, rotate them, and record which configuration served which period. The detector has to test text against every configuration you've used.
  • Detection: decide who can check text and how, since the marking also has to be detectable.
  • Testing: check detection on realistic outputs, covering different lengths, languages and editing.
  • Documentation: record the gaps, such as greedy requests and short answers, so nobody treats a missing watermark as proof of human authorship.

Keeping control of the route with Eden AI

Eden AI gives access to models from many providers through one OpenAI-compatible API. When you name a model without a provider, provider routing picks who serves it: by default it favors cheaper providers, and it fails over to another provider if one is down. That's useful for cost and uptime. For features that depend on a watermark, it means the route has to be set explicitly.

In the Eden AI catalog, for example, Claude Opus 4.7 is available from Anthropic, Amazon Bedrock, Google Vertex AI, Databricks and DeepInfra. Grok 4.7 is available from xAI, Amazon Bedrock and Databricks. As the previous section showed, those routes don't share the same documented watermark coverage.

Your application

Requests a model for a feature that needs a watermark

↓
Eden AI routing layer

Decides which provider serves the request and what happens if it fails

↓
01 · Pin the provider

Name a provider/model so routing never picks another route.

02 · Restrict providers

Use allowed_providers to limit routing to routes you have checked.

03 · Control fallbacks

List only verified fallbacks, or turn provider failover off.

04 · Record the route

Log the provider that actually served each request.

↓
Response + a record of the route that produced it

The watermark itself is applied and verified by the upstream provider.

Pin the provider. Naming a concrete provider/model, such as anthropic/claude-opus-4-7, turns routing off for that request. It goes exactly where you sent it.

Restrict the providers. When you want to keep routing for a bare model name, routing.allowed_providers limits it to providers you've checked. Every other provider is excluded, including from failover, and the request fails with a clear error rather than going elsewhere.

Control the fallbacks. routing.allow_fallbacks: false stops failover to other providers of the same model. Models you list in fallbacks are always tried, so list only routes you've verified. You can save the whole setup as a routing policy and apply it to every call made with an API key.

Record the route. Send the x-edenai-metadata: enabled header and the response includes an edenai_metadata block. As described in the request metadata documentation, it shows every provider tried, the one that served the request, its region and whether your own key was used. Store it with the generated content.

Here is all of it in one request:

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.edenai.run/v3",
    api_key=os.environ["EDENAI_API_KEY"],
)

response = client.chat.completions.create(
    # Pinned: always served by Anthropic's own API
    model="anthropic/claude-opus-4-7",
    messages=[{"role": "user", "content": "Summarize the following technical report."}],
    extra_headers={"x-edenai-metadata": "enabled"},
    extra_body={
        # If Opus 4.7 fails, fall back to Sonnet 4.6, also pinned to Anthropic
        "fallbacks": ["anthropic/claude-sonnet-4-6"],
    },
)

# Store this record next to the generated text
meta = response.model_dump().get("edenai_metadata") or {}
print(meta.get("strategy"), meta.get("summary"))
for attempt in meta.get("attempts", []):
    print(attempt["provider"], attempt["model"], attempt["status"], attempt.get("region"))

A few things are worth knowing about how this works today:

  • Eden AI doesn't add, remove or verify watermarks. The text arrives as the provider generated it.
  • Account settings depend on whose keys are used. Through Eden AI's own provider accounts, each provider's default watermark settings apply. With BYOK, your own provider account settings apply, so you can opt in to OpenAI's watermark yourself. BYOK providers can be mixed with Eden AI-billed providers in routing, so pin or restrict the provider if a request must stay on your account. The is_byok field confirms which key was used.
  • EU routes differ from direct ones. The EU endpoint routes only through providers cleared for European processing. For Claude, that means the EU regions of Bedrock, Vertex AI or Databricks rather than Anthropic's own API, so check Anthropic's coverage table for those routes.

Watermark detection versus AI-text detection

The two are often confused, but they answer different questions.

A watermark detector asks whether a text carries the signal from a specific provider's key. On long, unedited passages it's reliable, but it only recognizes that provider's supported models.

An AI-text detector asks whether a text reads like AI writing. It works on any text from any model, but its answer is a probability estimate based on writing patterns, not verification of a signal.

Eden AI's AI detection API belongs to the second group, so it can't confirm a textGrain, Claude, SynthID or Grok watermark. The two work well together: the watermark as a provenance signal where one exists, AI detection as a screening signal everywhere else. Neither proves who wrote a text.

A checklist before December 2

  1. List your text features. Note every feature that generates text for users, and whether it launched before or after August 2.
  2. Map the exact route. For each feature, record the model version, the provider, the region and every fallback.
  3. Check coverage per route. Confirm in the provider's documentation that this model on this route is watermarked, and note the date you checked.
  4. Check account settings. Find out whether watermarking is on, opt-in or managed per project or team, and whose account the request runs on.
  5. Lock the route. Pin or restrict providers for features that need a watermark, and keep only verified fallbacks.
  6. Record the route. Store the provider that served each request alongside the content.
  7. Cover the gaps. For self-hosted models or unmarked routes, add your own watermark and a way to detect it.
  8. Test and document. Check detection on realistic outputs, write down the limits, and review the setup with your legal team.

Conclusion

Text watermarking moved from research into production within a few weeks, but unevenly. OpenAI's API watermark is opt-in, Anthropic's and xAI's are on by default, Google has confirmed one for the Gemini API, and most other providers haven't documented anything yet. Teams that serve open-weight models can now add their own with vLLM or SynthID-Text.

The practical lesson is that a watermark belongs to a route, not to a model name. Applications that use several providers, directly or through a gateway, need to make their provenance requirements explicit. In practice, that means pinning or restricting providers, keeping fallbacks verified, and recording which provider served each request.

Knowing which model wrote a text is no longer enough. You need to know which route served it, how it was configured, and who can verify the result.

FAQ

An AI text watermark is a statistical signal hidden in the word choices of generated text. A secret key steers which of several plausible tokens the model picks, and a detector holding the same key can later test a passage for that pattern. The text reads normally and contains no visible label or extra characters.
Yes, from November 7, 2026, for seven models: Grok 4.7, 4.6, 4.5, 4.3 and the three Grok 4.20 variants. Watermarking is on by default, and team administrators can opt out per model after confirming that a legal exception applies. Marked responses from xAI's API carry an x-watermark: true header. Older Grok models are not covered.
Not by default. Since October 5, 2026, API customers worldwide can opt in to OpenAI's textGrain watermark for select models, at project or organization level. ChatGPT and Codex text in the EU is watermarked by default, but that doesn't apply to API requests.
No. Anthropic applies its text watermark to supported Claude models with no opt-out. On November 4, 2026, it extended the watermark to Claude Mythos 5, Opus 4.7, Opus 4.6 and Sonnet 4.6 on its own API, with Amazon Bedrock expected to follow within a few days. Coverage on other cloud platforms is listed model by model in Anthropic's help center.
According to Google staff on its developer forum in August 2026, text generated through the Gemini API and Google AI Studio carries a SynthID watermark. Google hasn't confirmed the same for Gemini on Vertex AI, and it offers no public detector for text.
No. Coverage depends on the model version, the provider serving it, account settings and generation settings. As of November 4, 2026, for example, Claude Opus 4.7 is watermarked on Anthropic's API while its rollout on Amazon Bedrock is still pending and other platforms haven't been listed.
Yes. vLLM supports native text watermarking, enabled with the --watermark-config option when the server starts, and Google's SynthID-Text is available in Hugging Face Transformers. Either way, you manage the secret key and run detection yourself, and some requests, such as greedy decoding in vLLM, can't carry the watermark.
No. The text may come from a model without a watermark, from an account where it was turned off, or from a passage too short or too edited to carry the signal. In OpenAI's tests, replacing a quarter of the words in a 400-token passage cut detection from about 92% to 17%.
Watermark detection tests text for the signal from a specific provider's key, so it only recognizes that provider's supported models. AI detection estimates whether any text reads like AI writing based on patterns. The first verifies a provenance signal, the second gives a probability, and neither proves who wrote a text.
No. Eden AI doesn't add, remove or verify watermarks: text arrives as the upstream provider generated it. You can pin or restrict providers so requests stay on watermarked routes, and request metadata records which provider served each response.

Further reading

Original research

Provider documentation

Regulation

On the Eden AI blog and docs

Similar articles

AI NEWS
Generative AI
Kimi K3.1 Pro: Benchmarks, Pricing & Real Task Costs
10/27/2026
·
Written byClément Moreau
Gradium x Eden AI: real-time voice AI
AI NEWS
Speech
Gradium on Eden AI: Real-Time Voice AI Models Built in France
10/19/2026
·
Written byClément Moreau
let’s start

Start building with Eden AI

A single interface to integrate the best AI technologies into your products.