Skip to content

Products Endpoints

Product catalog, brands, and collections management.


Overview

Products

Method Endpoint Description
GET /products/ List products
POST /products/ Create product
GET /products/{id} Get product
PATCH /products/{id} Update product
DELETE /products/{id} Delete product

Brands

Method Endpoint Description
GET /brands/ List brands
POST /brands/ Create brand
GET /brands/{id} Get brand
PATCH /brands/{id} Update brand

Collections

Method Endpoint Description
GET /brand-collections/ List collections
POST /brand-collections/ Create collection

Seasons & Years

Method Endpoint Description
GET /seasons/ List seasons
GET /years/ List years

API Reference

Sartiq Backend Server - Products 0.1.0

products


POST /api/v1/products/

Create Product

Description

Create new product.

Args: mode: Creation mode - 'basic' for wizard workflow (DRAFT state) or 'complete' for legacy behavior sync_captioning: If True (default), waits for caption generation before returning. If False, caption is generated asynchronously in the background.

Supports both traditional image uploads (URL, base64) and presigned URLs. For presigned URLs, the image should have been previously uploaded using the /uploads endpoint.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
mode query string complete No
organization_id query No
sync_captioning query boolean True No

Request body

{
    "cover_image": "https://example.com/image.jpg",
    "gender": "UNISEX",
    "materials": "100% Cotton",
    "name": "Black T-Shirt",
    "public": false
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "properties": {
        "sku": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Sku"
        },
        "name": {
            "type": "string",
            "maxLength": 255,
            "title": "Name"
        },
        "brand": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 1000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand"
        },
        "master_item_code": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Master Item Code"
        },
        "product_type_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Type Id"
        },
        "gender": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductGender"
                },
                {
                    "type": "null"
                }
            ],
            "default": "UNISEX"
        },
        "age_class": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/AgeClass"
                },
                {
                    "type": "null"
                }
            ]
        },
        "type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Type"
        },
        "category": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Category"
        },
        "sleeve_type": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Sleeve Type"
        },
        "neckline": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Neckline"
        },
        "closure_type": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Closure Type"
        },
        "fit_type": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Fit Type"
        },
        "length_type": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Length Type"
        },
        "pattern": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Pattern"
        },
        "materials": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 1000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Materials"
        },
        "colour": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Colour"
        },
        "season": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Season"
        },
        "year": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Year"
        },
        "style_code": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Style Code"
        },
        "in_store_date": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "In Store Date"
        },
        "theme": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Theme"
        },
        "brand_collection": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand Collection"
        },
        "description": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 3000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "back_description": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 1000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Back Description"
        },
        "ecommerce_description": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 5000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Ecommerce Description"
        },
        "brand_metadata": {
            "anyOf": [
                {
                    "additionalProperties": true,
                    "type": "object"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand Metadata"
        },
        "cover_image": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "$ref": "#/components/schemas/MediaInput"
                }
            ],
            "title": "Cover Image",
            "description": "URL, base64 string, or MediaInput for cover image"
        },
        "back_image": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "$ref": "#/components/schemas/MediaInput"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Back Image",
            "description": "URL, base64 string, or MediaInput for back view image (optional)"
        },
        "reference_images": {
            "anyOf": [
                {
                    "items": {
                        "anyOf": [
                            {
                                "type": "string"
                            },
                            {
                                "$ref": "#/components/schemas/MediaInput"
                            }
                        ]
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Reference Images",
            "description": "List of reference image URLs, base64 strings, or MediaInputs"
        },
        "data_images": {
            "anyOf": [
                {
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Data Images",
            "description": "DEPRECATED: Use reference_images instead"
        },
        "public": {
            "type": "boolean",
            "title": "Public",
            "default": false
        },
        "is_filler": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Is Filler",
            "description": "Mark as filler product. Auto-detected from SKU if not provided."
        },
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id",
            "description": "Organization this product belongs to"
        }
    },
    "type": "object",
    "required": [
        "name",
        "cover_image"
    ],
    "title": "ProductCreate",
    "example": {
        "cover_image": "https://example.com/image.jpg",
        "gender": "UNISEX",
        "materials": "100% Cotton",
        "name": "Black T-Shirt",
        "public": false
    }
}

Responses

{
    "id": "bd05db81-b130-4904-89a4-fc757db8326f",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "sku": null,
    "name": "string",
    "brand": null,
    "master_item_code": null,
    "product_family": null,
    "product_type": null,
    "product_type_id": null,
    "gender": "MALE",
    "age_class": null,
    "placement": null,
    "zone": null,
    "type": null,
    "category": null,
    "sleeve_type": null,
    "neckline": null,
    "closure_type": null,
    "fit_type": null,
    "length_type": null,
    "pattern": null,
    "materials": null,
    "colour": null,
    "season": null,
    "year": null,
    "style_code": null,
    "in_store_date": null,
    "theme": null,
    "brand_collection": null,
    "description": null,
    "back_description": null,
    "ecommerce_description": null,
    "brand_metadata": null,
    "cover_image_url": null,
    "back_image_url": null,
    "reference_images": [
        "string"
    ],
    "cover_image_media": null,
    "back_image_media": null,
    "reference_images_media": null,
    "data_image_urls": [
        "string"
    ],
    "public": true,
    "enabled": true,
    "archived": true,
    "demo": true,
    "is_filler": true,
    "owner_id": "f54c07d2-792a-4957-a5cb-179a657ad78d",
    "organization_id": null,
    "shot_status": null,
    "shot_status_shooting_look_id": null,
    "integration_name": null,
    "exports_completed": null,
    "exports_total": null,
    "shots": [
        null
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "sku": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Sku"
        },
        "name": {
            "type": "string",
            "title": "Name"
        },
        "brand": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand"
        },
        "master_item_code": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Master Item Code"
        },
        "product_family": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Family"
        },
        "product_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Type"
        },
        "product_type_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Type Id"
        },
        "gender": {
            "$ref": "#/components/schemas/ProductGender"
        },
        "age_class": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/AgeClass"
                },
                {
                    "type": "null"
                }
            ]
        },
        "placement": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductPlacement"
                },
                {
                    "type": "null"
                }
            ]
        },
        "zone": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Zone"
        },
        "type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Type"
        },
        "category": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Category"
        },
        "sleeve_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Sleeve Type"
        },
        "neckline": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Neckline"
        },
        "closure_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Closure Type"
        },
        "fit_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Fit Type"
        },
        "length_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Length Type"
        },
        "pattern": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Pattern"
        },
        "materials": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Materials"
        },
        "colour": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Colour"
        },
        "season": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Season"
        },
        "year": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Year"
        },
        "style_code": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Style Code"
        },
        "in_store_date": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "In Store Date"
        },
        "theme": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Theme"
        },
        "brand_collection": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand Collection"
        },
        "description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "back_description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Back Description"
        },
        "ecommerce_description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Ecommerce Description"
        },
        "brand_metadata": {
            "anyOf": [
                {
                    "additionalProperties": true,
                    "type": "object"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand Metadata"
        },
        "cover_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Cover Image Url"
        },
        "back_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Back Image Url"
        },
        "reference_images": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Reference Images"
        },
        "cover_image_media": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourcePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "back_image_media": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourcePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "reference_images_media": {
            "anyOf": [
                {
                    "items": {
                        "$ref": "#/components/schemas/MediaResourcePublic"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Reference Images Media"
        },
        "data_image_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Data Image Urls",
            "default": []
        },
        "public": {
            "type": "boolean",
            "title": "Public"
        },
        "enabled": {
            "type": "boolean",
            "title": "Enabled"
        },
        "archived": {
            "type": "boolean",
            "title": "Archived"
        },
        "demo": {
            "type": "boolean",
            "title": "Demo"
        },
        "is_filler": {
            "type": "boolean",
            "title": "Is Filler"
        },
        "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id"
        },
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductShootingStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "shot_status_shooting_look_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shot Status Shooting Look Id"
        },
        "integration_name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Integration Name"
        },
        "exports_completed": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Exports Completed"
        },
        "exports_total": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Exports Total"
        },
        "shots": {
            "items": {},
            "type": "array",
            "title": "Shots",
            "default": []
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "name",
        "gender",
        "cover_image_url",
        "reference_images",
        "public",
        "enabled",
        "archived",
        "demo",
        "is_filler",
        "owner_id"
    ],
    "title": "ProductPublic"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/products/

Read Products

Description

Retrieve products. Optionally filter by archive status, enabled status, brand (case-insensitive), brand_collection (case-insensitive), season (case-insensitive), year, demo status, product state, gender, product_type, shot statuses, and search by name or SKU.

When organization_id query param is provided, returns products belonging to that organization. Without organization_id, returns only personal products (not belonging to any organization).

Sorting: - sort_by: Field to sort by (name, season, year, gender, product_type, shot_status, created_at, updated_at) - sort_order: Sort direction (asc, desc). Default: desc - Default: Sorts by shot_status using bucket-based logic when sort_by is not specified

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
archived query No
brand query No
brand_collection query No Filter by brand collection(s)
demo query No
enabled query boolean True No
gender query No
is_filler query No
is_public query No
limit query integer 100 No
organization_id query No
product_type query No
search query No
season query No
shooting_id query No Filter by shooting ID
shot_statuses query No
skip query integer 0 No
sort_by query No
sort_order query string desc No
year query No

