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
}
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
]
}
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"
}
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
}
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"
}
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
}
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."
}
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"
}
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"
}
}
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"
}
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"
}
}
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
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
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
]
}
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"
}
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
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
]
}
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"
}
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
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
}
]
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
]
}
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"
}
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"
}
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": {}
}
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"
}
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
}
Schema of the response body
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
}
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."
}
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
}
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."
}
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
}
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."
}
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
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"
}
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"
}
}
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
Schema of the response body
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
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."
}
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
Schema of the response body
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
Schema of the response body
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(email) | |
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 |