Skip to content
Get started

Watermark

Delete
projects.watermark.delete(strproject_id) -> WatermarkDeleteResponse
DELETE/projects/{projectId}/watermark
Delete Logo
projects.watermark.delete_logo(strproject_id) -> WatermarkDeleteLogoResponse
DELETE/projects/{projectId}/watermark/logo
Preview
projects.watermark.preview(strproject_id, WatermarkPreviewParams**kwargs) -> WatermarkPreviewResponse
POST/projects/{projectId}/watermark/preview
Retrieve
projects.watermark.retrieve(strproject_id) -> WatermarkRetrieveResponse
GET/projects/{projectId}/watermark
Update
projects.watermark.update(strproject_id, WatermarkUpdateParams**kwargs) -> WatermarkUpdateResponse
PUT/projects/{projectId}/watermark
Update Logo
projects.watermark.update_logo(strproject_id, WatermarkUpdateLogoParams**kwargs) -> WatermarkUpdateLogoResponse
PUT/projects/{projectId}/watermark/logo
ModelsExpand Collapse
class WatermarkDeleteResponse: …
deleted: bool
class WatermarkDeleteLogoResponse: …
watermark: Watermark

Forced-watermark configuration stored at one scope.

id: str

Stable identifier derived from level + scopeId

created_at: str

ISO-8601 creation timestamp

created_by: str

User id that last wrote the configuration

enabled: bool

Whether the watermark is enforced on assets generated in this scope. A disabled project configuration falls back to its team’s.

level: Literal["project", "team"]

Scope this configuration applies to: team or project

One of the following:
"project"
"team"
opacity: float

Mark opacity, 0.05 (barely visible) to 1 (opaque)

placement: Literal["bottom-left", "bottom-right", "center", 3 more]

Where the mark sits on the image

One of the following:
"bottom-left"
"bottom-right"
"center"
"tiled"
"top-left"
"top-right"
rotation: float

Mark rotation in degrees, -90 to 90. 0 is horizontal.

scale: float

Mark width as a fraction of the image width

scope_id: str

The id of the team or project that owns this configuration

spacing: float

Gap between repetitions, as a fraction of the mark’s own size. Tiled placement only; 0 repeats the mark edge to edge.

updated_at: str

ISO-8601 last-update timestamp

version: float

Bumped on every write.

deleted_at: Optional[str]

Set when the configuration has been deleted.

logo_is_opaque: Optional[bool]

Whether the stored logo has no transparency at all.

Recorded at upload so the UI can warn without decoding the image again: an opaque logo draws its whole rectangle, which a rotated tiled mark turns into a very visible diamond.

logo_key: Optional[str]

Where the uploaded logo lives, when one is set.

text: Optional[str]

Text rendered as the mark, when no logo is set

class WatermarkPreviewResponse: …

Response of the watermark preview routes.

image: str

The sample image with the mark drawn on it, base64-encoded.

class WatermarkRetrieveResponse: …
watermark: Watermark

Forced-watermark configuration stored at one scope.

id: str

Stable identifier derived from level + scopeId

created_at: str

ISO-8601 creation timestamp

created_by: str

User id that last wrote the configuration

enabled: bool

Whether the watermark is enforced on assets generated in this scope. A disabled project configuration falls back to its team’s.

level: Literal["project", "team"]

Scope this configuration applies to: team or project

One of the following:
"project"
"team"
opacity: float

Mark opacity, 0.05 (barely visible) to 1 (opaque)

placement: Literal["bottom-left", "bottom-right", "center", 3 more]

Where the mark sits on the image

One of the following:
"bottom-left"
"bottom-right"
"center"
"tiled"
"top-left"
"top-right"
rotation: float

Mark rotation in degrees, -90 to 90. 0 is horizontal.

scale: float

Mark width as a fraction of the image width

scope_id: str

The id of the team or project that owns this configuration

spacing: float