Responses

{
    "id": "489555a6-3aac-46d8-95cd-0c26bb94a818",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "data": [
        {
            "id": "d7f810ec-4384-4c36-8a7c-a46493320d7d",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "sku": null,
            "name": "string",
            "brand": null,
            "master_item_code": null,
            "product_family": null,
            "product_type": null,
            "product_type_id": null,
            "gender": "MALE",
            "age_class": null,
            "placement": null,
            "zone": null,
            "type": null,
            "category": null,
            "sleeve_type": null,
            "neckline": null,
            "closure_type": null,
            "fit_type": null,
            "length_type": null,
            "pattern": null,
            "materials": null,
            "colour": null,
            "season": null,
            "year": null,
            "style_code": null,
            "in_store_date": null,
            "theme": null,
            "brand_collection": null,
            "description": null,
            "back_description": null,
            "ecommerce_description": null,
            "brand_metadata": null,
            "cover_image_url": null,
            "back_image_url": null,
            "reference_images": [
                "string"
            ],
            "cover_image_media": null,
            "back_image_media": null,
            "reference_images_media": null,
            "data_image_urls": [
                "string"
            ],
            "public": true,
            "enabled": true,
            "archived": true,
            "demo": true,
            "is_filler": true,
            "owner_id": "36c0fd48-c4fc-4e37-8408-93254a5841af",
            "organization_id": null,
            "shot_status": null,
            "shot_status_shooting_look_id": null,
            "integration_name": null,
            "exports_completed": null,
            "exports_total": null,
            "shots": [
                null
            ]
        }
    ],
    "count": 0
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "data": {
            "items": {
                "$ref": "#/components/schemas/ProductPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ProductsPublic"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/products/export-tasks

List Export Tasks

Description

List export tasks for the current user.

Returns recent export tasks with their status and download URLs.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
limit query integer 10 No
skip query integer 0 No
status query No

Responses

{
    "data": [
        {
            "created_at": "2025-01-01T00:00:00Z",
            "id": "123e4567-e89b-12d3-a456-426614174000",
            "owner_id": "123e4567-e89b-12d3-a456-426614174001",
            "processed_items": 45,
            "progress": 45,
            "started_at": "2025-01-01T00:00:00Z",
            "status": "PROCESSING",
            "task_type": "APPROVED_SHOTS",
            "total_items": 100,
            "updated_at": "2025-01-01T00:00:00Z"
        }
    ],
    "count": 0
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/ExportTaskPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ExportTasksPublic",
    "description": "List of export tasks with count."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/products/export-tasks/{task_id}

Get Export Task Status

Description

Get the status of an export task.

Poll this endpoint to check export progress and get the download URL when complete.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
task_id path string No

Responses

{
    "created_at": "2025-01-01T00:00:00Z",
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "owner_id": "123e4567-e89b-12d3-a456-426614174001",
    "processed_items": 45,
    "progress": 45,
    "started_at": "2025-01-01T00:00:00Z",
    "status": "PROCESSING",
    "task_type": "APPROVED_SHOTS",
    "total_items": 100,
    "updated_at": "2025-01-01T00:00:00Z"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id"
        },
        "task_type": {
            "$ref": "#/components/schemas/ExportTaskType"
        },
        "status": {
            "$ref": "#/components/schemas/TaskStatus-Output"
        },
        "progress": {
            "type": "integer",
            "title": "Progress"
        },
        "total_items": {
            "type": "integer",
            "title": "Total Items"
        },
        "processed_items": {
            "type": "integer",
            "title": "Processed Items"
        },
        "download_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Download Url"
        },
        "error_message": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Error Message"
        },
        "started_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Started At"
        },
        "completed_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Completed At"
        },
        "expires_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Expires At"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        }
    },
    "type": "object",
    "required": [
        "id",
        "owner_id",
        "task_type",
        "status",
        "progress",
        "total_items",
        "processed_items",
        "created_at",
        "updated_at"
    ],
    "title": "ExportTaskPublic",
    "description": "Public schema for export task responses.",
    "example": {
        "created_at": "2025-01-01T00:00:00Z",
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "owner_id": "123e4567-e89b-12d3-a456-426614174001",
        "processed_items": 45,
        "progress": 45,
        "started_at": "2025-01-01T00:00:00Z",
        "status": "PROCESSING",
        "task_type": "APPROVED_SHOTS",
        "total_items": 100,
        "updated_at": "2025-01-01T00:00:00Z"
    }
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

DELETE /api/v1/products/export-tasks/{task_id}

Cancel Export Task

Description

Cancel an export task.

Only tasks in non-terminal states (PENDING, SCHEDULED, PROCESSING, RETRYING) can be cancelled. Returns the updated task with status CANCELLED.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
task_id path string No

Responses

{
    "created_at": "2025-01-01T00:00:00Z",
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "owner_id": "123e4567-e89b-12d3-a456-426614174001",
    "processed_items": 45,
    "progress": 45,
    "started_at": "2025-01-01T00:00:00Z",
    "status": "PROCESSING",
    "task_type": "APPROVED_SHOTS",
    "total_items": 100,
    "updated_at": "2025-01-01T00:00:00Z"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id"
        },
        "task_type": {
            "$ref": "#/components/schemas/ExportTaskType"
        },
        "status": {
            "$ref": "#/components/schemas/TaskStatus-Output"
        },
        "progress": {
            "type": "integer",
            "title": "Progress"
        },
        "total_items": {
            "type": "integer",
            "title": "Total Items"
        },
        "processed_items": {
            "type": "integer",
            "title": "Processed Items"
        },
        "download_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Download Url"
        },
        "error_message": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Error Message"
        },
        "started_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Started At"
        },
        "completed_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Completed At"
        },
        "expires_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Expires At"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        }
    },
    "type": "object",
    "required": [
        "id",
        "owner_id",
        "task_type",
        "status",
        "progress",
        "total_items",
        "processed_items",
        "created_at",
        "updated_at"
    ],
    "title": "ExportTaskPublic",
    "description": "Public schema for export task responses.",
    "example": {
        "created_at": "2025-01-01T00:00:00Z",
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "owner_id": "123e4567-e89b-12d3-a456-426614174001",
        "processed_items": 45,
        "progress": 45,
        "started_at": "2025-01-01T00:00:00Z",
        "status": "PROCESSING",
        "task_type": "APPROVED_SHOTS",
        "total_items": 100,
        "updated_at": "2025-01-01T00:00:00Z"
    }
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

DELETE /api/v1/products/export-tasks/{task_id}/dismiss

Dismiss Export Task

Description

Dismiss a completed or failed export task, cleaning up the file and record.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
task_id path string No

Responses

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/products/export-tasks/{task_id}/download

Download Export Task

Description

Download the export file and delete the task record and file after download.

This endpoint streams the export file to the client and schedules cleanup of both the file and database record in the background.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
task_id path string No

Responses

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/products/{id}

Read Product

Description

Get product by ID.

Automatically checks organization membership even if organization_id is not specified.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
id path string No
organization_id query No

Responses

{
    "id": "8d22ab70-5181-4535-8323-5c993cab7570",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "sku": null,
    "name": "string",
    "brand": null,
    "master_item_code": null,
    "product_family": null,
    "product_type": null,
    "product_type_id": null,
    "gender": "MALE",
    "age_class": null,
    "placement": null,
    "zone": null,
    "type": null,
    "category": null,
    "sleeve_type": null,
    "neckline": null,
    "closure_type": null,
    "fit_type": null,
    "length_type": null,
    "pattern": null,
    "materials": null,
    "colour": null,
    "season": null,
    "year": null,
    "style_code": null,
    "in_store_date": null,
    "theme": null,
    "brand_collection": null,
    "description": null,
    "back_description": null,
    "ecommerce_description": null,
    "brand_metadata": null,
    "cover_image_url": null,
    "back_image_url": null,
    "reference_images": [
        "string"
    ],
    "cover_image_media": null,
    "back_image_media": null,
    "reference_images_media": null,
    "data_image_urls": [
        "string"
    ],
    "public": true,
    "enabled": true,
    "archived": true,
    "demo": true,
    "is_filler": true,
    "owner_id": "b3136a10-f765-4194-9ff0-975f2d501e66",
    "organization_id": null,
    "shot_status": null,
    "shot_status_shooting_look_id": null,
    "integration_name": null,
    "exports_completed": null,
    "exports_total": null,
    "shots": [
        null
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "sku": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Sku"
        },
        "name": {
            "type": "string",
            "title": "Name"
        },
        "brand": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand"
        },
        "master_item_code": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Master Item Code"
        },
        "product_family": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Family"
        },
        "product_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Type"
        },
        "product_type_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Type Id"
        },
        "gender": {
            "$ref": "#/components/schemas/ProductGender"
        },
        "age_class": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/AgeClass"
                },
                {
                    "type": "null"
                }
            ]
        },
        "placement": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductPlacement"
                },
                {
                    "type": "null"
                }
            ]
        },
        "zone": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Zone"
        },
        "type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Type"
        },
        "category": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Category"
        },
        "sleeve_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Sleeve Type"
        },
        "neckline": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Neckline"
        },
        "closure_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Closure Type"
        },
        "fit_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Fit Type"
        },
        "length_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Length Type"
        },
        "pattern": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Pattern"
        },
        "materials": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Materials"
        },
        "colour": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Colour"
        },
        "season": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Season"
        },
        "year": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Year"
        },
        "style_code": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Style Code"
        },
        "in_store_date": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "In Store Date"
        },
        "theme": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Theme"
        },
        "brand_collection": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand Collection"
        },
        "description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "back_description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Back Description"
        },
        "ecommerce_description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Ecommerce Description"
        },
        "brand_metadata": {
            "anyOf": [
                {
                    "additionalProperties": true,
                    "type": "object"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand Metadata"
        },
        "cover_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Cover Image Url"
        },
        "back_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Back Image Url"
        },
        "reference_images": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Reference Images"
        },
        "cover_image_media": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourcePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "back_image_media": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourcePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "reference_images_media": {
            "anyOf": [
                {
                    "items": {
                        "$ref": "#/components/schemas/MediaResourcePublic"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Reference Images Media"
        },
        "data_image_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Data Image Urls",
            "default": []
        },
        "public": {
            "type": "boolean",
            "title": "Public"
        },
        "enabled": {
            "type": "boolean",
            "title": "Enabled"
        },
        "archived": {
            "type": "boolean",
            "title": "Archived"
        },
        "demo": {
            "type": "boolean",
            "title": "Demo"
        },
        "is_filler": {
            "type": "boolean",
            "title": "Is Filler"
        },
        "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id"
        },
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductShootingStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "shot_status_shooting_look_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shot Status Shooting Look Id"
        },
        "integration_name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Integration Name"
        },
        "exports_completed": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Exports Completed"
        },
        "exports_total": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Exports Total"
        },
        "shots": {
            "items": {},
            "type": "array",
            "title": "Shots",
            "default": []
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "name",
        "gender",
        "cover_image_url",
        "reference_images",
        "public",
        "enabled",
        "archived",
        "demo",
        "is_filler",
        "owner_id"
    ],
    "title": "ProductPublic"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

