Skip to main content
Operations for managing images. Bases: StashClientProtocol Mixin for image-related client methods.

Functions

find_image

find_image(id: str) -> Image | None
Find an image by its ID. Parameters:
NameTypeDescriptionDefault
idstrThe ID of the image to findrequired
Returns:
TypeDescription
Image | NoneImage object if found, None otherwise

find_images

find_images(
    filter_: dict[str, Any] | None = None,
    image_filter: dict[str, Any] | None = None,
    q: str | None = None,
) -> FindImagesResultType
Find images matching the given filters. Parameters:
NameTypeDescriptionDefault
filter_dict[str, Any] | NoneOptional general filter parameters: - q: str (search query) - direction: SortDirectionEnum (ASC/DESC) - page: int - per_page: int - sort: str (field to sort by)None
image_filterdict[str, Any] | NoneOptional image-specific filterNone
qstr | NoneOptional search query (alternative to filter_[“q”])None
Returns:
TypeDescription
FindImagesResultTypeFindImagesResultType.

create_image

create_image(image: Image) -> Image
Create a new image in Stash. Parameters:
NameTypeDescriptionDefault
imageImageImage object with the data to create. Required fields: - title: Image titlerequired
Returns:
TypeDescription
ImageCreated Image object with ID and any server-generated fields
Raises:
TypeDescription
ValueErrorIf the image data is invalid
TransportErrorIf the request fails

update_image

update_image(image: Image) -> Image
Update an existing image in Stash. Parameters:
NameTypeDescriptionDefault
imageImageImage object with updated data. Required fields: - id: Image ID to update Any other fields that are set will be updated. Fields that are None will be ignored.required
Returns:
TypeDescription
ImageUpdated Image object with any server-generated fields
Raises:
TypeDescription
ValueErrorIf the image data is invalid
TransportErrorIf the request fails

image_destroy

image_destroy(
    input_data: ImageDestroyInput | dict[str, Any],
) -> bool
Delete an image. Parameters:
NameTypeDescriptionDefault
input_dataImageDestroyInput | dict[str, Any]ImageDestroyInput object or dictionary.required
Returns:
TypeDescription
boolTrue if the image was successfully deleted
Raises:
TypeDescription
ValueErrorIf the image ID is invalid
TransportErrorIf the request fails

images_destroy

images_destroy(
    input_data: ImagesDestroyInput | dict[str, Any],
) -> bool
Delete multiple images. Parameters:
NameTypeDescriptionDefault
input_dataImagesDestroyInput | dict[str, Any]ImagesDestroyInput object or dictionary.required
Returns:
TypeDescription
boolTrue if the images were successfully deleted
Raises:
TypeDescription
ValueErrorIf any image ID is invalid
TransportErrorIf the request fails

bulk_image_update

bulk_image_update(
    input_data: BulkImageUpdateInput | dict[str, Any],
) -> list[Image]
bulk_image_update(
    input_data: BulkImageUpdateInput | dict[str, Any],
    *,
    return_fields: str,
) -> list[dict[str, Any]]
bulk_image_update(
    input_data: BulkImageUpdateInput | dict[str, Any],
    *,
    return_fields: str | None = None,
) -> list[Image] | list[dict[str, Any]]
Bulk update images. Parameters:
NameTypeDescriptionDefault
input_dataBulkImageUpdateInput | dict[str, Any]BulkImageUpdateInput object or dictionary with fields to update.required
return_fieldsstr | NoneIf provided, use a minimal inline mutation requesting only these fields (e.g. "id"). Avoids the full fragment response, which is significantly faster for fire-and-forget bulk updates. When set, returns a list of raw dicts instead of Image objects.None
Returns:
TypeDescription
list[Image] | list[dict[str, Any]]List of updated Image objects (default), or list of dicts when
list[Image] | list[dict[str, Any]]return_fields is provided.

images_update

images_update(
    updates: list[ImageUpdateInput] | list[dict[str, Any]],
) -> list[Image]
Update multiple images with individual update data. This is different from bulk_image_update which applies the same updates to all images. This method allows updating each image with different values. Parameters:
NameTypeDescriptionDefault
updateslist[ImageUpdateInput] | list[dict[str, Any]]List of ImageUpdateInput objects or dictionaries, each containing: - id: Image ID to update (required) - Any other fields to update for that specific imagerequired
Returns:
TypeDescription
list[Image]List of updated Image objects (may contain None for failed updates)
Examples: Update multiple images with different values:
from stash_graphql_client.types import ImageUpdateInput

updates = [
    ImageUpdateInput(id="1", title="First Image", organized=True),
    ImageUpdateInput(id="2", title="Second Image", rating100=90),
]
images = await client.images_update(updates)
Using dictionaries:
updates = [
    {"id": "1", "organized": True},
    {"id": "2", "rating100": 75},
]
images = await client.images_update(updates)

image_increment_o

image_increment_o(id: str) -> int
Increment the O-counter for an image. Parameters:
NameTypeDescriptionDefault
idstrImage IDrequired
Returns:
TypeDescription
intNew O-count value after incrementing
Example
new_count = await client.image_increment_o("123")
print(f"New O-count: {new_count}")

image_decrement_o

image_decrement_o(id: str) -> int
Decrement the O-counter for an image. Parameters:
NameTypeDescriptionDefault
idstrImage IDrequired
Returns:
TypeDescription
intNew O-count value after decrementing
Example
new_count = await client.image_decrement_o("123")
print(f"New O-count: {new_count}")

image_reset_o

image_reset_o(id: str) -> int
Reset the O-counter for an image to 0. Parameters:
NameTypeDescriptionDefault
idstrImage IDrequired
Returns:
TypeDescription
intNew O-count value (0)
Example
count = await client.image_reset_o("123")
print(f"O-count reset to: {count}")