provider_receipt or any license has been issued for it. Every image, video and download with a protected character is checked against a license. Characters with neither behave as before: no checks, no context, no usage records.
Who can use a protected character
A sandbox license works only with sandbox keys and a production license only with live ones.
What is checked
Each run is checked when you start it, and again when it leaves the queue for a renderer, so a license revoked or expired while the run waited still stops it. In order:- Your team has a license for this character in this environment.
- Its signature is valid, it is not revoked, and now is between
starts_atandends_at. - The run’s output type (
imageorvideo) is inscope.media. - Your
usematchesscope.use. - Your
territoryis inscope.territories, or the license isworldwide. - If
scope.allow_listis set, it allows where the run comes from and your team. - If
scope.max_generationsis set, it has not been reached.
use and territory come from you: see License context. The first check that fails is the reason you get back; the reasons are listed here. A blocked run never holds or charges credits. Runs that are not images or videos, such as training, are the provider’s alone.
Generating with the API
You need a key withruns:write. Name the character by char_id and send license_context:
inputs and files work as on any other run. Read it back with GET /v1/runs/{id} and its files with GET /v1/runs/{id}/outputs, both with runs:read.
The licensee’s library
GET /v1/characters/licensed (scope chars:read) lists the characters licensed to your team, one per character, with its best license:
Downloading the .char
POST /v1/licenses/{key}/download (scope chars:read or licenses:read) returns a link to your own copy of the latest version, valid for 15 minutes:
reserved.license, so it can be checked offline; see The license in a .char. The provider’s own file is not changed. A download works only while the license is active and only where its allow_list allows, and each one is recorded as usage.
What a licensee cannot do
A licensee cannot retrain, rename or delete the character, publish it to the community gallery, or issue licenses for it. Uploading a downloaded copy as a new character file does not get around any of this: the copy is recognised by its weight files and reference pictures, even renamed or with files added, and checked like the original. The same goes for a reference picture taken out of the file and uploaded on its own, as an input to a run or as a photo for a new character. A build whose photos change after it starts fails before it runs. When a character becomes protected, any community gallery listing that carries it, the provider’s own or a copy someone else published, is taken down. Contact us if a listing was taken down by mistake.Tagged outputs
Every image and video made with a protected character carries the license in its metadata: a PNGtEXt chunk named omnichar, or an MP4 or MOV metadata tag, holding
license_key is null on the provider’s own runs. The tag is written within about a minute of the run finishing, so an output fetched the moment it appears may not carry it yet. Outputs in other formats are not tagged. Outputs of characters that are not protected are never changed.