PUT /api/v1/products/{id}

Update Product

Description

Update a product.

Supports both traditional image uploads (URL, base64) and presigned URLs. For presigned URLs, the image should have been previously uploaded using the /uploads endpoint.

Organization transfer: - To transfer a personal product to an organization: set organization_id to the target org ID - To transfer a product out of an organization: set organization_id to None (org owner only)

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
id path string No
organization_id query No

Request body

{
    "brand": "New Brand",
    "gender": "MALE",
    "name": "Updated Black T-Shirt",
    "public": true
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "properties": {
        "name": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Name"
        },
        "sku": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Sku"
        },
        "brand": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 1000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand"
        },
        "master_item_code": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Master Item Code"
        },
        "product_type_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Type Id"
        },
        "gender": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductGender"
                },
                {
                    "type": "null"
                }
            ]
        },
        "age_class": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/AgeClass"
                },
                {
                    "type": "null"
                }
            ]
        },
        "type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Type"
        },
        "category": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Category"
        },
        "sleeve_type": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Sleeve Type"
        },
        "neckline": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Neckline"
        },
        "closure_type": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Closure Type"
        },
        "fit_type": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Fit Type"
        },
        "length_type": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Length Type"
        },
        "pattern": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Pattern"
        },
        "materials": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Materials"
        },
        "colour": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Colour"
        },
        "season": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Season"
        },
        "year": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Year"
        },
        "style_code": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Style Code"
        },
        "in_store_date": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "In Store Date"
        },
        "theme": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Theme"
        },
        "brand_collection": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand Collection"
        },
        "description": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 3000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "back_description": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 1000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Back Description"
        },
        "ecommerce_description": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 5000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Ecommerce Description"
        },
        "brand_metadata": {
            "anyOf": [
                {
                    "additionalProperties": true,
                    "type": "object"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand Metadata"
        },
        "cover_image": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "$ref": "#/components/schemas/MediaInput"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Cover Image",
            "description": "URL, base64 string, or MediaInput for cover image"
        },
        "back_image": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "$ref": "#/components/schemas/MediaInput"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Back Image",
            "description": "URL, base64 string, or MediaInput for back view image"
        },
        "reference_images": {
            "anyOf": [
                {
                    "items": {
                        "anyOf": [
                            {
                                "type": "string"
                            },
                            {
                                "$ref": "#/components/schemas/MediaInput"
                            }
                        ]
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Reference Images",
            "description": "List of reference image URLs, base64 strings, or MediaInputs to update"
        },
        "data_images": {
            "anyOf": [
                {
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Data Images",
            "description": "DEPRECATED: Use reference_images instead"
        },
        "public": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Public"
        },
        "is_filler": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Is Filler",
            "description": "Mark as filler product. Auto-detected from SKU if not provided."
        },
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id",
            "description": "Organization to transfer this product to"
        }
    },
    "type": "object",
    "title": "ProductUpdate",
    "example": {
        "brand": "New Brand",
        "gender": "MALE",
        "name": "Updated Black T-Shirt",
        "public": true
    }
}

Responses

{
    "id": "31d47254-1288-402e-bf64-6f1f935956d7",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "sku": null,
    "name": "string",
    "brand": null,
    "master_item_code": null,
    "product_family": null,
    "product_type": null,
    "product_type_id": null,
    "gender": "MALE",
    "age_class": null,
    "placement": null,
    "zone": null,
    "type": null,
    "category": null,
    "sleeve_type": null,
    "neckline": null,
    "closure_type": null,
    "fit_type": null,
    "length_type": null,
    "pattern": null,
    "materials": null,
    "colour": null,
    "season": null,
    "year": null,
    "style_code": null,
    "in_store_date": null,
    "theme": null,
    "brand_collection": null,
    "description": null,
    "back_description": null,
    "ecommerce_description": null,
    "brand_metadata": null,
    "cover_image_url": null,
    "back_image_url": null,
    "reference_images": [
        "string"
    ],
    "cover_image_media": null,
    "back_image_media": null,
    "reference_images_media": null,
    "data_image_urls": [
        "string"
    ],
    "public": true,
    "enabled": true,
    "archived": true,
    "demo": true,
    "is_filler": true,
    "owner_id": "fae3f180-6f6d-46ed-836f-1c3871269144",
    "organization_id": null,
    "shot_status": null,
    "shot_status_shooting_look_id": null,
    "integration_name": null,
    "exports_completed": null,
    "exports_total": null,
    "shots": [
        null
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "sku": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Sku"
        },
        "name": {
            "type": "string",
            "title": "Name"
        },
        "brand": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand"
        },
        "master_item_code": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Master Item Code"
        },
        "product_family": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Family"
        },
        "product_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Type"
        },
        "product_type_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Type Id"
        },
        "gender": {
            "$ref": "#/components/schemas/ProductGender"
        },
        "age_class": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/AgeClass"
                },
                {
                    "type": "null"
                }
            ]
        },
        "placement": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductPlacement"
                },
                {
                    "type": "null"
                }
            ]
        },
        "zone": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Zone"
        },
        "type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Type"
        },
        "category": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Category"
        },
        "sleeve_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Sleeve Type"
        },
        "neckline": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Neckline"
        },
        "closure_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Closure Type"
        },
        "fit_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Fit Type"
        },
        "length_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Length Type"
        },
        "pattern": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Pattern"
        },
        "materials": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Materials"
        },
        "colour": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Colour"
        },
        "season": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Season"
        },
        "year": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Year"
        },
        "style_code": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Style Code"
        },
        "in_store_date": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "In Store Date"
        },
        "theme": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Theme"
        },
        "brand_collection": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand Collection"
        },
        "description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "back_description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Back Description"
        },
        "ecommerce_description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Ecommerce Description"
        },
        "brand_metadata": {
            "anyOf": [
                {
                    "additionalProperties": true,
                    "type": "object"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand Metadata"
        },
        "cover_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Cover Image Url"
        },
        "back_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Back Image Url"
        },
        "reference_images": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Reference Images"
        },
        "cover_image_media": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourcePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "back_image_media": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourcePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "reference_images_media": {
            "anyOf": [
                {
                    "items": {
                        "$ref": "#/components/schemas/MediaResourcePublic"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Reference Images Media"
        },
        "data_image_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Data Image Urls",
            "default": []
        },
        "public": {
            "type": "boolean",
            "title": "Public"
        },
        "enabled": {
            "type": "boolean",
            "title": "Enabled"
        },
        "archived": {
            "type": "boolean",
            "title": "Archived"
        },
        "demo": {
            "type": "boolean",
            "title": "Demo"
        },
        "is_filler": {
            "type": "boolean",
            "title": "Is Filler"
        },
        "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id"
        },
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductShootingStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "shot_status_shooting_look_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shot Status Shooting Look Id"
        },
        "integration_name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Integration Name"
        },
        "exports_completed": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Exports Completed"
        },
        "exports_total": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Exports Total"
        },
        "shots": {
            "items": {},
            "type": "array",
            "title": "Shots",
            "default": []
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "name",
        "gender",
        "cover_image_url",
        "reference_images",
        "public",
        "enabled",
        "archived",
        "demo",
        "is_filler",
        "owner_id"
    ],
    "title": "ProductPublic"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

DELETE /api/v1/products/{id}

Delete Product

Description

Delete a product and all associated assets.

This includes: - Local image files (cover, data images) - LoRA model files on compute server - Training datasets on compute server - Generated images and related files

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
id path string No
organization_id query No

