CAWG training and data mining 1.1: notAllowed vs constrained
The CAWG training-and-data-mining assertion has four entries, each allowed, notAllowed or constrained. Constrained with no extra info counts as notAllowed.

The CAWG training and data mining assertion, labelled cawg.training-mining, records whether an asset may be used for data mining, AI inference, generative AI training or other AI training. Each entry takes allowed, notAllowed or constrained, and the specification treats constrained as notAllowed when no further information is given. Sume's docs do not describe writing this assertion into generated files.
The entries and values
Version 1.1 of the specification is dated 16 May 2025. The four entry names below are as listed on the specification page.
| Entry | What it covers | Values |
|---|---|---|
| cawg.data_mining | Data mining of the asset | allowed, notAllowed, constrained |
| cawg.ai_inference | Using the asset as input to a trained AI model | allowed, notAllowed, constrained |
| cawg.ai_generative_training | Training a generative AI model | allowed, notAllowed, constrained |
| cawg.ai_training | Training an AI model | allowed, notAllowed, constrained |
Reading a value safely
The same rule in code: constrained without extra information resolves to notAllowed, so a reader that cannot interpret the extra information should refuse.
import asyncio
ENTRIES = ["cawg.data_mining", "cawg.ai_inference",
"cawg.ai_generative_training", "cawg.ai_training"]
VALUES = {"allowed", "notAllowed", "constrained"}
def effective(value, extra_info=False):
# the spec treats constrained with no extra information as notAllowed
if value not in VALUES:
raise ValueError(value)
return "notAllowed" if value == "constrained" and not extra_info else value
async def main():
for e in ENTRIES:
print(e, effective("constrained"))
asyncio.run(main())What Sume does and does not do
Sume's image API stores caller metadata on the job and sends none of it to the provider. That is your own record of an intent, such as a training preference for a delivered file, but it is not the assertion and no consumer reads it as one.
Where to go next
- Decide the four entries per asset class before delivery.
- Store the decision with the job id.
- Create the signed assertion with a tool that supports CAWG.
Sources
Related posts
More in Use cases
- Children's story clip from one illustration: Seedance 2.5 or 2.0
Animate one storybook illustration with a Seedance reference image on Sume. A 15 s page is $5.67 on Seedance 2.0 and $8.67 on Seedance 2.5.
- Christmas ad music: an instrumental Lyria brief that sells
A Christmas ad needs music that is festive without vocals under the voiceover. Brief it in one prompt, set the bed under speech and fade it out, with Sume.
- Classroom projector lesson video in 4:3: set the avatar aspect ratio
Avatar Video defaults to 9:16, so a lesson for an older 4:3 projector needs aspect_ratio set to 4:3. Five ratios are supported; resolution is 720p.
- Clean a transcript with a 2,000-character instruction, then caption
ElevenLabs speech to text can edit a transcript from a natural-language instruction up to 2,000 characters. A cleanup then captions workflow with Sume captions.
Written by Sume