Gap between repetitions, as a fraction of the mark’s own size. Tiled placement only; 0 repeats the mark edge to edge.

updated_at: str

ISO-8601 last-update timestamp

version: float

Bumped on every write.

deleted_at: Optional[str]

Set when the configuration has been deleted.

logo_is_opaque: Optional[bool]

Whether the stored logo has no transparency at all.

Recorded at upload so the UI can warn without decoding the image again: an opaque logo draws its whole rectangle, which a rotated tiled mark turns into a very visible diamond.

logo_key: Optional[str]

Where the uploaded logo lives, when one is set.

text: Optional[str]

Text rendered as the mark, when no logo is set

class WatermarkUpdateResponse: …
watermark: Watermark

Forced-watermark configuration stored at one scope.

id: str

Stable identifier derived from level + scopeId

created_at: str

ISO-8601 creation timestamp

created_by: str

User id that last wrote the configuration

enabled: bool

Whether the watermark is enforced on assets generated in this scope. A disabled project configuration falls back to its team’s.

level: Literal["project", "team"]

Scope this configuration applies to: team or project

One of the following:
"project"
"team"
opacity: float

Mark opacity, 0.05 (barely visible) to 1 (opaque)

placement: Literal["bottom-left", "bottom-right", "center", 3 more]

Where the mark sits on the image

One of the following:
"bottom-left"
"bottom-right"
"center"
"tiled"
"top-left"
"top-right"
rotation: float

Mark rotation in degrees, -90 to 90. 0 is horizontal.

scale: float

Mark width as a fraction of the image width

scope_id: str

The id of the team or project that owns this configuration

spacing: float

Gap between repetitions, as a fraction of the mark’s own size. Tiled placement only; 0 repeats the mark edge to edge.

updated_at: str

ISO-8601 last-update timestamp

version: float

Bumped on every write.

deleted_at: Optional[str]

Set when the configuration has been deleted.

logo_is_opaque: Optional[bool]

Whether the stored logo has no transparency at all.

Recorded at upload so the UI can warn without decoding the image again: an opaque logo draws its whole rectangle, which a rotated tiled mark turns into a very visible diamond.

logo_key: Optional[str]

Where the uploaded logo lives, when one is set.

text: Optional[str]

Text rendered as the mark, when no logo is set

class WatermarkUpdateLogoResponse: …
watermark: Watermark

Forced-watermark configuration stored at one scope.

id: str

Stable identifier derived from level + scopeId

created_at: str

ISO-8601 creation timestamp

created_by: str

User id that last wrote the configuration

enabled: bool

Whether the watermark is enforced on assets generated in this scope. A disabled project configuration falls back to its team’s.

level: Literal["project", "team"]

Scope this configuration applies to: team or project

One of the following:
"project"
"team"
opacity: float

Mark opacity, 0.05 (barely visible) to 1 (opaque)

placement: Literal["bottom-left", "bottom-right", "center", 3 more]

Where the mark sits on the image

One of the following:
"bottom-left"
"bottom-right"
"center"
"tiled"
"top-left"
"top-right"
rotation: float

Mark rotation in degrees, -90 to 90. 0 is horizontal.

scale: float

Mark width as a fraction of the image width

scope_id: str

The id of the team or project that owns this configuration

spacing: float

Gap between repetitions, as a fraction of the mark’s own size. Tiled placement only; 0 repeats the mark edge to edge.

updated_at: str

ISO-8601 last-update timestamp

version: float

Bumped on every write.

deleted_at: Optional[str]

Set when the configuration has been deleted.

logo_is_opaque: Optional[bool]

Whether the stored logo has no transparency at all.

Recorded at upload so the UI can warn without decoding the image again: an opaque logo draws its whole rectangle, which a rotated tiled mark turns into a very visible diamond.

logo_key: Optional[str]

Where the uploaded logo lives, when one is set.

text: Optional[str]

Text rendered as the mark, when no logo is set