Responses

{
    "message": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "message": {
            "type": "string",
            "title": "Message"
        }
    },
    "type": "object",
    "required": [
        "message"
    ],
    "title": "Message"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/products/{product_id}/generations

Read Product Generations

Description

Retrieve generations for a product, ordered by creation date descending.

When organization_id is provided, returns generations belonging to that organization. Without organization_id, returns only personal generations.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
limit query integer 100 No
organization_id query No
product_id path string No
skip query integer 0 No

Responses

[
    {
        "id": "9cf54994-2ee6-4a3a-92e5-b26b398fd70b",
        "created_at": "2022-04-13T15:42:05.901Z",
        "updated_at": "2022-04-13T15:42:05.901Z",
        "batch_size": 0,
        "status": "PENDING",
        "negative_prompt": null,
        "subject_id": null,
        "product_id": null,
        "subject_image_url": null,
        "product_image_url": null,
        "product_lora_weight": 10.12,
        "subject_lora_weight": 10.12,
        "product2_id": null,
        "product2_image_url": null,
        "product2_lora_weight": 10.12,
        "style_id": null,
        "style_name": null,
        "width": 0,
        "height": 0,
        "steps": 0,
        "seed": 0,
        "refine": true,
        "revised": true,
        "scale_factor": null,
        "lighting": null,
        "framing": null,
        "perspective": null,
        "background": null,
        "tone": null,
        "pose": null,
        "generated_prompt": null,
        "extra_prompt": null,
        "predictions": [
            {
                "seed": 0,
                "status": "pending",
                "result_image_url": null,
                "result_video_url": null,
                "duration_seconds": null,
                "favourite": true,
                "error_message": null,
                "error_category": null,
                "id": "8f75c8db-2709-4233-93d5-ee7db197659e",
                "created_at": "2022-04-13T15:42:05.901Z",
                "updated_at": "2022-04-13T15:42:05.901Z",
                "generation_id": "b4427561-3520-435c-9dac-93bab9847413",
                "shot_type": null,
                "refines": [
                    {
                        "status": "pending",
                        "result_image_url": null,
                        "width": null,
                        "height": null,
                        "scale_factor": null,
                        "prompt": null,
                        "refine_model_id": null,
                        "error_message": null,
                        "error_category": null,
                        "refines_refine_id": null,
                        "id": "fba9c7c7-f9b8-4007-932a-00df219769ff",
                        "created_at": "2022-04-13T15:42:05.901Z",
                        "updated_at": "2022-04-13T15:42:05.901Z",
                        "prediction_id": "acdb62b9-619e-4045-b7fc-7cbbcf2be389",
                        "task_id": null,
                        "result_image_media": null
                    }
                ],
                "result_image_media": null,
                "result_video_media": null,
                "refined_image_url": null
            }
        ],
        "owner_id": "1a2217c6-aae9-4f4a-98f0-fae038add15a",
        "shot_id": null,
        "generation_type": "BASE",
        "generation_strategy": "GENERATE",
        "tool": null,
        "shot_type_id": null,
        "shot_type_string": null,
        "subject_description": null,
        "product_description": null,
        "product2_description": null,
        "style_description": null,
        "has_subject_lora": true,
        "has_product_lora": true,
        "has_product2_lora": true,
        "has_style_lora": true,
        "garment_placement_base_image_url": null,
        "reference_images_paths": [
            "string"
        ],
        "generative_models_id": null,
        "autogenerated": true,
        "shooting_look_id": null,
        "organization_id": null,
        "subject_image_media": null,
        "product_image_media": null,
        "product2_image_media": null,
        "garment_placement_base_image_media": null,
        "reference_images_media": null
    }
]
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "type": "array",
    "items": {
        "$ref": "#/components/schemas/GenerationPublic"
    },
    "title": "Response Read Product Generations"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

PATCH /api/v1/products/{id}/archived

Update Product Archive Status

Description

Update the archive status of a product.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
archived query boolean No
id path string No
organization_id query No

Responses

{
    "id": "d767a395-8a19-44ef-a60c-eb482f1eb93b",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "sku": null,
    "name": "string",
    "brand": null,
    "master_item_code": null,
    "product_family": null,
    "product_type": null,
    "product_type_id": null,
    "gender": "MALE",
    "age_class": null,
    "placement": null,
    "zone": null,
    "type": null,
    "category": null,
    "sleeve_type": null,
    "neckline": null,
    "closure_type": null,
    "fit_type": null,
    "length_type": null,
    "pattern": null,
    "materials": null,
    "colour": null,
    "season": null,
    "year": null,
    "style_code": null,
    "in_store_date": null,
    "theme": null,
    "brand_collection": null,
    "description": null,
    "back_description": null,
    "ecommerce_description": null,
    "brand_metadata": null,
    "cover_image_url": null,
    "back_image_url": null,
    "reference_images": [
        "string"
    ],
    "cover_image_media": null,
    "back_image_media": null,
    "reference_images_media": null,
    "data_image_urls": [
        "string"
    ],
    "public": true,
    "enabled": true,
    "archived": true,
    "demo": true,
    "is_filler": true,
    "owner_id": "b7a67549-c416-42a7-afb7-a8f56e35b222",
    "organization_id": null,
    "shot_status": null,
    "shot_status_shooting_look_id": null,
    "integration_name": null,
    "exports_completed": null,
    "exports_total": null,
    "shots": [
        null
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "sku": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Sku"
        },
        "name": {
            "type": "string",
            "title": "Name"
        },
        "brand": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand"
        },
        "master_item_code": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Master Item Code"
        },
        "product_family": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Family"
        },
        "product_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Type"
        },
        "product_type_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Type Id"
        },
        "gender": {
            "$ref": "#/components/schemas/ProductGender"
        },
        "age_class": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/AgeClass"
                },
                {
                    "type": "null"
                }
            ]
        },
        "placement": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductPlacement"
                },
                {
                    "type": "null"
                }
            ]
        },
        "zone": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Zone"
        },
        "type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Type"
        },
        "category": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Category"
        },
        "sleeve_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Sleeve Type"
        },
        "neckline": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Neckline"
        },
        "closure_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Closure Type"
        },
        "fit_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Fit Type"
        },
        "length_type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Length Type"
        },
        "pattern": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Pattern"
        },
        "materials": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Materials"
        },
        "colour": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Colour"
        },
        "season": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Season"
        },
        "year": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Year"
        },
        "style_code": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Style Code"
        },
        "in_store_date": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "In Store Date"
        },
        "theme": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Theme"
        },
        "brand_collection": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand Collection"
        },
        "description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "back_description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Back Description"
        },
        "ecommerce_description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Ecommerce Description"
        },
        "brand_metadata": {
            "anyOf": [
                {
                    "additionalProperties": true,
                    "type": "object"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand Metadata"
        },
        "cover_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Cover Image Url"
        },
        "back_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Back Image Url"
        },
        "reference_images": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Reference Images"
        },
        "cover_image_media": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourcePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "back_image_media": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourcePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "reference_images_media": {
            "anyOf": [
                {
                    "items": {
                        "$ref": "#/components/schemas/MediaResourcePublic"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Reference Images Media"
        },
        "data_image_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Data Image Urls",
            "default": []
        },
        "public": {
            "type": "boolean",
            "title": "Public"
        },
        "enabled": {
            "type": "boolean",
            "title": "Enabled"
        },
        "archived": {
            "type": "boolean",
            "title": "Archived"
        },
        "demo": {
            "type": "boolean",
            "title": "Demo"
        },
        "is_filler": {
            "type": "boolean",
            "title": "Is Filler"
        },
        "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id"
        },
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductShootingStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "shot_status_shooting_look_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shot Status Shooting Look Id"
        },
        "integration_name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Integration Name"
        },
        "exports_completed": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Exports Completed"
        },
        "exports_total": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Exports Total"
        },
        "shots": {
            "items": {},
            "type": "array",
            "title": "Shots",
            "default": []
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "name",
        "gender",
        "cover_image_url",
        "reference_images",
        "public",
        "enabled",
        "archived",
        "demo",
        "is_filler",
        "owner_id"
    ],
    "title": "ProductPublic"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

POST /api/v1/products/selected_shot/{product_id}

Set Selected Shot

Description

Set a prediction as the selected shot for a specific shot type for a product. If prediction_id is None, any existing selected shot will be removed.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
organization_id query No
product_id path string No

Request body

{
    "prediction_id": "123e4567-e89b-12d3-a456-426614174001",
    "product_id": "123e4567-e89b-12d3-a456-426614174000",
    "shot_type": "full-body"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "product_id": {
            "type": "string",
            "format": "uuid",
            "title": "Product Id",
            "description": "ID of the product"
        },
        "shot_type": {
            "type": "string",
            "title": "Shot Type",
            "description": "Type of shot (e.g. 'full-body', 'half-body-front')"
        },
        "prediction_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Prediction Id",
            "description": "ID of the prediction to set as favorite. If None, any existing favorite will be removed."
        }
    },
    "type": "object",
    "required": [
        "product_id",
        "shot_type"
    ],
    "title": "SelectedShotRequest",
    "example": {
        "prediction_id": "123e4567-e89b-12d3-a456-426614174001",
        "product_id": "123e4567-e89b-12d3-a456-426614174000",
        "shot_type": "full-body"
    }
}

