# Grok API text watermarking is now 'off' by default

> Source: <https://docs.x.ai/developers/advanced-api-usage/watermarking>
> Published: 2026-11-11 12:11:01+00:00

#### [Advanced API Usage](#advanced-api-usage)

# [Output Watermarking](#output-watermarking)

Watermarking embeds an invisible signal in text and audio generated by Grok models, so the output can later be identified as AI-generated. Watermarking can help enable compliance with the EU AI Act.

Text watermarking is off by default. Team admins can turn it on per model in the SpaceXSI Console's team settings; see [How to enable text watermarking](#how-to-enable-text-watermarking). Audio from the voice APIs is watermarked in some regions and when you ask for it; see [Audio watermarking](#audio-watermarking).

## [Which outputs are watermarked](#which-outputs-are-watermarked)

Watermarking applies to text output from text generation requests, for each model that has watermarking turned on for your team.

Responses from these models can include a watermark. It's off by default, and you can [turn it on per model](#how-to-enable-text-watermarking).

- grok-4.7
- grok-4.6
- grok-4.5
- grok-4.3
- grok-4.20-reasoning
- grok-4.20-non-reasoning
- grok-4.20-multi-agent

Watermarking applies to outputs from every text generation API, including the Responses API and the Chat Completions API. It covers the generated text you receive in the response: ordinary text responses, [structured outputs](https://docs.x.ai/developers/model-capabilities/text/structured-outputs), and [tool call](https://docs.x.ai/developers/tools/function-calling) arguments.

After watermarking is enabled for a model, it is automatically applied to all requests, with no further code changes required.

### [Checking whether a response was watermarked](#checking-whether-a-response-was-watermarked)

To check whether a response was watermarked, read the `x-watermark` header on the Responses API or Chat Completions API response. `x-watermark: true` means the output for that request was generated with the watermark. Any other value, or no header at all, means it was not.

``` js
import { xai } from '@ai-sdk/xai';
import { generateText } from 'ai';

const { text, response } = await generateText({
  model: xai.responses('grok-4.7'),
  prompt: 'Write a haiku about the ocean.',
});

console.log(response.headers?.['x-watermark']);
console.log(text);
```

## [How it works](#how-it-works)

The watermark is not visible. It is applied while the model generates text: it slightly shapes which tokens the model picks, so it adds no characters, markup, or hidden text to the response.

Our implementation uses SynthID Text, the text watermarking technique published by Google DeepMind in a [Nature paper](https://doi.org/10.1038/s41586-024-08025-4) in 2024.

Detection is statistical. SpaceXSI scores a piece of text against the watermark and reports whether it is watermarked, not watermarked, or uncertain. Longer text gives a stronger signal.

Access to watermark detection is granted by application. You can submit a request for the detection API through [this form](https://docs.google.com/forms/d/e/1FAIpQLSc6zpONhSgvde0GbNmfGajT6QoyO0T-fX8UBMhmd14h-UtabQ/viewform).

## [How to enable text watermarking](#how-to-enable-text-watermarking)

Team admins can turn watermarking on for some or all models in the SpaceXSI Console. The setting applies to every API key on the team.

1. Open the [Team settings page](https://console.x.ai/team/default/settings/team?utm_source=docs&utm_medium=referral&utm_campaign=developers-watermarking&utm_content=team-settings) and find the**Model output watermarking** row. It shows**On (all models)** ,**Off (all models)** , or**Custom** . Only team admins see this row.
2. Select the settings icon next to it, then select the checkbox for each model you want to watermark. **Select all** turns every model on or off at once.
3. Select **Save** . If you turned a model off, confirm with**Opt Out** .

Changes apply to new requests within 5 minutes. After you turn a model on, its new requests include the watermark; after you turn it off, they stop including it.

Turning a model off asks you to confirm that an exception under applicable law applies to your use, and that you are solely responsible for any marking, disclosure, or other legal requirement.

Some models may be locked on for your team. Locked models are listed in the dialog but cannot be turned off from the Console. To ask about a locked model, see [Why can't I turn watermarking off for a model?](#why-cant-i-turn-watermarking-off-for-a-model)

Every opt-in and opt-out is recorded in your team's audit log. Team admins can view it on the [Audit Log page](https://console.x.ai/team/default/audit?utm_source=docs&utm_medium=referral&utm_campaign=developers-watermarking&utm_content=audit) in the SpaceXSI Console. To find a change, search by event ID, description, or user, and use the time filter to narrow the results to a range of dates. For screenshots of these filters, see [Do you have audit logs?](https://docs.x.ai/developers/faq/security#do-you-have-audit-logs) in the security FAQ.

## [Audio watermarking](#audio-watermarking)

Audio from the voice APIs can also include an invisible watermark. This applies to [Text to Speech](https://docs.x.ai/developers/model-capabilities/audio/text-to-speech) and [Speech to Speech](https://docs.x.ai/developers/model-capabilities/audio/speech-to-speech), including speech in [custom voices](https://docs.x.ai/developers/model-capabilities/audio/custom-voices).

The watermark is [AudioSeal](https://github.com/facebookresearch/audioseal). It is added to the audio before it is encoded, so every output format includes it, and it can't be heard.

### [Which audio is watermarked](#which-audio-is-watermarked)

Audio is watermarked when:

- The request is sent to `eu-west-1.api.x.ai` .
- The end user is in the EU, the EEA, or California. The location comes from the IP address of the request.
- The request asks for a watermark. See [How to enable audio watermarking](#how-to-enable-audio-watermarking) .

If none of these apply, the audio is not watermarked.

### [Checking whether audio was watermarked](#checking-whether-audio-was-watermarked)

Read the `x-watermark` header on the response, as with text. `x-watermark: true` means the audio was watermarked, and `x-watermark: false` means it was not. For WebSocket connections, the header is on the response that opens the connection.

### [How to enable audio watermarking](#how-to-enable-audio-watermarking)

Add the `x-watermark: true` header to your request. If your WebSocket client can't set headers, add `watermark=true` to the URL instead.

```
curl -X POST https://api.x.ai/v1/tts \
  -H "Authorization: Bearer $XAI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "x-watermark: true" \
  -d '{
    "text": "Hello! Welcome to the SpaceXSI Text to Speech API.",
    "voice_id": "eve",
    "language": "en"
  }' \
  --output hello.mp3
```

`x-watermark: false` doesn't remove a watermark that is required by the user's location or the EU endpoint. Any value other than `true` or `false` returns a `400` error.

To watermark all audio for your team, email [support@x.ai](mailto:support@x.ai).

## [FAQ](#faq)

### [Do I need to change my code?](#do-i-need-to-change-my-code)

No. Text watermarking is turned on in the Console, and audio is watermarked where required without any changes. To watermark other audio, send the `x-watermark: true` header.

### [Does the setting apply to all of my API keys?](#does-the-setting-apply-to-all-of-my-api-keys)

Yes. The setting belongs to the team, so it applies to every API key on the team. You choose it separately for each model.

### [Why can't I turn watermarking off for a model?](#why-cant-i-turn-watermarking-off-for-a-model)

The model is locked on for your team. Locked models show in the watermarking dialog without a checkbox.

For questions about a locked model, contact your team admin. If you still have questions, email [support@x.ai](mailto:support@x.ai).

### [Can I turn off audio watermarking?](#can-i-turn-off-audio-watermarking)

Audio is only watermarked in the cases listed in [Which audio is watermarked](#which-audio-is-watermarked). When the request is sent to the EU endpoint, or the end user is in the EU, the EEA, or California, the watermark can't be turned off.

### [Does watermarking affect quality or speed?](#does-watermarking-affect-quality-or-speed)

No. Watermarking doesn't change response quality, and its effect on speed is negligible.

Last updated: November 10, 2026
