AI Watermark¶
Geodesia G-1 applies a latent HMAC-SHA256 watermark to every AI-generated response. The watermark is embedded in the generation process and can be cryptographically verified later — without requiring the model weights or original inference context.
What Is an AI Watermark?¶
An AI watermark is a signal embedded in the text output of a language model that allows the origin of the text to be verified. Unlike visible watermarks, Geodesia's watermark is latent — it is not visible in the text but is recoverable through the verification endpoint.
This satisfies:
- EU AI Act Article 50 — AI-generated content must be marked in a way that is detectable
- California SB 942 — AI-generated content must carry detectable disclosure
- Italy 132/2025 — AI content marking requirements
The watermark is a cryptographic HMAC computed over the generation parameters and embedded as metadata attached to the response. The manifest watermark (explicit disclosure in the geodesia.watermark response field) is delivered alongside the latent one.
How It Works¶
When Geodesia generates a response, it:
- Computes
HMAC-SHA256(watermark_key, session_id + call_id + timestamp + model_id) - Attaches the result as the
watermark_tokenin the response metadata - Records the watermark in the audit chain
To verify, you provide the watermark_token and the relevant metadata. The verifier recomputes the HMAC and checks if the provided token matches.
The watermark_key is derived from your deployment's license token. It never leaves the server.
Response Disclosure¶
Every Geodesia G-1 response includes a manifest watermark in the geodesia.watermark field:
{
"geodesia": {
"watermark": {
"token": "hmac:v1:a8b3c1d4e5f6...",
"generated_by": "Geodesia G-1",
"call_id": "call_abc123",
"timestamp": "2026-06-10T10:23:45Z",
"disclosure": "This content was generated by an AI system."
}
}
}
| Field | Description |
|---|---|
token | The HMAC token used for verification |
generated_by | System identifier |
call_id | The call ID — can be cross-referenced with the audit chain |
timestamp | When the response was generated |
disclosure | Plain-language AI disclosure string |
Endpoints¶
POST /v1/glad/watermark/verify¶
Verify that a piece of text was generated by this Geodesia G-1 instance.
curl -X POST http://localhost:8199/v1/glad/watermark/verify \
-H "Content-Type: application/json" \
-d '{
"token": "hmac:v1:a8b3c1d4e5f6...",
"call_id": "call_abc123",
"timestamp": "2026-06-10T10:23:45Z"
}'
Request Fields¶
| Field | Type | Required | Description |
|---|---|---|---|
token | string | ✅ | The watermark.token value from the response |
call_id | string | ✅ | The call_id from the response |
timestamp | string | ✅ | The ISO 8601 timestamp from the watermark |
session_id | string | — | Optional session ID for additional verification |
Response¶
{
"verified": true,
"call_id": "call_abc123",
"generated_at": "2026-06-10T10:23:45Z",
"model_id": "geodesia-g1-gemma4-e2b",
"deployer_id": "acme-corp",
"chain_entry": "chain_def456"
}
| Field | Description |
|---|---|
verified | true if the token matches the recomputed HMAC |
call_id | Confirmed call ID |
generated_at | Confirmed generation timestamp |
model_id | The model checkpoint that generated the response |
deployer_id | The deployer whose key was used |
chain_entry | The audit chain entry ID for this call |
If verified is false, the response will include a reason field explaining the mismatch.
Watermark Configuration¶
Configure watermarking in config.yaml:
watermark:
enabled: true
algorithm: "hmac_sha256"
include_in_response: true # Include watermark in all API responses
disclosure_text: "This content was generated by an AI system."
custom_disclosure: null # Override with jurisdiction-specific text
Regulatory Coverage¶
| Law | Requirement | Coverage |
|---|---|---|
| EU AI Act Art. 50(1) | Disclose that content is AI-generated | Manifest disclosure in every response |
| EU AI Act Art. 50(2) | Detectable machine-readable marker | Latent HMAC-SHA256 token |
| CA SB 942 §22757(a) | Watermark or tag AI-generated content | Latent + manifest watermark |
| Italy 132/2025 Art. 4 | Mark AI-generated content | Disclosure field + latent token |
| UK DUAA 2025 | Transparency of AI content | Manifest disclosure |