Responses

{
    "organization_id": null,
    "owner_id": "a9c43a97-cdec-43ce-9c73-002378628c4d",
    "id": "f73794da-0e29-436d-9113-7d46f7f43430",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "sku": null,
    "name": "string",
    "brand": null,
    "master_item_code": null,
    "product_type_id": null,
    "gender": "MALE",
    "age_class": null,
    "type": null,
    "category": null,
    "sleeve_type": null,
    "neckline": null,
    "closure_type": null,
    "fit_type": null,
    "length_type": null,
    "pattern": null,
    "materials": null,
    "colour": null,
    "season": null,
    "year": null,
    "style_code": null,
    "in_store_date": null,
    "theme": null,
    "brand_collection": null,
    "description": null,
    "back_description": null,
    "ecommerce_description": null,
    "brand_metadata": null,
    "enabled": true,
    "archived": true,
    "public": true,
    "demo": true,
    "is_filler": true,
    "caption_task_id": null,
    "caption_status": null,
    "caption_retry_count": 0,
    "cover_image_url": null,
    "back_image_url": null,
    "reference_images": [
        "string"
    ],
    "selected_shots": {}
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id"
        },
        "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id"
        },
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "sku": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Sku"
        },
        "name": {
            "type": "string",
            "maxLength": 255,
            "title": "Name"
        },
        "brand": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 1000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand"
        },
        "master_item_code": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Master Item Code"
        },
        "product_type_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Type Id"
        },
        "gender": {
            "$ref": "#/components/schemas/ProductGender",
            "default": "UNISEX"
        },
        "age_class": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/AgeClass"
                },
                {
                    "type": "null"
                }
            ]
        },
        "type": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Type",
            "description": "DEPRECATED: Use product_type instead"
        },
        "category": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Category",
            "description": "DEPRECATED: Use product_type instead"
        },
        "sleeve_type": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Sleeve Type"
        },
        "neckline": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Neckline"
        },
        "closure_type": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Closure Type"
        },
        "fit_type": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Fit Type"
        },
        "length_type": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Length Type"
        },
        "pattern": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Pattern"
        },
        "materials": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 1000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Materials"
        },
        "colour": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Colour"
        },
        "season": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 100
                },
                {
                    "type": "null"
                }
            ],
            "title": "Season"
        },
        "year": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Year"
        },
        "style_code": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Style Code"
        },
        "in_store_date": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "In Store Date"
        },
        "theme": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Theme"
        },
        "brand_collection": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand Collection"
        },
        "description": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 3000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "back_description": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 1000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Back Description"
        },
        "ecommerce_description": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 5000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Ecommerce Description"
        },
        "brand_metadata": {
            "anyOf": [
                {
                    "additionalProperties": true,
                    "type": "object"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand Metadata"
        },
        "enabled": {
            "type": "boolean",
            "title": "Enabled",
            "default": true
        },
        "archived": {
            "type": "boolean",
            "title": "Archived",
            "default": false
        },
        "public": {
            "type": "boolean",
            "title": "Public",
            "default": false
        },
        "demo": {
            "type": "boolean",
            "title": "Demo",
            "default": false
        },
        "is_filler": {
            "type": "boolean",
            "title": "Is Filler",
            "default": false
        },
        "caption_task_id": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 36
                },
                {
                    "type": "null"
                }
            ],
            "title": "Caption Task Id"
        },
        "caption_status": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 20
                },
                {
                    "type": "null"
                }
            ],
            "title": "Caption Status"
        },
        "caption_retry_count": {
            "type": "integer",
            "title": "Caption Retry Count",
            "default": 0
        },
        "cover_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Cover Image Url"
        },
        "back_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Back Image Url"
        },
        "reference_images": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Reference Images"
        },
        "selected_shots": {
            "additionalProperties": true,
            "type": "object",
            "title": "Selected Shots"
        }
    },
    "type": "object",
    "required": [
        "owner_id",
        "name"
    ],
    "title": "Product",
    "description": "Product model representing physical products (garments, accessories, beauty items, etc.)\n\nThis model is organized into three main sections:\n1. Physical Product Attributes - describe the actual product\n2. Technical/Internal Fields - manage system state\n3. Media Fields - handle images and visual content"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/products/{product_id}/shots

Read Product Shots

Description

Get all shots for a specific product.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
limit query integer 100 No
organization_id query No
product_id path string No
shot_type query string No
skip query integer 0 No
status query No

Responses

{
    "data": [
        {
            "id": "81e22621-b653-49e0-bd3f-758d94adf980",
            "shooting_look_id": null,
            "shot_type": null,
            "pose_preset_id": null,
            "rework_available": 0,
            "rework_used": 0,
            "status": "PENDING",
            "current_revision_id": null,
            "revisions": [
                {
                    "id": "cf6c769c-3876-48d0-9df5-5d1568d3d27b",
                    "shot_id": "64b2e972-4266-4245-a352-d4bffa94abc6",
                    "version": 0,
                    "notes": null,
                    "shot_status": null,
                    "shot_revision_status": null,
                    "owner_id": null,
                    "owner": null,
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "previous_revision_id": null,
                    "images": [
                        {
                            "id": "81d7ad7c-84d2-4b83-885a-79f7348ed045",
                            "shot_revision_id": "bc104ce7-ffd0-4f8d-92bf-320513a1ff26",
                            "source_type": "PREDICTION",
                            "prediction_id": null,
                            "refine_id": null,
                            "image_url": null,
                            "sketch_image_url": null,
                            "image_media": null,
                            "sketch_image_media": null,
                            "notes": null,
                            "autogenerated": true,
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "effective_image_url": null
                        }
                    ],
                    "display_name": "string",
                    "effective_image_url": null,
                    "push_records": [
                        {
                            "id": "37627f3b-2837-4fc0-8420-b11c149d1262",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "integration_id": "1ff3bd9e-7107-4614-b507-b50489acd819",
                            "push_status": "PENDING",
                            "pushed_at": null,
                            "completed_at": null,
                            "error_message": null
                        }
                    ],
                    "push_status": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "count": 0
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/ShotPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShotsPublic",
    "description": "Collection of ShotPublic objects"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/products/{product_id}/shooting-looks

Read Product Shooting Looks

Description

Get all shooting looks for a specific product.

Retrieves all ShootingLooks where the product is the main subject. Does not include looks where the product only appears in the outfit.

Returns looks with all their shots and related data.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
limit query integer 100 No
organization_id query No
product_id path string No
skip query integer 0 No

Responses

{
    "data": [
        {
            "id": "449b552a-e8b4-4b02-bf9f-1970251962d0",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "shooting_id": "374de975-f15f-4fdb-a586-f188c51092be",
            "subject_id": null,
            "subject_name": null,
            "product_id": null,
            "product_name": null,
            "product_sku": null,
            "product_cover_image_url": null,
            "style_id": null,
            "resolution_preset_id": null,
            "width": null,
            "height": null,
            "background_preset_id": null,
            "set_design_id": null,
            "set_design": null,
            "file_format": "string",
            "status": "DRAFT",
            "shot_status": null,
            "assignee_id": null,
            "assignee": null,
            "pose_presets": [
                {
                    "id": "474dd763-abb9-4113-9e0d-51dae391cf36",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "name": "string",
                    "prompt": null,
                    "shot_type_id": "3e5422e4-dbea-45ab-ad6a-9b021e286ab5",
                    "owner_id": "ebcbee31-1c3f-4805-b161-7147598d9327",
                    "organization_id": null,
                    "pose_image_url": null,
                    "pose_image_media": null
                }
            ],
            "shots": [
                {
                    "id": "3bf3e456-ca70-41ec-9dd8-05d5167b629d",
                    "shooting_look_id": null,
                    "shot_type": null,
                    "pose_preset_id": null,
                    "rework_available": 0,
                    "rework_used": 0,
                    "status": "PENDING",
                    "current_revision_id": null,
                    "revisions": [
                        {
                            "id": "5835217a-89f7-4b81-b19e-b968119720dd",
                            "shot_id": "571a358b-c5ae-4afa-8178-ab4c2d0c3fa8",
                            "version": 0,
                            "notes": null,
                            "shot_status": null,
                            "shot_revision_status": null,
                            "owner_id": null,
                            "owner": null,
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "previous_revision_id": null,
                            "images": [
                                {
                                    "id": "e8bbb791-7bc5-4e4c-99b6-64de208ba741",
                                    "shot_revision_id": "2a3ca44c-e1b7-4938-847f-b51f7eb5a1a2",
                                    "source_type": "PREDICTION",
                                    "prediction_id": null,
                                    "refine_id": null,
                                    "image_url": null,
                                    "sketch_image_url": null,
                                    "image_media": null,
                                    "sketch_image_media": null,
                                    "notes": null,
                                    "autogenerated": true,
                                    "created_at": "2022-04-13T15:42:05.901Z",
                                    "updated_at": "2022-04-13T15:42:05.901Z",
                                    "effective_image_url": null
                                }
                            ],
                            "display_name": "string",
                            "effective_image_url": null,
                            "push_records": [
                                {
                                    "id": "5ff8e22f-4307-4e40-a618-46ff386b6b43",
                                    "created_at": "2022-04-13T15:42:05.901Z",
                                    "updated_at": "2022-04-13T15:42:05.901Z",
                                    "integration_id": "fa498537-370e-46dd-a71a-a7ff07df44ef",
                                    "push_status": "PENDING",
                                    "pushed_at": null,
                                    "completed_at": null,
                                    "error_message": null
                                }
                            ],
                            "push_status": null
                        }
                    ],
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z"
                }
            ],
            "outfit_proposals": [
                {
                    "id": "cb533f44-20d6-45df-b48d-5b2cdfebeeb8",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "shooting_look_id": "51d27186-3aae-43e4-8049-9643b3c1d0c7",
                    "outfit_ref_imgs_urls": [
                        "string"
                    ],
                    "outfit_ref_images_media": null,
                    "outfit_instruction": null,
                    "outfit_product_ids": [
                        "88172fb2-d306-4036-b135-8e8bb2d2804c"
                    ],
                    "outfit_products": [
                        {
                            "id": "08511fe9-d98b-4e40-b144-fd0b3c69c75e",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "sku": null,
                            "name": "string",
                            "brand": null,
                            "master_item_code": null,
                            "product_family": null,
                            "product_type": null,
                            "product_type_id": null,
                            "gender": "MALE",
                            "age_class": null,
                            "placement": null,
                            "zone": null,
                            "type": null,
                            "category": null,
                            "sleeve_type": null,
                            "neckline": null,
                            "closure_type": null,
                            "fit_type": null,
                            "length_type": null,
                            "pattern": null,
                            "materials": null,
                            "colour": null,
                            "season": null,
                            "year": null,
                            "style_code": null,
                            "in_store_date": null,
                            "theme": null,
                            "brand_collection": null,
                            "description": null,
                            "back_description": null,
                            "ecommerce_description": null,
                            "brand_metadata": null,
                            "cover_image_url": null,
                            "back_image_url": null,
                            "reference_images": [
                                "string"
                            ],
                            "cover_image_media": null,
                            "back_image_media": null,
                            "reference_images_media": null,
                            "data_image_urls": [
                                "string"
                            ],
                            "public": true,
                            "enabled": true,
                            "archived": true,
                            "demo": true,
                            "is_filler": true,
                            "owner_id": "584f79d6-d9fc-4d1c-bc1d-a3833d641937",
                            "organization_id": null,
                            "shot_status": null,
                            "shot_status_shooting_look_id": null,
                            "integration_name": null,
                            "exports_completed": null,
                            "exports_total": null,
                            "shots": [
                                null
                            ]
                        }
                    ],
                    "generation_status": null,
                    "generation_error": null,
                    "retry_count": 0
                }
            ],
            "outfit_id": null,
            "outfit": null,
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_instruction": null,
            "outfit_product_ids": [
                "8bc55523-8091-4c05-aefe-8080282ce841"
            ]
        }
    ],
    "count": 0
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/ShootingLookPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShootingLooksPublic",
    "description": "Response model for paginated list of ShootingLooks."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/products/{product_id}/shooting-looks-summary

Read Product Shooting Looks Summary

Description

Lightweight version of read_product_shooting_looks.

Returns look-level data (product name, sku, cover image, outfit info, shot statuses with push status) without loading full revisions, images, or prediction/refine data.

When organization_id query param is provided, validates membership and checks access. Without organization_id, membership is resolved automatically if the product belongs to an organization the user is a member of.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
limit query integer 100 No
organization_id query No
product_id path string No
skip query integer 0 No

Responses

{
    "data": [
        {
            "id": "1d900a7d-8cad-4fc1-a78e-54a348bdecf2",
            "shooting_id": "79357706-0647-407d-b9dd-56a62e92f801",
            "product_id": null,
            "product_name": null,
            "product_sku": null,
            "product_cover_image_url": null,
            "status": "DRAFT",
            "shot_status": null,
            "assignee_id": null,
            "assignee": null,
            "outfit_products_count": 0,
            "outfit_generation_status": null,
            "shots": [
                {
                    "id": "3eb9fca5-23f2-472f-94b3-d450c368bb3f",
                    "shot_type": null,
                    "status": "PENDING",
                    "current_revision_id": null,
                    "push_status": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "count": 0
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/ShootingLookSummary"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShootingLooksSummaryPublic",
    "description": "Response model for paginated list of lightweight ShootingLook summaries."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

GET /api/v1/products/{product_id}/related-shooting-looks

Read Product Related Shooting Looks

Description

Get all shooting looks where a product appears (either as main product or in outfit).

This includes looks where: - The product is the main product (product_id) - The product appears in the outfit (outfit_product_ids)

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
limit query integer 100 No
organization_id query No
product_id path string No
skip query integer 0 No

Responses

{
    "data": [
        {
            "id": "6c2e1f4c-3657-4295-a926-2824c33a3b71",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "shooting_id": "1b61ab92-5b51-43aa-aa53-0e798d326d60",
            "subject_id": null,
            "subject_name": null,
            "product_id": null,
            "product_name": null,
            "product_sku": null,
            "product_cover_image_url": null,
            "style_id": null,
            "resolution_preset_id": null,
            "width": null,
            "height": null,
            "background_preset_id": null,
            "set_design_id": null,
            "set_design": null,
            "file_format": "string",
            "status": "DRAFT",
            "shot_status": null,
            "assignee_id": null,
            "assignee": null,
            "pose_presets": [
                {
                    "id": "778ce761-ba06-4f74-979d-a0b7e5915cfd",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "name": "string",
                    "prompt": null,
                    "shot_type_id": "6099a931-3a55-46a8-ae99-99777cff7ed3",
                    "owner_id": "448f4a70-356e-4185-98be-2b6fd544bd02",
                    "organization_id": null,
                    "pose_image_url": null,
                    "pose_image_media": null
                }
            ],
            "shots": [
                {
                    "id": "8f6a2677-0684-4da7-8fbf-ec9f23002727",
                    "shooting_look_id": null,
                    "shot_type": null,
                    "pose_preset_id": null,
                    "rework_available": 0,
                    "rework_used": 0,
                    "status": "PENDING",
                    "current_revision_id": null,
                    "revisions": [
                        {
                            "id": "ca0446c2-3e52-4c36-ba7d-0e22ec35595b",
                            "shot_id": "c94498b6-5d67-487f-a77c-5de848106a04",
                            "version": 0,
                            "notes": null,
                            "shot_status": null,
                            "shot_revision_status": null,
                            "owner_id": null,
                            "owner": null,
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "previous_revision_id": null,
                            "images": [
                                {
                                    "id": "839f392c-740e-4637-997c-255b883e81e3",
                                    "shot_revision_id": "dca3c6c1-7dd9-4c1d-8bf9-f5fffbce32ae",
                                    "source_type": "PREDICTION",
                                    "prediction_id": null,
                                    "refine_id": null,
                                    "image_url": null,
                                    "sketch_image_url": null,
                                    "image_media": null,
                                    "sketch_image_media": null,
                                    "notes": null,
                                    "autogenerated": true,
                                    "created_at": "2022-04-13T15:42:05.901Z",
                                    "updated_at": "2022-04-13T15:42:05.901Z",
                                    "effective_image_url": null
                                }
                            ],
                            "display_name": "string",
                            "effective_image_url": null,
                            "push_records": [
                                {
                                    "id": "fb9983b0-6887-4c4b-bbaa-2b5df62a054c",
                                    "created_at": "2022-04-13T15:42:05.901Z",
                                    "updated_at": "2022-04-13T15:42:05.901Z",
                                    "integration_id": "a6307364-da58-46a5-a23b-d508726fb57b",
                                    "push_status": "PENDING",
                                    "pushed_at": null,
                                    "completed_at": null,
                                    "error_message": null
                                }
                            ],
                            "push_status": null
                        }
                    ],
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z"
                }
            ],
            "outfit_proposals": [
                {
                    "id": "679e982a-185b-43fc-a2d7-148d544d2443",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "shooting_look_id": "1e7cdc6e-1c3a-4c72-ad6c-e8d5f6bcbce7",
                    "outfit_ref_imgs_urls": [
                        "string"
                    ],
                    "outfit_ref_images_media": null,
                    "outfit_instruction": null,
                    "outfit_product_ids": [
                        "6b19b555-b8b0-4beb-a44a-11e82e40d7ac"
                    ],
                    "outfit_products": [
                        {
                            "id": "8ada1bb6-8f6d-4c26-8df2-692a7b7d114d",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "sku": null,
                            "name": "string",
                            "brand": null,
                            "master_item_code": null,
                            "product_family": null,
                            "product_type": null,
                            "product_type_id": null,
                            "gender": "MALE",
                            "age_class": null,
                            "placement": null,
                            "zone": null,
                            "type": null,
                            "category": null,
                            "sleeve_type": null,
                            "neckline": null,
                            "closure_type": null,
                            "fit_type": null,
                            "length_type": null,
                            "pattern": null,
                            "materials": null,
                            "colour": null,
                            "season": null,
                            "year": null,
                            "style_code": null,
                            "in_store_date": null,
                            "theme": null,
                            "brand_collection": null,
                            "description": null,
                            "back_description": null,
                            "ecommerce_description": null,
                            "brand_metadata": null,
                            "cover_image_url": null,
                            "back_image_url": null,
                            "reference_images": [
                                "string"
                            ],
                            "cover_image_media": null,
                            "back_image_media": null,
                            "reference_images_media": null,
                            "data_image_urls": [
                                "string"
                            ],
                            "public": true,
                            "enabled": true,
                            "archived": true,
                            "demo": true,
                            "is_filler": true,
                            "owner_id": "6ed4f6f0-1c46-4be4-a38b-e54e3f13bed0",
                            "organization_id": null,
                            "shot_status": null,
                            "shot_status_shooting_look_id": null,
                            "integration_name": null,
                            "exports_completed": null,
                            "exports_total": null,
                            "shots": [
                                null
                            ]
                        }
                    ],
                    "generation_status": null,
                    "generation_error": null,
                    "retry_count": 0
                }
            ],
            "outfit_id": null,
            "outfit": null,
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_instruction": null,
            "outfit_product_ids": [
                "aa8a4ea3-0aa3-47cb-9975-95946e1734d4"
            ]
        }
    ],
    "count": 0
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/ShootingLookPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShootingLooksPublic",
    "description": "Response model for paginated list of ShootingLooks."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

POST /api/v1/products/export-approved-shots/async

Start Export Approved Shots Async

Description

Start an async export of approved shot images.

Returns a task ID that can be polled for status. When complete, the task will contain a download URL.

This endpoint is recommended for large exports as it: - Doesn't timeout for large datasets - Provides progress tracking - Allows the user to navigate away and return later - Runs in a separate Celery worker process (non-blocking)

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
organization_id query No

Request body

{
    "product_ids": null,
    "product_filters": null,
    "shooting_id": null,
    "shooting_look_id": null
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "properties": {
        "product_ids": {
            "anyOf": [
                {
                    "items": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Ids",
            "description": "List of product IDs to export approved shots from"
        },
        "product_filters": {
            "anyOf": [
                {
                    "additionalProperties": true,
                    "type": "object"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Filters",
            "description": "Product filters matching the read_products endpoint (archived, enabled, brand, brand_collection, demo, search, shooting_id, shot_statuses, gender, product_type, sort_by, sort_order, skip, limit)"
        },
        "shooting_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Id",
            "description": "Optional shooting ID to filter shots. Works with both product_ids and product_filters."
        },
        "shooting_look_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Look Id",
            "description": "ShootingLook ID to export approved shots from. Mutually exclusive with product_ids and product_filters."
        }
    },
    "type": "object",
    "title": "ExportApprovedShotsRequest",
    "description": "Request model for exporting approved shot images as ZIP."
}

Responses

{
    "created_at": "2025-01-01T00:00:00Z",
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "owner_id": "123e4567-e89b-12d3-a456-426614174001",
    "processed_items": 45,
    "progress": 45,
    "started_at": "2025-01-01T00:00:00Z",
    "status": "PROCESSING",
    "task_type": "APPROVED_SHOTS",
    "total_items": 100,
    "updated_at": "2025-01-01T00:00:00Z"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id"
        },
        "task_type": {
            "$ref": "#/components/schemas/ExportTaskType"
        },
        "status": {
            "$ref": "#/components/schemas/TaskStatus-Output"
        },
        "progress": {
            "type": "integer",
            "title": "Progress"
        },
        "total_items": {
            "type": "integer",
            "title": "Total Items"
        },
        "processed_items": {
            "type": "integer",
            "title": "Processed Items"
        },
        "download_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Download Url"
        },
        "error_message": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Error Message"
        },
        "started_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Started At"
        },
        "completed_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Completed At"
        },
        "expires_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Expires At"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        }
    },
    "type": "object",
    "required": [
        "id",
        "owner_id",
        "task_type",
        "status",
        "progress",
        "total_items",
        "processed_items",
        "created_at",
        "updated_at"
    ],
    "title": "ExportTaskPublic",
    "description": "Public schema for export task responses.",
    "example": {
        "created_at": "2025-01-01T00:00:00Z",
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "owner_id": "123e4567-e89b-12d3-a456-426614174001",
        "processed_items": 45,
        "progress": 45,
        "started_at": "2025-01-01T00:00:00Z",
        "status": "PROCESSING",
        "task_type": "APPROVED_SHOTS",
        "total_items": 100,
        "updated_at": "2025-01-01T00:00:00Z"
    }
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

brands


GET /api/v1/brands/

Read Brands

Description

Get all distinct brand names from products.

  • Admins: Returns all brands from all products
  • Regular users: Returns brands only from their own products

The brands are returned in alphabetical order, excluding null or empty values.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
organization_id query No

Responses

{
    "data": [
        "string"
    ],
    "count": 0
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "data": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "BrandsPublic",
    "description": "Public schema for brands list response."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

brand-collections


GET /api/v1/brand-collections/

Read Brand Collections

Description

Get all distinct brand collection names from products.

  • Admins: Returns all brand collections from all products
  • Regular users: Returns brand collections only from their own products

The brand collections are returned in alphabetical order, excluding null or empty values.

Optionally filter by brand name to get brand collections for a specific brand only.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
brand query No Filter by brand name
organization_id query No

Responses

{
    "data": [
        "string"
    ],
    "count": 0
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "data": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "BrandCollectionsPublic",
    "description": "Public schema for brand collections list response."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

seasons


GET /api/v1/seasons/

Read Seasons

Description

Get all distinct season names from products.

  • Admins: Returns all seasons from all products
  • Regular users: Returns seasons only from their own products

The seasons are returned in alphabetical order, excluding null or empty values.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
organization_id query No

Responses

{
    "data": [
        "string"
    ],
    "count": 0
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "data": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "SeasonsPublic",
    "description": "Public schema for seasons list response."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

years


GET /api/v1/years/

Read Years

Description

Get all distinct years from products.

  • Admins: Returns all years from all products
  • Regular users: Returns years only from their own products

The years are returned in descending order (newest first), excluding null values.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No

Responses

{
    "data": [
        0
    ],
    "count": 0
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "data": {
            "items": {
                "type": "integer"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "YearsPublic",
    "description": "Public schema for years list response."
}

Schemas

AgeClass

Type: string

app__models__base_task__TaskStatus

Type: string

BrandCollectionsPublic

Name Type Description
count integer
data Array<string>

BrandsPublic

Name Type Description
count integer
data Array<string>

DefaultShotTypes

Type: string

ErrorCategory-Output

Type: string

ExportApprovedShotsRequest

Name Type Description
product_filters Product filters matching the read_products endpoint (archived, enabled, brand, brand_collection, demo, search, shooting_id, shot_statuses, gender, product_type, sort_by, sort_order, skip, limit)
product_ids List of product IDs to export approved shots from
shooting_id Optional shooting ID to filter shots. Works with both product_ids and product_filters.
shooting_look_id ShootingLook ID to export approved shots from. Mutually exclusive with product_ids and product_filters.

ExportTaskPublic

Name Type Description
completed_at
created_at string(date-time)
download_url
error_message
expires_at
id string(uuid)
owner_id string(uuid)
processed_items integer
progress integer
started_at
status TaskStatus-Output
task_type ExportTaskType
total_items integer
updated_at string(date-time)

ExportTasksPublic

Name Type Description
count integer
data Array<ExportTaskPublic>

ExportTaskType

Type: string

ExternalImagePushPublic

Name Type Description
completed_at
created_at string(date-time)
error_message
id string(uuid)
integration_id string(uuid)
push_status PushStatus
pushed_at
updated_at string(date-time)

GenerationPublic

Name Type Description
autogenerated boolean
background
batch_size integer
created_at string(date-time)
extra_prompt
framing
garment_placement_base_image_media
garment_placement_base_image_url
generated_prompt
generation_strategy GenerationStrategy
generation_type GenerationType
generative_models_id
has_product2_lora boolean
has_product_lora boolean
has_style_lora boolean
has_subject_lora boolean
height integer
id string(uuid)
lighting
negative_prompt
organization_id
owner_id string(uuid)
perspective
pose
predictions Array<PredictionPublic>
product2_description
product2_id
product2_image_media
product2_image_url
product2_lora_weight number
product_description
product_id
product_image_media
product_image_url
product_lora_weight number
reference_images_media
reference_images_paths Array<string>
refine boolean
revised boolean
scale_factor
seed integer
shooting_look_id
shot_id
shot_type_id
shot_type_string
status GenerationStatus
steps integer
style_description
style_id
style_name
subject_description
subject_id
subject_image_media
subject_image_url
subject_lora_weight number
tone
tool
updated_at string(date-time)
width integer

GenerationStatus

Type: string

GenerationStrategy

Type: string

GenerationTool

Type: string

GenerationType

Type: string

HTTPValidationError

Name Type Description
detail Array<ValidationError>

MediaInput

Name Type Description
alt_text
caption
color_profile
dominant_color
duration
height
media_resource_id
protected boolean
url
width

MediaResourcePublic

Name Type Description
alt_text
aspect_ratio
caption
color_profile
content_hash string
created_at string(date-time)
dominant_color
duration
extension string
file_size integer
height
id string(uuid)
orientation
protected boolean
resource_type MediaResourceType
url string
width

MediaResourceType

Type: string

Message

Name Type Description
message string

OutfitGenerationStatus

Type: string

PosePresetPublic

Name Type Description
created_at string(date-time)
id string(uuid)
name string
organization_id
owner_id string(uuid)
pose_image_media
pose_image_url
prompt
shot_type_id string(uuid)
updated_at string(date-time)

PredictionPublic

Name Type Description
created_at string(date-time)
duration_seconds
error_category
error_message
favourite boolean
generation_id string(uuid)
id string(uuid)
refined_image_url Computed field for backward compatibility. Returns the most recent successful refine's result_image_url.
refines Array<RefinePublic>
result_image_media
result_image_url
result_video_media
result_video_url
seed integer
shot_type
status PredictionStatus
updated_at string(date-time)

PredictionStatus

Type: string

Product

Name Type Description
age_class
archived boolean
back_description
back_image_url
brand
brand_collection
brand_metadata
caption_retry_count integer
caption_status
caption_task_id
category DEPRECATED: Use product_type instead
closure_type
colour
cover_image_url
created_at string(date-time)
demo boolean
description
ecommerce_description
enabled boolean
fit_type
gender ProductGender
id string(uuid)
in_store_date
is_filler boolean
length_type
master_item_code
materials
name string
neckline
organization_id
owner_id string(uuid)
pattern
product_type_id
public boolean
reference_images Array<string>
season
selected_shots
sku
sleeve_type
style_code
theme
type DEPRECATED: Use product_type instead
updated_at string(date-time)
year

ProductCreate

Name Type Description
age_class
back_description
back_image URL, base64 string, or MediaInput for back view image (optional)
brand
brand_collection
brand_metadata
category
closure_type
colour
cover_image URL, base64 string, or MediaInput for cover image
data_images DEPRECATED: Use reference_images instead
description
ecommerce_description
fit_type
gender
in_store_date
is_filler Mark as filler product. Auto-detected from SKU if not provided.
length_type
master_item_code
materials
name string
neckline
organization_id Organization this product belongs to
pattern
product_type_id
public boolean
reference_images List of reference image URLs, base64 strings, or MediaInputs
season
sku
sleeve_type
style_code
theme
type
year

ProductGender

Type: string

ProductPlacement

Type: string

ProductPublic

Name Type Description
age_class
archived boolean
back_description
back_image_media
back_image_url
brand
brand_collection
brand_metadata
category
closure_type
colour
cover_image_media
cover_image_url
created_at string(date-time)
data_image_urls Array<string>
demo boolean
description
ecommerce_description
enabled boolean
exports_completed
exports_total
fit_type
gender ProductGender
id string(uuid)
in_store_date
integration_name
is_filler boolean
length_type
master_item_code
materials
name string
neckline
organization_id
owner_id string(uuid)
pattern
placement
product_family
product_type
product_type_id
public boolean
reference_images Array<string>
reference_images_media
season
shot_status
shot_status_shooting_look_id
shots Array<>
sku
sleeve_type
style_code
theme
type
updated_at string(date-time)
year
zone

ProductShootingStatus

Type: string

ProductsPublic

Name Type Description
count integer
created_at string(date-time)
data Array<ProductPublic>
id string(uuid)
updated_at string(date-time)

ProductUpdate

Name Type Description
age_class
back_description
back_image URL, base64 string, or MediaInput for back view image
brand
brand_collection
brand_metadata
category
closure_type
colour
cover_image URL, base64 string, or MediaInput for cover image
data_images DEPRECATED: Use reference_images instead
description
ecommerce_description
fit_type
gender
in_store_date
is_filler Mark as filler product. Auto-detected from SKU if not provided.
length_type
master_item_code
materials
name
neckline
organization_id Organization to transfer this product to
pattern
product_type_id
public
reference_images List of reference image URLs, base64 strings, or MediaInputs to update
season
sku
sleeve_type
style_code
theme
type
year

PushStatus

Type: string

RefinePublic

Name Type Description
created_at string(date-time)
error_category
error_message
height
id string(uuid)
prediction_id string(uuid)
prompt
refine_model_id
refines_refine_id
result_image_media
result_image_url
scale_factor
status RefineStatus
task_id
updated_at string(date-time)
width

RefineStatus

Type: string

RevisionSource

Type: string

SeasonsPublic

Name Type Description
count integer
data Array<string>

SelectedShotRequest

Name Type Description
created_at string(date-time)
id string(uuid)
prediction_id ID of the prediction to set as favorite. If None, any existing favorite will be removed.
product_id string(uuid) ID of the product
shot_type string Type of shot (e.g. 'full-body', 'half-body-front')
updated_at string(date-time)

SetBaseImagePublic

Name Type Description
created_at string(date-time)
id string(uuid)
image_media
image_url
shot_type_id string(uuid)
subject_id string(uuid)
updated_at string(date-time)

SetDesignPublic

Name Type Description
background_preset_id
base_images Array<SetBaseImagePublic>
created_at string(date-time)
description
id string(uuid)
name string
organization_id
owner_id string(uuid)
reference_images Array<SetReferenceImagePublic>
subject_portraits Array<SubjectPortraitPublic>
updated_at string(date-time)

SetReferenceImagePublic

Name Type Description
created_at string(date-time)
id string(uuid)
image_media
image_url
label
shot_type_id string(uuid)
updated_at string(date-time)

ShootingLookOutfitPublic

Name Type Description
created_at string(date-time)
generation_error
generation_status
id string(uuid)
outfit_instruction
outfit_product_ids Array<string(uuid)>
outfit_products Array<ProductPublic>
outfit_ref_images_media
outfit_ref_imgs_urls Array<string>
retry_count integer
shooting_look_id string(uuid)
updated_at string(date-time)

ShootingLookPublic

Name Type Description
assignee
assignee_id
background_preset_id
created_at string(date-time)
file_format string
height
id string(uuid)
outfit
outfit_id
outfit_instruction Get outfit instruction from the selected outfit.
outfit_product_ids Array<string(uuid)> Get outfit product IDs from the selected outfit (supports both storage mechanisms).
outfit_proposals Array<ShootingLookOutfitPublic>
outfit_ref_imgs_urls Array<string> Get outfit reference image URLs from the selected outfit.
pose_presets Array<PosePresetPublic>
product_cover_image_url
product_id
product_name
product_sku
resolution_preset_id
set_design
set_design_id
shooting_id string(uuid)
shot_status
shots Array<ShotPublic>
status ShootingLookStatus
style_id
subject_id
subject_name
updated_at string(date-time)
width

ShootingLooksPublic

Name Type Description
count integer
data Array<ShootingLookPublic>

ShootingLooksSummaryPublic

Name Type Description
count integer
data Array<ShootingLookSummary>

ShootingLookStatus

Type: string

ShootingLookSummary

Name Type Description
assignee
assignee_id
created_at string(date-time)
id string(uuid)
outfit_generation_status
outfit_products_count integer
product_cover_image_url
product_id
product_name
product_sku
shooting_id string(uuid)
shot_status
shots Array<ShotSummary>
status ShootingLookStatus
updated_at string(date-time)

ShotPublic

Name Type Description
created_at string(date-time)
current_revision_id
id string(uuid)
pose_preset_id
revisions Array<ShotRevisionPublic>
rework_available integer
rework_used integer
shooting_look_id
shot_type
status ShotStatus
updated_at string(date-time)

ShotRevisionImagePublic

Name Type Description
autogenerated boolean
created_at string(date-time)
effective_image_url
id string(uuid)
image_media
image_url
notes
prediction_id
refine_id
shot_revision_id string(uuid)
sketch_image_media
sketch_image_url
source_type RevisionSource
updated_at string(date-time)

ShotRevisionPublic

Name Type Description
created_at string(date-time)
display_name string
effective_image_url
id string(uuid)
images Array<ShotRevisionImagePublic>
notes
owner
owner_id
previous_revision_id
push_records Array<ExternalImagePushPublic>
push_status Aggregate push status across all integrations. Returns: None (no pushes), PENDING, IN_PROGRESS, AWAITING_CONFIRMATION, COMPLETED, or FAILED Priority: FAILED > IN_PROGRESS > AWAITING_CONFIRMATION > PENDING > COMPLETED
shot_id string(uuid)
shot_revision_status
shot_status ShotStatus
updated_at string(date-time)
version integer

ShotRevisionStatus

Type: string

ShotsPublic

Name Type Description
count integer
data Array<ShotPublic>

ShotStatus

Type: string

ShotStatusFilter

Type: string

ShotSummary

Name Type Description
current_revision_id
id string(uuid)
push_status
shot_type
status ShotStatus

ShotTypeFraming

Type: string

ShotTypePublic

Name Type Description
core_focus boolean
created_at string(date-time)
default_shot_type
file_naming_convention
framing ShotTypeFraming
id string(uuid)
margins
name string
organization_id
owner_id
prompt
prompt_builder_section
public boolean
reference_image
reference_image_url
shot_type_prompt_instruction
shot_type_ref_image_url
updated_at string(date-time)
view_angle ViewAngle

SubjectPortraitPublic

Name Type Description
created_at string(date-time)
id string(uuid)
image_media
subject_id string(uuid)
updated_at string(date-time)

TaskStatus-Output

Type: string

UserSummary

Name Type Description
email string()
full_name
id string(uuid)

ValidationError

Name Type Description
ctx
input
loc Array<>
msg string
type string

ViewAngle

Type: string

YearsPublic

Name Type Description
count integer
data Array<integer>

Security schemes

Name Type Scheme Description
OAuth2PasswordBearer oauth2