{
    "_flux_family_platform": {
        "_comment": "Shared platform config for all BFL FLUX models",
        "bfl": {
            "name": "Black Forest Labs",
            "type": "direct",
            "sdk": null,
            "dispatch": "http_poll",
            "secret_id": "flux_pro",
            "auth_header": "x-key",
            "poll_url_source": "response",
            "poll_url_path": "polling_url",
            "poll_fallback_template": "https://api.bfl.ai/v1/get_result?id={task_id}",
            "poll_interval_seconds": 2,
            "max_poll_attempts": 60
        }
    },
    "_google_vertex_platform": {
        "_comment": "Shared platform config for Google Vertex AI models",
        "google_vertex": {
            "name": "Google Vertex AI",
            "type": "direct",
            "sdk": null,
            "dispatch": "http_json",
            "auth_method": "service_account_oauth",
            "service_account_file": "./eternal-lodge-420619-4aa473869a73.json",
            "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
            ],
            "project_id": "eternal-lodge-420619",
            "endpoint_template": "https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/publishers/google/models/{model_version}:predict"
        }
    },
    "_gpt_image_platform": {
        "_comment": "Shared platform config for OpenAI image models",
        "openai": {
            "name": "OpenAI",
            "type": "direct",
            "sdk": "openai",
            "dispatch": "sdk_call",
            "secret_id": "open_ai",
            "auth_method": "client_constructor"
        }
    },
    "_leonardo_platform": {
        "_comment": "Shared platform config for Leonardo AI models",
        "leonardo": {
            "name": "Leonardo AI",
            "type": "direct",
            "sdk": null,
            "dispatch": "http_poll",
            "secret_id": "leonardo",
            "auth_header": "authorization",
            "auth_prefix": "Bearer",
            "poll_interval_seconds": 2,
            "max_poll_attempts": 60
        }
    },
    "_runware_platform": {
        "_comment": "Shared platform config for Runware.ai models",
        "runware": {
            "name": "Runware",
            "type": "byok",
            "dispatch": "runware_http",
            "secret_id": "runware",
            "env_var": "RUNWARE_API_KEY",
            "auth_header": "authorization",
            "auth_prefix": "Bearer",
            "submit_url": "https://api.runware.ai/v1",
            "default_task_type": "imageInference",
            "task_type_map": {
                "bgremove": "removeBackground",
                "texttoimage": "imageInference",
                "edit": "imageInference",
                "upscale": "upscale"
            },
            "response": {
                "images_path": "data",
                "image_url_key": "imageURL",
                "response_format": "url"
            }
        }
    },
    "amazon_nova": {
        "name": "Amazon Nova Canvas v1",
        "shortname": "Amazon Nova",
        "vendor": "Amazon",
        "family": "Nova",
        "deprecated": false,
        "prompt_guide_url": "https://docs.aws.amazon.com/nova/latest/userguide/prompting-image-generation.html",
        "docs_url": "https://docs.aws.amazon.com/nova/latest/userguide/image-generation.html",
        "platforms": {
            "bedrock": {
                "name": "Amazon Nova Canvas",
                "type": "hosted",
                "sdk": "boto3",
                "dispatch": "sdk_sync",
                "model_id": "amazon.nova-canvas-v1:0",
                "method": "invoke_model"
            }
        },
        "constraints": {},
        "model_specific_fields": {
            "cfg_scale_key": "prompt_strength_2",
            "cfg_scale_default": 6.5,
            "width_key": "output_width_6",
            "height_key": "output_height_6"
        },
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "texttoimage or color-guided generation",
                "task_type_standard": "TEXT_IMAGE",
                "task_type_color": "COLOR_GUIDED_GENERATION",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 1024,
                        "section": "Prompts",
                        "api_field": "textToImageParams.text / colorGuidedGenerationParams.text",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "max": 1024,
                        "section": "Prompts",
                        "api_field": "textToImageParams.negativeText / colorGuidedGenerationParams.negativeText",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from an image"
                    },
                    "condition_image": {
                        "type": "image",
                        "required": false,
                        "principal_image": true,
                        "upload_as": "raw_base64_no_prefix",
                        "api_field": "textToImageParams.conditionImage",
                        "label": "Condition Image",
                        "title": "",
                        "section": "Inputs"
                    },
                    "color_reference_image": {
                        "type": "image",
                        "required": false,
                        "upload_as": "raw_base64_no_prefix",
                        "api_field": "colorGuidedGenerationParams.referenceImage",
                        "label": "Color Reference Image",
                        "title": "A JPEG or PNG image to use as a subject and style reference. The colors of the image will also be incorporated into the output, along with the colors from the color palette",
                        "section": "Inputs"
                    },
                    "style": {
                        "type": "enum",
                        "required": false,
                        "api_field": "textToImageParams.style",
                        "label": "Style",
                        "note": "Nova only, not Titan",
                        "title": "3D ANIMATED FAMILY FILM: A style that alludes to 3D animated films. Featuring realistic rendering and characters with cartoonish or exaggerated physical features. This style is capable of producing character-focused images, object- or prop-focused images, and environment- or setting-focused images of both interiors and exteriors\n\nDESIGN SKETCH: A style featuring hand-drawn line-art without a lot of wash or fill that is not too refined. This style is used to convey concepts and ideas. It is useful for fashion and product design sketches as well as architectural sketches Flat\n\nVECTOR ILLUSTRATION: A flat-color illustration style that is popular in business communications. It is also useful for icon and clip art images\n\nGRAPHIC NOVEL ILLUSTRATION: A vivid ink illustration style. Characters do not have exaggerated features, as with some other more cartoon-ish styles\n\nMAXIMALISM: Bright, elaborate, bold, and complex with strong shapes, and rich details. This style can be applied to a variety of subjects, such as illustrations, photography, interior design, graphic design, or packaging design\n\nMIDCENTURY RETRO: Alludes to graphic design trends from the 1940s through 1960s\n\nPHOTOREALISM: Realistic photography style, including different repertoires such as stock photography, editorial photography, journalistic photography, and more. This style shows realistic lighting, depth of field, and composition fitting the repertoire. The most common subjects are humans, but can also include animals, landscapes, and other natural features Soft\n\nDIGITAL PAINTING: This style has more finish and refinement than a sketch. It includes shading, three dimensionality, and texture that might be lacking in other styles",
                        "options": [
                            "3D_ANIMATED_FAMILY_FILM",
                            "DESIGN_SKETCH",
                            "FLAT_VECTOR_ILLUSTRATION",
                            "GRAPHIC_NOVEL_ILLUSTRATION",
                            "MAXIMALISM",
                            "MIDCENTURY_RETRO",
                            "PHOTOREALISM",
                            "SOFT_DIGITAL_PAINTING"
                        ],
                        "option_labels": {
                            "3D_ANIMATED_FAMILY_FILM": "3D Animated Family Film",
                            "DESIGN_SKETCH": "Design Sketch",
                            "FLAT_VECTOR_ILLUSTRATION": "Flat Vector Illustration",
                            "GRAPHIC_NOVEL_ILLUSTRATION": "Graphic Novel Illustration",
                            "MAXIMALISM": "Maximalism",
                            "MIDCENTURY_RETRO": "Midcentury Retro",
                            "PHOTOREALISM": "Photorealism",
                            "SOFT_DIGITAL_PAINTING": "Soft Digital Painting"
                        },
                        "section": "Settings"
                    },
                    "control_mode": {
                        "type": "enum",
                        "required": false,
                        "api_field": "textToImageParams.controlMode",
                        "label": "Control Mode",
                        "title": "Specifies what conditioning mode is used\n\nCANNY EDGE: Elements of the generated image will follow the prominent contours, or 'edges', of the condition image closely\n\nSEGMENTATION: The condition image will be automatically analyzed to identify prominent content shapes. This analysis results in a segmentation mask which guides the generation, resulting in a generated image that closely follows the layout of the condition image but allows the model more freedom within the bounds of each content area",
                        "options": [
                            "CANNY_EDGE",
                            "SEGMENTATION"
                        ],
                        "option_labels": {
                            "CANNY_EDGE": "Canny Edge",
                            "SEGMENTATION": "Segmentation"
                        },
                        "section": "Settings"
                    },
                    "control_strength": {
                        "type": "range",
                        "required": false,
                        "api_field": "textToImageParams.controlStrength",
                        "label": "Control Strength",
                        "subtype": "float",
                        "min": 0,
                        "max": 1.0,
                        "step": 0.1,
                        "title": "Allows you to specify how much influence the condition image should have on the newly generated image",
                        "section": "Settings"
                    },
                    "color_guided_params": {
                        "type": "object",
                        "required": false,
                        "api_field": "colorGuidedGenerationParams",
                        "label": "Color Guided Generation Parameters",
                        "note": "When present, switches to COLOR_GUIDED_GENERATION task type",
                        "title": "",
                        "section": "Settings"
                    },
                    "quality": {
                        "type": "enum",
                        "required": false,
                        "default": "premium",
                        "options": [
                            "premium",
                            "standard"
                        ],
                        "option_labels": {
                            "premium": "Premium",
                            "standard": "Standard"
                        },
                        "api_field": "imageGenerationConfig.quality",
                        "label": "Output Quality",
                        "title": "Standard is the default and is faster and less expensive\n\nPremium produces improved detail and consistency at higher cost",
                        "section": "Output"
                    },
                    "num_outputs": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "max": 5,
                        "api_field": "imageGenerationConfig.numberOfImages",
                        "label": "Count",
                        "subtype": "int",
                        "min": 1,
                        "title": "Number of output images to generate",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": 12,
                        "min": 0,
                        "max": 2147483646,
                        "api_field": "imageGenerationConfig.seed",
                        "label": "Seed",
                        "title": "Determines the initial noise setting for the generation process\n\nChanging the seed value while leaving all other parameters the same will produce a totally new image that still adheres to your prompt, dimensions, and other settings. It is common to experiment with a variety of seed values to find the perfect image",
                        "section": "Output"
                    }
                },
                "response": {
                    "images_path": "images",
                    "response_format": "base64"
                },
                "deprecated": false
            },
            "variations": {
                "io": "image + text → image",
                "description": "Generate variations of an image",
                "task_type": "IMAGE_VARIATION",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 1024,
                        "api_field": "imageVariationParams.text",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": true,
                        "max": 1024,
                        "api_field": "imageVariationParams.negativeText",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from an image",
                        "section": "Prompts"
                    },
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "raw_base64_no_prefix",
                        "api_field": "imageVariationParams.images[0]",
                        "label": "Source",
                        "title": "",
                        "section": "Inputs"
                    },
                    "similarity": {
                        "type": "range",
                        "required": true,
                        "api_field": "imageVariationParams.similarityStrength",
                        "label": "Similarity Strength",
                        "subtype": "float",
                        "min": 0.2,
                        "max": 1.0,
                        "step": 0.1,
                        "title": "Specifies how similar the generated image should be to the input\n\nUse a lower value to introduce more randomness",
                        "section": "Settings"
                    },
                    "quality": {
                        "type": "enum",
                        "required": true,
                        "api_field": "imageGenerationConfig.quality",
                        "label": "Output Quality",
                        "title": "Standard is the default and is faster and less expensive\n\nPremium produces improved detail and consistency at higher cost",
                        "options": [
                            "premium",
                            "standard"
                        ],
                        "option_labels": {
                            "premium": "Premium",
                            "standard": "Standard"
                        },
                        "section": "Output"
                    },
                    "num_outputs": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "api_field": "imageGenerationConfig.numberOfImages",
                        "label": "Count",
                        "subtype": "int",
                        "min": 1,
                        "max": 5,
                        "title": "Number of output images to generate",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": 12,
                        "min": 0,
                        "max": 2147483646,
                        "api_field": "imageGenerationConfig.seed",
                        "label": "Seed",
                        "title": "Determines the initial noise setting for the generation process\n\nChanging the seed value while leaving all other parameters the same will produce a totally new image that still adheres to your prompt, dimensions, and other settings. It is common to experiment with a variety of seed values to find the perfect image",
                        "section": "Output"
                    }
                },
                "response": {
                    "images_path": "images",
                    "response_format": "base64"
                },
                "deprecated": false
            },
            "fill": {
                "io": "image + mask + text → image",
                "description": "Inpainting with text prompt or bitmap mask",
                "task_type": "INPAINTING",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 1024,
                        "api_field": "inPaintingParams.text",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": true,
                        "max": 1024,
                        "api_field": "inPaintingParams.negativeText",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from an image",
                        "section": "Prompts"
                    },
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "raw_base64_no_prefix",
                        "api_field": "inPaintingParams.image",
                        "label": "Source",
                        "title": "",
                        "section": "Inputs"
                    },
                    "mask_prompt": {
                        "type": "text",
                        "required": false,
                        "max": 1024,
                        "api_field": "inPaintingParams.maskPrompt",
                        "label": "Mask Prompt",
                        "note": "Mutually exclusive with bitmap_mask",
                        "title": "A mask prompt allows you to use natural language to describe the elements within an image that you want to change\n\nNot compatible with providing a mask image",
                        "section": "Inputs"
                    },
                    "bitmap_mask": {
                        "type": "image",
                        "required": false,
                        "principal_mask": true,
                        "mask_padding": "#000000",
                        "api_field": "inPaintingParams.maskImage",
                        "label": "Bitmap Mask",
                        "title": "Must consist of pure black and white pixels only, with white (typically) defining the area to be changed\n\nNot compatible with a mask prompt",
                        "section": "Inputs"
                    },
                    "quality": {
                        "type": "enum",
                        "required": true,
                        "api_field": "imageGenerationConfig.quality",
                        "label": "Output Quality",
                        "title": "Standard is the default and is faster and less expensive\n\nPremium produces improved detail and consistency at higher cost",
                        "options": [
                            "premium",
                            "standard"
                        ],
                        "option_labels": {
                            "premium": "Premium",
                            "standard": "Standard"
                        },
                        "section": "Output"
                    },
                    "num_outputs": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "api_field": "imageGenerationConfig.numberOfImages",
                        "label": "Count",
                        "subtype": "int",
                        "min": 1,
                        "max": 5,
                        "title": "Number of output images to generate",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": 12,
                        "min": 0,
                        "max": 2147483646,
                        "api_field": "imageGenerationConfig.seed",
                        "label": "Seed",
                        "title": "Determines the initial noise setting for the generation process\n\nChanging the seed value while leaving all other parameters the same will produce a totally new image that still adheres to your prompt, dimensions, and other settings. It is common to experiment with a variety of seed values to find the perfect image",
                        "section": "Output"
                    }
                },
                "hidden_api_fields": {
                    "returnMask": false
                },
                "response": {
                    "images_path": "images",
                    "response_format": "base64"
                },
                "deprecated": false
            },
            "expand": {
                "io": "image + mask + text → image",
                "description": "Outpainting — extend an image beyond its borders",
                "task_type": "OUTPAINTING",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 1024,
                        "api_field": "outPaintingParams.text",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": true,
                        "max": 1024,
                        "api_field": "outPaintingParams.negativeText",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from an image",
                        "section": "Prompts"
                    },
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "raw_base64_no_prefix",
                        "api_field": "outPaintingParams.image",
                        "label": "Source",
                        "title": "",
                        "section": "Inputs"
                    },
                    "mask_prompt": {
                        "type": "text",
                        "required": false,
                        "max": 1024,
                        "api_field": "outPaintingParams.maskPrompt",
                        "label": "Mask Prompt",
                        "title": "A mask prompt allows you to use natural language to describe the elements within an image that you want to change\n\nNot compatible with providing a mask image",
                        "section": "Inputs"
                    },
                    "bitmap_mask": {
                        "type": "image",
                        "required": false,
                        "principal_mask": true,
                        "mask_padding": "#000000",
                        "api_field": "outPaintingParams.maskImage",
                        "label": "Bitmap Mask",
                        "title": "Must consist of pure black and white pixels only, with white (typically) defining the area to be changed\n\nNot compatible with a mask prompt",
                        "section": "Inputs"
                    },
                    "outpainting_mode": {
                        "type": "enum",
                        "required": true,
                        "options": [
                            "DEFAULT",
                            "PRECISE"
                        ],
                        "option_labels": {
                            "DEFAULT": "Default",
                            "PRECISE": "Precise"
                        },
                        "api_field": "outPaintingParams.outPaintingMode",
                        "label": "Outpainting Mode",
                        "title": "Use this option to allow modification of the image inside the mask in order to keep it consistent with the reconstructed background, or to prevent modifications",
                        "section": "Settings"
                    },
                    "quality": {
                        "type": "enum",
                        "required": true,
                        "api_field": "imageGenerationConfig.quality",
                        "label": "Output Quality",
                        "title": "Standard is the default and is faster and less expensive\n\nPremium produces improved detail and consistency at higher cost",
                        "options": [
                            "premium",
                            "standard"
                        ],
                        "option_labels": {
                            "premium": "Premium",
                            "standard": "Standard"
                        },
                        "section": "Output"
                    },
                    "num_outputs": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "api_field": "imageGenerationConfig.numberOfImages",
                        "label": "Count",
                        "subtype": "int",
                        "min": 1,
                        "max": 5,
                        "title": "Number of output images to generate",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": 12,
                        "min": 0,
                        "max": 2147483646,
                        "api_field": "imageGenerationConfig.seed",
                        "label": "Seed",
                        "title": "Determines the initial noise setting for the generation process\n\nChanging the seed value while leaving all other parameters the same will produce a totally new image that still adheres to your prompt, dimensions, and other settings. It is common to experiment with a variety of seed values to find the perfect image",
                        "section": "Output"
                    }
                },
                "hidden_api_fields": {
                    "returnMask": false
                },
                "response": {
                    "images_path": "images",
                    "response_format": "base64"
                },
                "deprecated": false
            },
            "bgremove": {
                "io": "image → image",
                "description": "Remove image background",
                "task_type": "BACKGROUND_REMOVAL",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "raw_base64_no_prefix",
                        "api_field": "backgroundRemovalParams.image",
                        "label": "Source",
                        "title": "",
                        "section": "Inputs"
                    }
                },
                "response": {
                    "images_path": "images",
                    "response_format": "base64"
                },
                "deprecated": false
            },
            "vton": {
                "io": "image + image → image",
                "description": "Virtual try-on with garment-based, prompt-based, or image-based masking",
                "task_type": "VIRTUAL_TRY_ON",
                "note": "",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "raw_base64_no_prefix",
                        "api_field": "virtualTryOnParams.sourceImage",
                        "label": "Source",
                        "title": "The original image that you want to modify. For example, this might be an image of a person or a room scene",
                        "section": "Inputs"
                    },
                    "reference_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "raw_base64_no_prefix",
                        "api_field": "virtualTryOnParams.referenceImage",
                        "label": "Reference Image",
                        "title": "The image containing the item, object, or article that you want to superimpose into the source image. For example, this might contain a jacket, bowl, or couch.\n\nFor garments, the reference image can contain garments on or off a body and can contain multiple products that represent distinct outfit components (such as shirts, pants, and shoes in a single image)",
                        "section": "Inputs"
                    },
                    "mask_type": {
                        "type": "enum",
                        "required": true,
                        "options": [
                            "garment",
                            "image",
                            "prompt"
                        ],
                        "option_labels": {
                            "garment": "Garment",
                            "image": "Image",
                            "prompt": "Prompt"
                        },
                        "api_field": "virtualTryOnParams.maskType",
                        "api_transform": "uppercase",
                        "label": "Mask Type",
                        "title": "Provide a mask image by specifying: 'Image' or allow the model to compute it automatically using auxiliary inputs such as 'Garment' or 'Prompt'\n\nWhen a mask type of 'Garment' is specified, the model creates a garment-aware mask based on a 'Garment Class'",
                        "section": "Masks"
                    },
                    "mask_prompt": {
                        "type": "text",
                        "required": false,
                        "max": 1024,
                        "api_field": "virtualTryOnParams.promptBasedMask.maskPrompt",
                        "visible_when": {
                            "mask_type": "prompt"
                        },
                        "label": "Mask Prompt",
                        "title": "A mask prompt allows you to use natural language to describe the elements within an image that you want to change\n\nNot compatible with providing a mask image",
                        "section": "Masks"
                    },
                    "mask_shape": {
                        "type": "enum",
                        "required": false,
                        "options": [
                            "BOUNDING_BOX",
                            "CONTOUR",
                            "DEFAULT"
                        ],
                        "option_labels": {
                            "BOUNDING_BOX": "Bounding Box",
                            "CONTOUR": "Contour",
                            "DEFAULT": "Default"
                        },
                        "api_field": "promptBasedMask.maskShape / garmentBasedMask.maskShape",
                        "api_transform": "uppercase",
                        "visible_when": {
                            "mask_type": [
                                "prompt",
                                "garment"
                            ]
                        },
                        "label": "Mask Shape",
                        "title": "Defines the shape of the mask bounding box. The shape and size of the bounding box can have an affect on how the reference image is transferred to the source image",
                        "section": "Masks"
                    },
                    "bitmap_mask": {
                        "type": "image",
                        "required": false,
                        "principal_mask": true,
                        "mask_padding": "#000000",
                        "api_field": "virtualTryOnParams.imageBasedMask.maskImage",
                        "visible_when": {
                            "mask_type": "image"
                        },
                        "label": "Mask Image",
                        "title": "The image that defines which part of the source that you want to modify.\n\nA mask image is a black and white image used to define which part of the source image should be modified. Black pixels indicate the area of the source image to modify while white pixels indicate areas of the image to preserve",
                        "section": "Masks"
                    },
                    "garment_class": {
                        "type": "enum",
                        "required": false,
                        "options": [
                            "BOOTS",
                            "FOOTWEAR",
                            "FULL_BODY",
                            "FULL_BODY_OUTFIT",
                            "LONG_DRESS",
                            "LONG_PANTS",
                            "LONG_SLEEVE_SHIRT",
                            "LOWER_BODY",
                            "NO_SLEEVE_SHIRT",
                            "OTHER_FOOTWEAR",
                            "OTHER_FULL_BODY",
                            "OTHER_LOWER_BODY",
                            "OTHER_UPPER_BODY",
                            "SHOES",
                            "SHORT_DRESS",
                            "SHORT_PANTS",
                            "SHORT_SLEEVE_SHIRT",
                            "UPPER_BODY"
                        ],
                        "option_labels": {
                            "BOOTS": "Boots",
                            "FOOTWEAR": "Footwear",
                            "FULL_BODY": "Full Body",
                            "FULL_BODY_OUTFIT": "Full Body Outfit",
                            "LONG_DRESS": "Long Dress",
                            "LONG_PANTS": "Long Pants",
                            "LONG_SLEEVE_SHIRT": "Long Sleeve Shirt",
                            "LOWER_BODY": "Lower Body",
                            "NO_SLEEVE_SHIRT": "No Sleeve Shirt",
                            "OTHER_FOOTWEAR": "Other Footwear",
                            "OTHER_FULL_BODY": "Other Full Body",
                            "OTHER_LOWER_BODY": "Other Lower Body",
                            "OTHER_UPPER_BODY": "Other Upper Body",
                            "SHOES": "Shoes",
                            "SHORT_DRESS": "Short Dress",
                            "SHORT_PANTS": "Short Pants",
                            "SHORT_SLEEVE_SHIRT": "Short Sleeve Shirt",
                            "UPPER_BODY": "Upper Body"
                        },
                        "api_field": "virtualTryOnParams.garmentBasedMask.garmentClass",
                        "api_transform": "uppercase",
                        "visible_when": {
                            "mask_type": "garment"
                        },
                        "label": "Garment Class",
                        "title": "",
                        "section": "Masks"
                    },
                    "preserve_body_pose": {
                        "type": "bool",
                        "required": false,
                        "api_field": "virtualTryOnParams.maskExclusions.preserveBodyPose",
                        "api_transform": "ON_OFF",
                        "label": "Preserve Body Pose",
                        "title": "You can instruct the model to either keep or regenerate the pose, hands, or face of the person in the source image. When you choose to keep these elements, they are automatically removed from the mask image, regardless of which Mask Type you have chosen\n\nWhen the model is wearing high-heeled shoes and the reference image is of flat-heeled shoes, or vice-versa, preserving the body pose creates unnatural looking results.\n\nWhen trying on handbags or other accessories, generating new poses or hands can generate more natural-looking results",
                        "section": "Settings"
                    },
                    "preserve_hands": {
                        "type": "bool",
                        "required": false,
                        "api_field": "virtualTryOnParams.maskExclusions.preserveHands",
                        "api_transform": "ON_OFF",
                        "label": "Preserve Hands",
                        "title": "You can instruct the model to either keep or regenerate the pose, hands, or face of the person in the source image. When you choose to keep these elements, they are automatically removed from the mask image, regardless of which Mask Type you have chosen\n\nWhen trying on handbags or other accessories, generating new poses or hands can generate more natural-looking result",
                        "section": "Settings"
                    },
                    "preserve_face": {
                        "type": "bool",
                        "required": false,
                        "api_field": "virtualTryOnParams.maskExclusions.preserveFace",
                        "api_transform": "ON_OFF",
                        "label": "Preserve Face",
                        "title": "For garments that cover the neck, Preserve Face can exclude enough of the neck to have a detrimental impact on the output\n\nRecommended if you are using the Garment Mask Type with a Mask Shape of Bounding Box with a model that is not in an upright posture. In this case, the bounding box mask can overlap the face and we recommend using turning Preserve Face on",
                        "section": "Settings"
                    },
                    "merge_style": {
                        "type": "enum",
                        "required": false,
                        "options": [
                            "BALANCED",
                            "SEAMLESS",
                            "DETAILED"
                        ],
                        "option_labels": {
                            "BALANCED": "Balanced",
                            "SEAMLESS": "Seamless",
                            "DETAILED": "Detailed"
                        },
                        "api_field": "virtualTryOnParams.mergeStyle",
                        "api_transform": "uppercase",
                        "label": "Merge Style",
                        "title": "How images are stitched together to create the final image\n\nEach merge style takes a different approach to how it stitches the elements together, each with its own tradeoffs\n\nBALANCED: Protects any non-masked pixels in the original. In some cases, there will be a slight perceptible color or texture mismatch in the output image. This is most likely to occur when the image features a person standing against a solid color or uniformly textured background\n\nSEAMLESS: Ensures there will never be a noticeable seam between masked and non-masked areas. The tradeoff is that all pixels in the image change slightly and sometimes fine-grained details are diminished in the non-masked areas of the image\n\nDETAILED: Can greatly improve fine-grained details like logos and text, especially when the masked area is relatively small compared to the overall image. This is done by inpainting on a tightly cropped, higher resolution version of the original that only includes the masked area",
                        "section": "Settings"
                    },
                    "long_sleeve_style": {
                        "type": "enum",
                        "required": false,
                        "api_field": "garmentBasedMask.garmentStyling.longSleeveStyle",
                        "api_transform": "uppercase",
                        "label": "Long Sleeve Style",
                        "title": "Controls whether the sleeves of a long-sleeve shirt are rolled up or down\n\nSLEEVES DOWN: Can be applied when the source image is wearing a long-sleeve shirt (sleeves up or down), short-sleeve shirt, or no-sleeve shirt\n\nSLEEVES UP: Can be applied when the source image is wearing a long-sleeve shirt with the sleeves up, short-sleeve shirt, or no-sleeve shirt",
                        "options": [
                            "SLEEVE_DOWN",
                            "SLEEVE_UP"
                        ],
                        "option_labels": {
                            "SLEEVE_DOWN": "Sleeves Down",
                            "SLEEVE_UP": "Sleeves Up"
                        },
                        "section": "Settings"
                    },
                    "tucking_style": {
                        "type": "enum",
                        "required": false,
                        "api_field": "garmentBasedMask.garmentStyling.tuckingStyle",
                        "api_transform": "uppercase",
                        "label": "Tucking Style",
                        "title": "Controls whether an upper body garment appears tucked in or loose\n\nUNTUCKED: Can be applied regardless of whether the source image has the shirt tucked or untucked\n\nTUCKED: Can be applied when the source image has the shirt tucked in",
                        "options": [
                            "TUCKED",
                            "UNTUCKED"
                        ],
                        "option_labels": {
                            "TUCKED": "Tucked",
                            "UNTUCKED": "Untucked"
                        },
                        "section": "Settings"
                    },
                    "outer_layer_style": {
                        "type": "enum",
                        "required": false,
                        "api_field": "garmentBasedMask.garmentStyling.outerLayerStyle",
                        "api_transform": "uppercase",
                        "label": "Outer Layer Style",
                        "title": "Controls whether an upper body garment is styled open or closed\n\nThis defaults to 'CLOSED' which is appropriate for most garments (such as shirts and sweaters)\n\nFor outer garments, like jackets, setting this to 'OPEN' guarantees that the original upper body garment from the source image will be retained with the new outer garment being layered over it\n\nUsing a value of 'CLOSED' with an outer garment might not always render the garment as closed\n\nThis is because a value of 'CLOSED' only guarantees that every upper body garment in the source image will be replaced and can sometimes result in an open outer layer with a new under layer visible beneath",
                        "options": [
                            "CLOSED",
                            "OPEN"
                        ],
                        "option_labels": {
                            "CLOSED": "Closed",
                            "OPEN": "Open"
                        },
                        "section": "Settings"
                    },
                    "quality": {
                        "type": "enum",
                        "required": true,
                        "api_field": "imageGenerationConfig.quality",
                        "label": "Output Quality",
                        "title": "Standard is the default and is faster and less expensive\n\nPremium produces improved detail and consistency at higher cost",
                        "options": [
                            "premium",
                            "standard"
                        ],
                        "option_labels": {
                            "premium": "Premium",
                            "standard": "Standard"
                        },
                        "section": "Output"
                    },
                    "num_outputs": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "api_field": "imageGenerationConfig.numberOfImages",
                        "label": "Count",
                        "subtype": "int",
                        "min": 1,
                        "max": 5,
                        "title": "Number of output images to generate",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": 12,
                        "min": 0,
                        "max": 2147483646,
                        "api_field": "imageGenerationConfig.seed",
                        "label": "Seed",
                        "title": "Determines the initial noise setting for the generation process\n\nChanging the seed value while leaving all other parameters the same will produce a totally new image that still adheres to your prompt, dimensions, and other settings. It is common to experiment with a variety of seed values to find the perfect image",
                        "section": "Output"
                    }
                },
                "response": {
                    "images_path": "images",
                    "response_format": "base64"
                },
                "deprecated": false
            }
        }
    },
    "briafibo": {
        "name": "Bria FIBO V2",
        "shortname": "Bria FIBO",
        "vendor": "Bria",
        "family": "FIBO",
        "deprecated": false,
        "prompt_guide_url": "https://ex.bria.ai/videos",
        "docs_url": "https://docs.bria.ai/image-generation/v2-endpoints/image-generate",
        "platforms": {
            "bria": {
                "name": "Bria",
                "sdk": null,
                "dispatch": "http_poll",
                "secret_id": "bria",
                "poll_url_source": "response",
                "poll_url_path": "status_url",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60
            },
            "replicate": {
                "name": "Replicate",
                "type": "byok",
                "dispatch": "replicate_run",
                "secret_id": "replicate",
                "env_var": "REPLICATE_API_TOKEN",
                "model_id": "bria/fibo",
                "api_field_map": {
                    "diffusion_steps": null,
                    "reference_image": "image"
                },
                "hidden_api_fields": {},
                "response": {
                    "response_format": "url"
                }
            },
            "wavespeed": {
                "name": "WaveSpeedAI",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "wavespeed",
                "env_var": "WAVESPEED_API_KEY",
                "poll_url_template": "https://api.wavespeed.ai/api/v3/predictions/{request_id}/result",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60,
                "endpoints": {
                    "texttoimage": "https://api.wavespeed.ai/api/v3/bria/image-3.2"
                },
                "api_field_map": {
                    "diffusion_steps": null,
                    "guidance_scale": null,
                    "reference_image": null
                },
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "response_format": "url"
                },
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text, structured prompts, and/or reference images",
                "endpoint": "https://engine.prod.bria-api.com/v2/image/generate",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": false,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "note": "At least one of prompt, structured prompt, or reference image is required",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "structured_prompt": {
                        "type": "json",
                        "required": false,
                        "api_field": "structured_prompt",
                        "label": "Structured Prompt",
                        "template": "bria-fibo",
                        "note": "JSON string. Can coexist with prompt (both sent to API). Cannot combine with reference_image.",
                        "title": "Advanced formatted prompt for detailed scene control; you can use a structured prompt from a previous generation's response",
                        "section": "Prompts"
                    },
                    "guidance_scale": {
                        "type": "range",
                        "required": false,
                        "default": 5,
                        "min": 3,
                        "max": 5,
                        "step": 1,
                        "api_field": "guidance_scale",
                        "label": "Guidance Scale",
                        "subtype": "int",
                        "title": "Controls how closely the output image aligns with the input prompt. Higher values mean stronger prompt correlation",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "default": "",
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from an image",
                        "section": "Prompts"
                    },
                    "diffusion_steps": {
                        "type": "range",
                        "required": false,
                        "default": 50,
                        "min": 20,
                        "max": 50,
                        "step": 1,
                        "api_field": "steps_num",
                        "label": "Number of Steps",
                        "subtype": "int",
                        "title": "Number of diffusion steps. Uses model default if not set",
                        "section": "Settings"
                    },
                    "reference_image": {
                        "type": "image",
                        "required": false,
                        "upload_as": "s3_url",
                        "api_field": "images",
                        "api_transform": "wrap_in_array",
                        "label": "Reference Image",
                        "note": "Cannot combine with structured_prompt",
                        "title": "Optional reference image that guides the generation process",
                        "section": "Inputs"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "4:5",
                            "5:4",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "1:1": "",
                            "2:3": "",
                            "3:2": "",
                            "3:4": "",
                            "4:3": "",
                            "4:5": "",
                            "5:4": "",
                            "9:16": "",
                            "16:9": "",
                            "21:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": "Ratio of width to height",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Lock the seed when you’re evaluating prompt changes and want apples-to-apples comparisons. Change the seed when the 'blueprint' is good and you want visual variety",
                        "section": "Output"
                    }
                },
                "validation_rules": [
                    {
                        "rule": "at_least_one_required",
                        "fields": [
                            "prompt",
                            "structured_prompt",
                            "reference_image"
                        ]
                    },
                    {
                        "rule": "mutually_exclusive",
                        "fields": [
                            "structured_prompt",
                            "reference_image"
                        ]
                    }
                ],
                "response": {
                    "status_path": "status",
                    "images_path": "result.image_url",
                    "image_url_path": null,
                    "structured_prompt_path": "result.structured_prompt",
                    "response_format": "url"
                },
                "deprecated": false,
                "ui_extras": [
                    "pose_editor"
                ]
            },
            "structprompt": {
                "io": "text → json",
                "description": "Generate a structured prompt from text, an existing structured prompt, and/or a reference image",
                "ui_trigger": "button",
                "endpoint": "https://engine.prod.bria-api.com/v2/structured_prompt/generate",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": false,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "note": "Required if structured_prompt is provided",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "structured_prompt": {
                        "type": "json",
                        "required": false,
                        "api_field": "structured_prompt",
                        "label": "Structured Prompt",
                        "template": "bria-fibo",
                        "note": "JSON string. Requires prompt. Cannot combine with reference_image.",
                        "title": "Advanced formatted prompt for detailed scene control; you can use a structured prompt from a previous generation's response",
                        "section": "Prompts"
                    },
                    "reference_image": {
                        "type": "image",
                        "required": false,
                        "upload_as": "s3_url",
                        "api_field": "images",
                        "api_transform": "wrap_in_array",
                        "label": "Reference Image",
                        "note": "Cannot combine with structured_prompt",
                        "title": "Optional reference image that guides the generation process",
                        "section": "Inputs"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image",
                        "section": "Output"
                    }
                },
                "validation_rules": [
                    {
                        "rule": "at_least_one_required",
                        "fields": [
                            "prompt",
                            "structured_prompt",
                            "reference_image"
                        ]
                    },
                    {
                        "rule": "mutually_exclusive",
                        "fields": [
                            "structured_prompt",
                            "reference_image"
                        ]
                    },
                    {
                        "rule": "requires",
                        "field": "structured_prompt",
                        "depends_on": "prompt"
                    }
                ],
                "response": {
                    "status_path": "status",
                    "structured_prompt_path": "result.structured_prompt",
                    "response_format": "json"
                },
                "deprecated": false
            }
        }
    },
    "chatgptimg": {
        "name": "ChatGPT Image [Latest]",
        "shortname": "ChatGPT [Latest]",
        "vendor": "OpenAI",
        "family": "GPT Image",
        "deprecated": false,
        "prompt_guide_url": "https://developers.openai.com/cookbook/examples/multimodal/image-gen-1.5-prompting_guide",
        "docs_url": "https://platform.openai.com/docs/models/chatgpt-image-latest",
        "platforms": {
            "openai": {
                "name": "OpenAI",
                "type": "byok",
                "dispatch": "openai_sdk",
                "secret_id": "open_ai",
                "env_var": "OPENAI_API_KEY",
                "endpoints": {
                    "texttoimage": "client.images.generate",
                    "edit": "client.images.edit"
                },
                "api_field_map": {},
                "hidden_api_fields": {
                    "model": "chatgpt-image-latest"
                },
                "response": {
                    "images_path": "images",
                    "enhanced_prompt_path": "revised_prompt",
                    "response_format": "base64"
                }
            }
        },
        "constraints": {},
        "_note": "Identical to gptimage except: Python maps chatgptimg to 'chatgpt-image-latest' for all modes, while gptimage maps to 'gpt-image-2' for all modes",
        "modes": {
            "texttoimage": {
                "_inherits": "gptimage.modes.texttoimage",
                "_note": "Same fields as gptimage texttoimage but uses model 'chatgpt-image-latest'",
                "io": "text → image",
                "description": "Generate images from text",
                "sdk_method": "client.images.generate()",
                "fields": "SEE gptimage.modes.texttoimage.fields",
                "hidden_api_fields": {
                    "model": "chatgpt-image-latest"
                },
                "response": {
                    "images_path": "data[].b64_json",
                    "enhanced_prompt_path": "data[0].revised_prompt",
                    "response_format": "base64",
                    "response_type": "object_attribute"
                },
                "deprecated": false
            },
            "edit": {
                "_inherits": "gptimage.modes.edit",
                "_note": "Identical to gptimage edit except model name",
                "io": "image + text → image",
                "description": "Edit images with text prompt and optional mask",
                "sdk_method": "client.images.edit()",
                "fields": "SEE gptimage.modes.edit.fields",
                "hidden_api_fields": {
                    "model": "chatgpt-image-latest"
                },
                "response": {
                    "images_path": "data[].b64_json",
                    "enhanced_prompt_path": "data[0].revised_prompt",
                    "response_format": "base64",
                    "response_type": "object_attribute"
                },
                "deprecated": false,
                "ui_extras": [
                    "pose_editor"
                ]
            }
        }
    },
    "claidai": {
        "name": "Claid AI",
        "shortname": "Claid AI",
        "vendor": "Claid AI",
        "family": "Claid",
        "deprecated": false,
        "prompt_guide_url": "https://claid.ai/blog/article/prompt-guide",
        "docs_url": "https://docs.claid.ai",
        "platforms": {
            "claidai": {
                "name": "Claid AI",
                "type": "direct",
                "sdk": null,
                "dispatch": "http_json",
                "secret_id": "claidai",
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            }
        },
        "constraints": {},
        "_shared_output_format_block": "All modes except texttoimage and vton share an identical copy-pasted output format builder supporting avif/jpeg/png/webp with compression, DPI, color space, and color profile options. This block is duplicated 7 times in the source code.",
        "_s3_intermediary": "All image-input modes upload source images to S3 via get_public_url_from_s3() and pass public URLs to the API.",
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text",
                "endpoint": "https://api.claid.ai/v1-beta1/image/generate",
                "dispatch": "http_json_sync",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 2048,
                        "api_field": "input",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "guidance_scale": {
                        "type": "range",
                        "required": true,
                        "api_field": "options.guidance_scale",
                        "label": "Guidance Scale",
                        "subtype": "float",
                        "min": 1.0,
                        "max": 49.99,
                        "step": 0.1,
                        "title": "How closely the generated image will match the prompt",
                        "section": "Prompts"
                    },
                    "num_outputs": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "max": 4,
                        "api_field": "options.number_of_images",
                        "label": "Count",
                        "subtype": "int",
                        "min": 1,
                        "title": "Number of output images to generate",
                        "section": "Output"
                    }
                },
                "response": {
                    "images_path": "data.output",
                    "image_url_path": "tmp_url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "bgblur": {
                "io": "image → image",
                "description": "Blur image background with category/selective detection",
                "endpoint": "https://api.claid.ai/v1-beta1/image/edit",
                "dispatch": "http_json_sync",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_public_url",
                        "api_field": "input",
                        "label": "Source",
                        "title": "Supports these formats as inputs: BMP, GIF, JPEG, PNG, TIFF, WEBP, AVIF, and HEIC\n\nIf you upload a non-square image, it will be scaled and cropped to fit a square",
                        "section": "Inputs"
                    },
                    "foreground_category": {
                        "type": "enum",
                        "required": false,
                        "api_field": "operations.background.blur.category",
                        "label": "Foreground category",
                        "title": "Provides a hint about the nature of object in the foreground for a more accurate result of background processing\n\nGENERAL: suitable for all objects\n\nPRODUCTS: advanced category that will have better results with product, grocery and food objects\n\nCARS: advanced category that will have better results with automotive objects\n\nForeground Category is not compatible with Object to Keep",
                        "section": "Settings"
                    },
                    "blur_type": {
                        "type": "enum",
                        "required": false,
                        "api_field": "operations.background.blur.type",
                        "label": "Blur Type",
                        "title": "Selects the type of blur to be applied to the background\n\nREGULAR: gaussian blur that creates an effect of laying a translucent material like vellum on top of the image background\n\nLENS: lens blur with linear focus that mimics the blur applied to a photo when a wide aperture is used to achieve a narrow depth of field, so that the foreground objects stands out",
                        "section": "Settings"
                    },
                    "blur_level": {
                        "type": "enum",
                        "required": false,
                        "api_field": "operations.background.blur.level",
                        "label": "Blur Level",
                        "title": "",
                        "section": "Settings"
                    },
                    "object_to_keep": {
                        "type": "text",
                        "required": false,
                        "api_field": "operations.background.blur.selective.object_to_keep",
                        "label": "Object to Keep",
                        "title": "Specify exactly which object should remain in the image, e.g. 'sleeping bag', 'bottle', etc. Keep the specification short and precise\n\nObject to Keep is not compatible with Foreground Category",
                        "section": "Settings"
                    },
                    "blur_license_plates": {
                        "type": "bool",
                        "required": false,
                        "api_field": "operations.privacy.blur_car_plate",
                        "visible_when": {
                            "foreground_category": "cars"
                        },
                        "label": "Blur License Plates",
                        "title": "Automatically blur any license plates found in the image",
                        "section": "Settings"
                    }
                },
                "_has_output_format_block": true,
                "response": {
                    "images_path": "data.output",
                    "image_url_path": "tmp_url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "bggen": {
                "io": "image + text → image",
                "description": "Generate or replace background using templates or AI",
                "sub_type_field": "bggen_type",
                "sub_types": {
                    "templatefree": {
                        "endpoint": "https://api.claid.ai/v1-ea/scene/create",
                        "description": "AI-generated background without template",
                        "sub_model_field": "claidai_background_model_version",
                        "sub_model_options": [
                            "v1",
                            "v2"
                        ],
                        "fields": {
                            "object_image": {
                                "upload_as": "s3_public_url",
                                "title": "Supports these formats as inputs: GIF, PNG, TIFF, WEBP, AVIF, and HEIC\n\nPlease upload images with background transparency only; use Remove Background first, if needed If you upload an image with a background, the scene will be created around the entire image"
                            },
                            "placement_type": {
                                "options": [
                                    "absolute",
                                    "auto"
                                ],
                                "title": "ABSOLUTE: Defines an object's position based on parameters such as position, scale, and rotation\n\nORIGINAL: Keeps the object's position on the generated images the same as it was on the input image"
                            },
                            "aspect_ratio": {
                                "title": "Ratio of width to height"
                            },
                            "model_version": {
                                "api_field": "scene.model",
                                "title": ""
                            },
                            "preference": {
                                "default": "best",
                                "title": "Parameter to configure model settings to achieve the desired balance between generation speed and output image quality"
                            },
                            "prompt": {
                                "conditional": "auto_prompt == false",
                                "max": 2048,
                                "title": "Describe in detail what you want to see in the output"
                            },
                            "auto_prompt_guidelines": {
                                "conditional": "auto_prompt == true",
                                "title": "Provide a list of terms that will influence auto prompting results\n\nGuidelines can be specific keywords (e.g. 'seaside, sunset, ocean') or more abstract concepts (e.g. 'summer vibes,' 'pink monochromatic environment,' 'real life setting')"
                            },
                            "negative_prompt": {
                                "max": 2048
                            },
                            "background_color_hex": {
                                "conditional": "v1 only",
                                "title": ""
                            },
                            "inference_steps": {
                                "conditional": "v1 only",
                                "title": "Controls the number of iterations the model uses for generation. Increasing the steps value generally improves image quality and detail but also increases processing time. Conversely, decreasing steps speeds up generation, potentially at the cost of some quality"
                            }
                        },
                        "label": "Freeform"
                    },
                    "templatebased": {
                        "endpoint": "https://api.claid.ai/v1/scene/create",
                        "description": "Background from template image",
                        "fields": {
                            "object_image": {
                                "upload_as": "s3_public_url",
                                "title": "Supports these formats as inputs: GIF, PNG, TIFF, WEBP, AVIF, and HEIC\n\nPlease upload images with background transparency only; use Remove Background first, if needed If you upload an image with a background, the scene will be created around the entire image"
                            },
                            "template_image": {
                                "upload_as": "s3_public_url",
                                "title": "Supports these formats as inputs: BMP, GIF, JPEG, PNG, TIFF, WEBP, AVIF, and HEIC\n\nIf you upload a non-square image, it will be scaled and cropped to fit a square"
                            },
                            "creativity_level": {
                                "options": [
                                    "adjust",
                                    "lock",
                                    "transform"
                                ],
                                "title": "HIGH: Changes the background a lot using prompt details and color settings, while keeping the overall structure\n\nMEDIUM: Balances template detail preservation and creative changes\n\nLOW: Keeps the template background mostly the same, with small changes for better blending"
                            },
                            "placement_type": {
                                "title": "ABSOLUTE: Defines an object's position based on parameters such as position, scale, and rotation\n\nORIGINAL: Keeps the object's position on the generated images the same as it was on the input image"
                            },
                            "viewpoint": {
                                "title": ""
                            },
                            "prompt": {
                                "conditional": "creativity_level == adjust",
                                "max": 2048,
                                "title": "Describe in detail what you want to see in the output"
                            },
                            "background_color_hex": {}
                        },
                        "label": "Template-Based"
                    }
                },
                "_has_output_format_block": true,
                "response": {
                    "images_path": "data.output",
                    "image_url_path": "tmp_url",
                    "response_format": "url"
                },
                "deprecated": false,
                "sub_type_label": "Type"
            },
            "bgremove": {
                "io": "image → image",
                "description": "Remove image background with optional replacement color",
                "endpoint": "https://api.claid.ai/v1/image/edit",
                "dispatch": "http_json_sync",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_public_url",
                        "api_field": "input",
                        "label": "Source",
                        "title": "Supports these formats as inputs: GIF, PNG, TIFF, WEBP, AVIF, and HEIC\n\nPlease upload images with background transparency only; use Remove Background first, if needed If you upload an image with a background, the scene will be created around the entire image",
                        "section": "Inputs"
                    },
                    "foreground_category": {
                        "type": "enum",
                        "required": false,
                        "api_field": "operations.background.remove.category",
                        "label": "Foreground Category",
                        "title": "Provides a hint about the nature of object in the foreground for a more accurate result of background processing\n\nGENERAL: suitable for all objects\n\nPRODUCTS: advanced category that will have better results with product, grocery and food objects\n\nCARS: advanced category that will have better results with automotive objects\n\nForeground Category is not compatible with Object to Keep",
                        "section": "Settings"
                    },
                    "object_to_keep": {
                        "type": "text",
                        "required": false,
                        "api_field": "operations.background.remove.selective.object_to_keep",
                        "label": "Object to Keep",
                        "title": "Specify exactly which object should remain in the image, e.g. 'sleeping bag', 'bottle', etc. Keep the specification short and precise\n\nObject to Keep is not compatible with Foreground Category",
                        "section": "Settings"
                    },
                    "crop_to_object": {
                        "type": "bool",
                        "required": false,
                        "api_field": "operations.background.remove.clipping",
                        "label": "Crop to Object",
                        "title": "Output image is clipped to the foreground object bounds",
                        "section": "Settings"
                    },
                    "transparent_background": {
                        "type": "bool",
                        "required": false,
                        "api_field": "operations.background.color",
                        "api_transform": "set_to_transparent",
                        "label": "Transparent Background",
                        "note": "Not available when output format is JPEG",
                        "title": "",
                        "section": "Settings"
                    },
                    "background_color_hex": {
                        "type": "color",
                        "required": false,
                        "api_field": "operations.background.color",
                        "label": "Background Color",
                        "note": "Overrides transparent if both set",
                        "title": "",
                        "section": "Settings"
                    }
                },
                "_has_output_format_block": true,
                "response": {
                    "images_path": "data.output",
                    "image_url_path": "tmp_url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "enhance": {
                "io": "image → image",
                "description": "Adjust image quality (sharpness, HDR, exposure, saturation, contrast) and restore",
                "endpoint": "https://api.claid.ai/v1/image/edit",
                "dispatch": "http_json_sync",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_public_url",
                        "api_field": "input",
                        "label": "Source",
                        "title": "Supports these formats as inputs: GIF, PNG, TIFF, WEBP, AVIF, and HEIC\n\nPlease upload images with background transparency only; use Remove Background first, if needed If you upload an image with a background, the scene will be created around the entire image",
                        "section": "Inputs"
                    },
                    "sharpness": {
                        "type": "range",
                        "api_field": "operations.adjustments.sharpness",
                        "subtype": "int",
                        "min": 0,
                        "max": 100,
                        "title": "Increase sharpness",
                        "section": "Settings"
                    },
                    "hdr": {
                        "type": "range",
                        "api_field": "operations.adjustments.hdr",
                        "subtype": "int",
                        "min": 0,
                        "max": 100,
                        "title": "Balance out colors and lighting. Supports changing the intensity of operation. 100 is most recommended",
                        "section": "Settings"
                    },
                    "exposure": {
                        "type": "range",
                        "api_field": "operations.adjustments.exposure",
                        "subtype": "int",
                        "min": -100,
                        "max": 100,
                        "title": "Decrease (negative) or increase (positive) exposure",
                        "section": "Settings"
                    },
                    "saturation": {
                        "type": "range",
                        "api_field": "operations.adjustments.saturation",
                        "subtype": "int",
                        "min": -100,
                        "max": 100,
                        "title": "Decrease (negative) or increase (positive) saturation",
                        "section": "Settings"
                    },
                    "contrast": {
                        "type": "range",
                        "api_field": "operations.adjustments.contrast",
                        "subtype": "int",
                        "min": -100,
                        "max": 100,
                        "title": "Decrease (negative) or increase (positive) contrast",
                        "section": "Settings"
                    },
                    "decompress": {
                        "type": "enum",
                        "api_field": "operations.restorations.decompress",
                        "title": "",
                        "section": "Settings"
                    },
                    "polish": {
                        "type": "bool",
                        "api_field": "operations.restorations.polish",
                        "note": "String-to-bool conversion applied",
                        "title": "Allows you to redraw image parts making them sharper, yet keeping the original structure",
                        "section": "Settings"
                    }
                },
                "_has_output_format_block": true,
                "response": {
                    "images_path": "data.output",
                    "image_url_path": "tmp_url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "upscale": {
                "io": "image → image",
                "description": "Upscale image with quality adjustments",
                "endpoint": "https://api.claid.ai/v1/image/edit",
                "dispatch": "http_json_sync",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "s3_public_url",
                        "api_field": "input",
                        "label": "Source",
                        "title": "Supports these formats as inputs: GIF, PNG, TIFF, WEBP, AVIF, and HEIC\n\nPlease upload images with background transparency only; use Remove Background first, if needed If you upload an image with a background, the scene will be created around the entire image",
                        "section": "Inputs"
                    },
                    "sharpness": {
                        "type": "range",
                        "api_field": "operations.adjustments.sharpness",
                        "subtype": "int",
                        "min": 0,
                        "max": 100,
                        "title": "Increase sharpness",
                        "section": "Settings"
                    },
                    "hdr": {
                        "type": "range",
                        "api_field": "operations.adjustments.hdr",
                        "subtype": "int",
                        "min": 0,
                        "max": 100,
                        "title": "Balance out colors and lighting. Supports changing the intensity of operation. 100 is most recommended",
                        "section": "Settings"
                    },
                    "exposure": {
                        "type": "range",
                        "api_field": "operations.adjustments.exposure",
                        "subtype": "int",
                        "min": -100,
                        "max": 100,
                        "title": "Decrease (negative) or increase (positive) exposure",
                        "section": "Settings"
                    },
                    "saturation": {
                        "type": "range",
                        "api_field": "operations.adjustments.saturation",
                        "subtype": "int",
                        "min": -100,
                        "max": 100,
                        "title": "Decrease (negative) or increase (positive) saturation",
                        "section": "Settings"
                    },
                    "contrast": {
                        "type": "range",
                        "api_field": "operations.adjustments.contrast",
                        "subtype": "int",
                        "min": -100,
                        "max": 100,
                        "title": "Decrease (negative) or increase (positive) contrast",
                        "section": "Settings"
                    },
                    "decompress": {
                        "type": "enum",
                        "options": [
                            "auto",
                            "moderate",
                            "strong"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "moderate": "Moderate",
                            "strong": "Strong"
                        },
                        "api_field": "operations.restorations.decompress",
                        "title": "",
                        "section": "Settings"
                    },
                    "upscale_method": {
                        "type": "enum",
                        "options": [
                            "digital_art",
                            "faces",
                            "photo",
                            "smart_enhance",
                            "smart_resize"
                        ],
                        "option_labels": {
                            "digital_art": "Digital Art",
                            "faces": "Faces",
                            "photo": "Photo",
                            "smart_enhance": "Smart Enhance",
                            "smart_resize": "Smart Resize"
                        },
                        "api_field": "operations.restorations.upscale",
                        "title": "SMART ENHANCE: Used on small low quality product, real estate and food images\n\nSMART RESIZE: Used on high-quality images and photos with barely readable text\n\nDIGITAL ART: Used on drawings, illustrations, paintings, cartoons, anime, etc.\n\nFACES: Used on images containing people\n\nPHOTO: Used on photos of people, nature, architecture, etc. taken with phones or digital cameras",
                        "section": "Settings"
                    },
                    "polish": {
                        "type": "bool",
                        "api_field": "operations.restorations.polish",
                        "note": "String-to-bool conversion applied",
                        "title": "Allows you to redraw image parts making them sharper, yet keeping the original structure",
                        "section": "Settings"
                    },
                    "fit": {
                        "type": "enum_or_object",
                        "options": [
                            "bounds",
                            "canvas",
                            "cover",
                            "crop",
                            "outpaint"
                        ],
                        "api_field": "operations.resizing.fit",
                        "note": "Bare string for simple modes; becomes {type, crop/feathering} object when sub-options provided",
                        "title": "SCALE TO LARGER SIDE: Preserves the aspect ratio. Resize the image to fit entirely within the specified region, making one dimension smaller if needed\n\nSCALE TO SMALLER SIDE: Preserving aspect ratio. Resize the image to entirely cover the specified region, making one dimension larger if needed\n\nSCALE TO CANVAS THEN FILL: Input image will be placed on the canvas established by width and height. The aspect ratio of the input image won’t change. Extra space will be filled with the background color\n\nCROP: Scales an image until it fully covers the specified dimensions, the rest gets cropped. You'll have a choice of crop type as well, if selected\n\nOUTPAINT: Generates a coherent background for an image to fit the specified dimensions, scaling an image until the larger side reaches the edge of canvas established by width and height first, so generation happens on either left-right or top-bottom sides symmetrically",
                        "section": "Settings"
                    },
                    "fit_crop_type": {
                        "type": "enum",
                        "options": [
                            "center",
                            "smart"
                        ],
                        "option_labels": {
                            "center": "Center",
                            "smart": "Smart"
                        },
                        "api_field": "operations.resizing.fit.crop",
                        "conditional": "fit == 'crop'",
                        "title": "CENTER CROP: Crops an image from its center without considering its content\n\nSMART CROP: Detects a main object in a photo and uses it as the center point for cropping",
                        "section": "Settings"
                    },
                    "feathering": {
                        "type": "string",
                        "api_field": "operations.resizing.fit.feathering",
                        "conditional": "fit == 'outpaint'",
                        "note": "Percentage string like '15%'",
                        "title": "Allows you to adjust the smoothness of the transition from the original image content to the generated area\n\nThe feathering value is the ratio of the transition area to the total width or height of the input image, depending on what is being resized\n\nIn most cases there will be two generated areas on the output image, so '50%' is a limit as it will turn the entire input image into a transition area",
                        "section": "Settings"
                    },
                    "width": {
                        "type": "string",
                        "api_field": "operations.resizing.width",
                        "note": "Accepts int, 'auto', or percentage string like '150%'",
                        "title": "",
                        "section": "Output"
                    },
                    "height": {
                        "type": "string",
                        "api_field": "operations.resizing.height",
                        "note": "Accepts int, 'auto', or percentage string like '150%'",
                        "title": "",
                        "section": "Output"
                    }
                },
                "_has_output_format_block": true,
                "response": {
                    "images_path": "data.output",
                    "image_url_path": "tmp_url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "shadows": {
                "io": "image → image",
                "description": "Add realistic shadows to product images",
                "endpoint": "https://api.claid.ai/v1/scene/create",
                "dispatch": "http_json_sync",
                "fields": {
                    "object_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_public_url",
                        "api_field": "object.image_url",
                        "label": "Object Image",
                        "title": "Supports these formats as inputs: GIF, PNG, TIFF, WEBP, AVIF, and HEIC\n\nPlease upload images with background transparency only; use Remove Background first, if needed If you upload an image with a background, the scene will be created around the entire image",
                        "section": "Settings"
                    },
                    "viewpoint": {
                        "type": "enum",
                        "required": false,
                        "default": "front",
                        "api_field": "scene.view",
                        "label": "Scene Viewpoint",
                        "title": "",
                        "section": "Settings"
                    },
                    "background_color_hex": {
                        "type": "color",
                        "required": false,
                        "api_field": "scene.color",
                        "label": "Background Color",
                        "note": "Omitted if transparent_background is set",
                        "title": "",
                        "section": "Settings"
                    },
                    "transparent_background": {
                        "type": "bool",
                        "required": false,
                        "label": "Transparent Background",
                        "title": "",
                        "section": "Settings"
                    }
                },
                "hidden_api_fields": {
                    "scene.effect": "shadows"
                },
                "_has_output_format_block": true,
                "response": {
                    "images_path": "data.output",
                    "image_url_path": "tmp_url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "styletransfer": {
                "io": "image + image + text → image",
                "description": "Transfer visual style from reference to target image",
                "endpoint": "https://api.claid.ai/v1/image/edit",
                "dispatch": "http_json_sync",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": false,
                        "max": 2048,
                        "default": "...",
                        "api_field": "operations.generative.style_transfer.prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_public_url",
                        "api_field": "input",
                        "label": "Target Image",
                        "title": "",
                        "section": "Inputs"
                    },
                    "style_reference": {
                        "type": "image",
                        "required": true,
                        "upload_as": "s3_public_url",
                        "api_field": "operations.generative.style_transfer.style_reference_image",
                        "label": "Style Reference Image",
                        "title": "Supports these formats as inputs: JPEG, PNG, WEBP, AVIF, and HEIC",
                        "section": "Inputs"
                    },
                    "style_strength": {
                        "type": "range",
                        "required": false,
                        "default": 0.75,
                        "api_field": "operations.generative.style_transfer.style_strength",
                        "label": "Style Strength",
                        "subtype": "float",
                        "min": 0,
                        "max": 1,
                        "step": 0.01,
                        "title": "Determines the degree of overall style intensity as taken from the style reference. Higher values means higher reference style influence",
                        "section": "Settings"
                    },
                    "denoising_strength": {
                        "type": "range",
                        "required": false,
                        "default": 0.75,
                        "api_field": "operations.generative.style_transfer.denoising_strength",
                        "label": "Denoising Strength",
                        "subtype": "float",
                        "min": 0,
                        "max": 1,
                        "step": 0.01,
                        "title": "Determines the degree of color and texture modification. Higher values means higher colors and textures creativity",
                        "section": "Settings"
                    },
                    "depth_strength": {
                        "type": "range",
                        "required": false,
                        "default": 1.0,
                        "api_field": "operations.generative.style_transfer.depth_strength",
                        "label": "Depth Strength",
                        "subtype": "float",
                        "min": 0,
                        "max": 1,
                        "step": 0.01,
                        "title": "Determines the degree of overall composition and shape preservation. Higher values means higher input image composition influence",
                        "section": "Settings"
                    }
                },
                "_has_output_format_block": true,
                "response": {
                    "images_path": "data.output",
                    "image_url_path": "tmp_url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "vton": {
                "io": "image → image",
                "description": "AI fashion model virtual try-on",
                "endpoint": "https://api.claid.ai/v1/image/ai-fashion-models",
                "dispatch": "http_poll",
                "poll_url_template": "https://api.claid.ai/v1/image/ai-fashion-models/{task_id}",
                "poll_interval_seconds": 3,
                "max_poll_attempts": 60,
                "fields": {
                    "model_image": {
                        "type": "image",
                        "required": false,
                        "principal_image": true,
                        "upload_as": "s3_public_url",
                        "api_field": "input.model",
                        "label": "Model/Person Image",
                        "title": "Primary image of the person on whom the virtual try-on will be performed",
                        "section": "Inputs"
                    },
                    "clothing_images": {
                        "type": "image_list",
                        "required": true,
                        "upload_as": "s3_public_url_list",
                        "api_field": "input.clothing",
                        "label": "Clothing Images",
                        "title": "",
                        "section": "Inputs"
                    },
                    "pose": {
                        "type": "enum",
                        "required": false,
                        "default": "front view",
                        "api_field": "options.pose",
                        "label": "Pose",
                        "title": "",
                        "section": "Settings"
                    },
                    "background": {
                        "type": "text",
                        "required": false,
                        "default": "minimalistic studio background",
                        "api_field": "options.background",
                        "label": "Background Prompt",
                        "title": "Describe the background you want to see",
                        "section": "Output"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "api_field": "options.aspect_ratio",
                        "label": "Ratio",
                        "title": "Ratio of width to height",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "webp",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output.format",
                        "label": "Format",
                        "note": "Uses different format field than other modes (jpeg_png vs avif_jpeg_png_webp)",
                        "title": "Desired file format of the resulting image",
                        "section": "Output"
                    }
                },
                "hidden_api_fields": {
                    "output.number_of_images": 1
                },
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.result.output_objects",
                    "image_url_path": "tmp_url",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "decor8ai": {
        "name": "Decor8 AI",
        "shortname": "Decor8 AI",
        "vendor": "Decor8 AI",
        "family": "Decor8",
        "deprecated": false,
        "docs_url": "https://api-docs.decor8.ai",
        "platforms": {
            "decor8ai": {
                "name": "Decor8 AI",
                "type": "direct",
                "dispatch": "http_json",
                "secret_id": "decor8ai",
                "env_var": "DECOR8AI_API_KEY",
                "base_url": "https://api.decor8.ai",
                "auth_header": "Authorization",
                "auth_prefix": "Bearer",
                "api_field_map": {},
                "hidden_api_fields": {}
            }
        },
        "constraints": {},
        "_enums_doc": "RoomType, DesignStyle, ColorScheme, and SpecialityDecor are shared enums referenced by multiple modes. They are defined once here and referenced by each mode's field options.",
        "_shared_enums": {
            "room_type": [
                "back_patio",
                "back_porch",
                "balcony",
                "basement",
                "bathroom",
                "bedroom",
                "boardroom",
                "cafe",
                "diningroom",
                "familyroom",
                "foyer",
                "front_porch",
                "garage",
                "gym",
                "homebar",
                "kidsroom",
                "kitchen",
                "laundryroom",
                "livingroom",
                "meetingroom",
                "mudroom",
                "office",
                "openplan",
                "openworkspace",
                "powderroom",
                "privateoffice",
                "readingnook",
                "study_room",
                "sunroom",
                "toyroom",
                "walkincloset"
            ],
            "room_type_labels": {
                "back_patio": "Back Patio",
                "back_porch": "Back Porch",
                "balcony": "Balcony",
                "basement": "Basement",
                "bathroom": "Bathroom",
                "bedroom": "Bedroom",
                "boardroom": "Boardroom",
                "cafe": "Café",
                "diningroom": "Dining Room",
                "familyroom": "Family Room",
                "foyer": "Foyer",
                "front_porch": "Front Porch",
                "garage": "Garage",
                "gym": "Gym",
                "homebar": "Home Bar",
                "kidsroom": "Kid's Room",
                "kitchen": "Kitchen",
                "laundryroom": "Laundry Room",
                "livingroom": "Living Room",
                "meetingroom": "Meeting Room",
                "mudroom": "Mudroom",
                "office": "Office",
                "openplan": "Open Plan",
                "openworkspace": "Open Workspace",
                "powderroom": "Powder Room",
                "privateoffice": "Private Office",
                "readingnook": "Reading Nook",
                "study_room": "Study Room",
                "sunroom": "Sunroom",
                "toyroom": "Toy Room",
                "walkincloset": "Walk-In Closet"
            },
            "design_style": [
                "arabic",
                "artdeco",
                "artnouveau",
                "asian_zen",
                "bauhaus",
                "boho",
                "cabin",
                "coastal",
                "coastalgrandmother",
                "contemporary",
                "cottagecore",
                "country",
                "desertmodern",
                "eclectic",
                "europeanclassic",
                "farmhouse",
                "frenchcountry",
                "global",
                "gothic",
                "grandmillennial",
                "high_tech",
                "hollywoodregency",
                "industrial",
                "industrialchic",
                "japandi",
                "luxemodern",
                "maximalist",
                "mediterranean",
                "midcenturymodern",
                "minimalist",
                "modern",
                "modernfarmhouse",
                "moroccan",
                "neotraditional",
                "newtraditional",
                "organicmodern",
                "retrofuturism",
                "rustic",
                "scandinavian",
                "shabbychic",
                "southwestern",
                "traditional",
                "transitional",
                "tropical",
                "tuscan",
                "urbanmodern",
                "victorian",
                "vintage",
                "wabi_sabi",
                "warmminimalist"
            ],
            "design_style_labels": {
                "arabic": "Arabic",
                "artdeco": "Art Deco",
                "artnouveau": "Art Nouveau",
                "asian_zen": "Asian Zen",
                "bauhaus": "Bauhaus",
                "boho": "Boho",
                "cabin": "Cabin",
                "coastal": "Coastal",
                "coastalgrandmother": "Coastal Grandmother",
                "contemporary": "Contemporary",
                "cottagecore": "Cottagecore",
                "country": "Country",
                "desertmodern": "Desert Modern",
                "eclectic": "Eclectic",
                "europeanclassic": "European Classic",
                "farmhouse": "Farmhouse",
                "frenchcountry": "French Country",
                "global": "Global",
                "gothic": "Gothic",
                "grandmillennial": "Grandmillennial",
                "high_tech": "High-Tech",
                "hollywoodregency": "Hollywood Regency",
                "industrial": "Industrial",
                "industrialchic": "Industrial Chic",
                "japandi": "Japandi",
                "luxemodern": "Luxe Modern",
                "maximalist": "Maximalist",
                "mediterranean": "Mediterranean",
                "midcenturymodern": "Mid-Century Modern",
                "minimalist": "Minimalist",
                "modern": "Modern",
                "modernfarmhouse": "Modern Farmhouse",
                "moroccan": "Moroccan",
                "neotraditional": "Neo-Traditional",
                "newtraditional": "New Traditional",
                "organicmodern": "Organic Modern",
                "retrofuturism": "Retrofuturism",
                "rustic": "Rustic",
                "scandinavian": "Scandinavian",
                "shabbychic": "Shabby Chic",
                "southwestern": "Southwestern",
                "traditional": "Traditional",
                "transitional": "Transitional",
                "tropical": "Tropical",
                "tuscan": "Tuscan",
                "urbanmodern": "Urban Modern",
                "victorian": "Victorian",
                "vintage": "Vintage",
                "wabi_sabi": "Wabi-Sabi",
                "warmminimalist": "Warm Minimalist"
            },
            "color_scheme": [
                "COLOR_SCHEME_0",
                "COLOR_SCHEME_1",
                "COLOR_SCHEME_2",
                "COLOR_SCHEME_3",
                "COLOR_SCHEME_4",
                "COLOR_SCHEME_5",
                "COLOR_SCHEME_6",
                "COLOR_SCHEME_7",
                "COLOR_SCHEME_8",
                "COLOR_SCHEME_9",
                "COLOR_SCHEME_10",
                "COLOR_SCHEME_11",
                "COLOR_SCHEME_12",
                "COLOR_SCHEME_13",
                "COLOR_SCHEME_14",
                "COLOR_SCHEME_15",
                "COLOR_SCHEME_16",
                "COLOR_SCHEME_17",
                "COLOR_SCHEME_18",
                "COLOR_SCHEME_19",
                "COLOR_SCHEME_20"
            ],
            "color_scheme_labels": {
                "COLOR_SCHEME_0": "Default",
                "COLOR_SCHEME_1": "Moss Green, Tan, White",
                "COLOR_SCHEME_2": "Gray, Sand, Blue",
                "COLOR_SCHEME_3": "Hunter Green, Red",
                "COLOR_SCHEME_4": "White, Pops of Color",
                "COLOR_SCHEME_5": "Blue, Neon",
                "COLOR_SCHEME_6": "Light Blue, Emerald",
                "COLOR_SCHEME_7": "Blue, Grass Green",
                "COLOR_SCHEME_8": "Blue, Beige",
                "COLOR_SCHEME_9": "Gray, Brown",
                "COLOR_SCHEME_10": "Black, Red",
                "COLOR_SCHEME_11": "Gray-Green, White, Black",
                "COLOR_SCHEME_12": "Blue, Gray, Taupe",
                "COLOR_SCHEME_13": "Black, Navy",
                "COLOR_SCHEME_14": "Emerald, Tan",
                "COLOR_SCHEME_15": "Forest Green, Light Gray",
                "COLOR_SCHEME_16": "Yellow, Gray",
                "COLOR_SCHEME_17": "Pink, Green",
                "COLOR_SCHEME_18": "Blush Pink, Black",
                "COLOR_SCHEME_19": "Black, White",
                "COLOR_SCHEME_20": "Blue, White"
            },
            "speciality_decor": [
                "SPECIALITY_DECOR_0",
                "SPECIALITY_DECOR_1",
                "SPECIALITY_DECOR_2",
                "SPECIALITY_DECOR_3",
                "SPECIALITY_DECOR_4",
                "SPECIALITY_DECOR_5",
                "SPECIALITY_DECOR_6",
                "SPECIALITY_DECOR_7"
            ],
            "speciality_decor_labels": {
                "SPECIALITY_DECOR_0": "None",
                "SPECIALITY_DECOR_1": "Halloween",
                "SPECIALITY_DECOR_2": "Christmas",
                "SPECIALITY_DECOR_3": "Thanksgiving / Fall",
                "SPECIALITY_DECOR_4": "Fall Season",
                "SPECIALITY_DECOR_5": "Spring Season",
                "SPECIALITY_DECOR_6": "Summer Season",
                "SPECIALITY_DECOR_7": "Winter Season"
            }
        },
        "modes": {
            "decorate": {
                "io": "image + text → image",
                "description": "Virtual staging — furnish and style an empty or existing room",
                "endpoint": "https://api.decor8.ai/generate_designs_for_room",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_url",
                        "api_field": "input_image_url",
                        "label": "Source",
                        "title": "Photo of the room to stage",
                        "section": "Inputs"
                    },
                    "room_type": {
                        "type": "enum",
                        "required": true,
                        "api_field": "room_type",
                        "label": "Room Type",
                        "title": "Type of room being staged",
                        "note": "Ignored when prompt is provided",
                        "options": [
                            "back_patio",
                            "back_porch",
                            "balcony",
                            "basement",
                            "bathroom",
                            "bedroom",
                            "boardroom",
                            "cafe",
                            "diningroom",
                            "familyroom",
                            "foyer",
                            "front_porch",
                            "garage",
                            "gym",
                            "homebar",
                            "kidsroom",
                            "kitchen",
                            "laundryroom",
                            "livingroom",
                            "meetingroom",
                            "mudroom",
                            "office",
                            "openplan",
                            "openworkspace",
                            "powderroom",
                            "privateoffice",
                            "readingnook",
                            "study_room",
                            "sunroom",
                            "toyroom",
                            "walkincloset"
                        ],
                        "option_labels": {
                            "back_patio": "Back Patio",
                            "back_porch": "Back Porch",
                            "balcony": "Balcony",
                            "basement": "Basement",
                            "bathroom": "Bathroom",
                            "bedroom": "Bedroom",
                            "boardroom": "Boardroom",
                            "cafe": "Café",
                            "diningroom": "Dining Room",
                            "familyroom": "Family Room",
                            "foyer": "Foyer",
                            "front_porch": "Front Porch",
                            "garage": "Garage",
                            "gym": "Gym",
                            "homebar": "Home Bar",
                            "kidsroom": "Kid's Room",
                            "kitchen": "Kitchen",
                            "laundryroom": "Laundry Room",
                            "livingroom": "Living Room",
                            "meetingroom": "Meeting Room",
                            "mudroom": "Mudroom",
                            "office": "Office",
                            "openplan": "Open Plan",
                            "openworkspace": "Open Workspace",
                            "powderroom": "Powder Room",
                            "privateoffice": "Private Office",
                            "readingnook": "Reading Nook",
                            "study_room": "Study Room",
                            "sunroom": "Sunroom",
                            "toyroom": "Toy Room",
                            "walkincloset": "Walk-In Closet"
                        },
                        "section": "Settings"
                    },
                    "design_style": {
                        "type": "enum",
                        "required": true,
                        "api_field": "design_style",
                        "label": "Design Style",
                        "title": "Interior design style to apply",
                        "note": "Ignored when prompt is provided",
                        "options": [
                            "arabic",
                            "artdeco",
                            "artnouveau",
                            "asian_zen",
                            "bauhaus",
                            "boho",
                            "cabin",
                            "coastal",
                            "coastalgrandmother",
                            "contemporary",
                            "cottagecore",
                            "country",
                            "desertmodern",
                            "eclectic",
                            "europeanclassic",
                            "farmhouse",
                            "frenchcountry",
                            "global",
                            "gothic",
                            "grandmillennial",
                            "high_tech",
                            "hollywoodregency",
                            "industrial",
                            "industrialchic",
                            "japandi",
                            "luxemodern",
                            "maximalist",
                            "mediterranean",
                            "midcenturymodern",
                            "minimalist",
                            "modern",
                            "modernfarmhouse",
                            "moroccan",
                            "neotraditional",
                            "newtraditional",
                            "organicmodern",
                            "retrofuturism",
                            "rustic",
                            "scandinavian",
                            "shabbychic",
                            "southwestern",
                            "traditional",
                            "transitional",
                            "tropical",
                            "tuscan",
                            "urbanmodern",
                            "victorian",
                            "vintage",
                            "wabi_sabi",
                            "warmminimalist"
                        ],
                        "option_labels": {
                            "arabic": "Arabic",
                            "artdeco": "Art Deco",
                            "artnouveau": "Art Nouveau",
                            "asian_zen": "Asian Zen",
                            "bauhaus": "Bauhaus",
                            "boho": "Boho",
                            "cabin": "Cabin",
                            "coastal": "Coastal",
                            "coastalgrandmother": "Coastal Grandmother",
                            "contemporary": "Contemporary",
                            "cottagecore": "Cottagecore",
                            "country": "Country",
                            "desertmodern": "Desert Modern",
                            "eclectic": "Eclectic",
                            "europeanclassic": "European Classic",
                            "farmhouse": "Farmhouse",
                            "frenchcountry": "French Country",
                            "global": "Global",
                            "gothic": "Gothic",
                            "grandmillennial": "Grandmillennial",
                            "high_tech": "High-Tech",
                            "hollywoodregency": "Hollywood Regency",
                            "industrial": "Industrial",
                            "industrialchic": "Industrial Chic",
                            "japandi": "Japandi",
                            "luxemodern": "Luxe Modern",
                            "maximalist": "Maximalist",
                            "mediterranean": "Mediterranean",
                            "midcenturymodern": "Mid-Century Modern",
                            "minimalist": "Minimalist",
                            "modern": "Modern",
                            "modernfarmhouse": "Modern Farmhouse",
                            "moroccan": "Moroccan",
                            "neotraditional": "Neo-Traditional",
                            "newtraditional": "New Traditional",
                            "organicmodern": "Organic Modern",
                            "retrofuturism": "Retrofuturism",
                            "rustic": "Rustic",
                            "scandinavian": "Scandinavian",
                            "shabbychic": "Shabby Chic",
                            "southwestern": "Southwestern",
                            "traditional": "Traditional",
                            "transitional": "Transitional",
                            "tropical": "Tropical",
                            "tuscan": "Tuscan",
                            "urbanmodern": "Urban Modern",
                            "victorian": "Victorian",
                            "vintage": "Vintage",
                            "wabi_sabi": "Wabi-Sabi",
                            "warmminimalist": "Warm Minimalist"
                        },
                        "section": "Settings"
                    },
                    "prompt": {
                        "type": "text",
                        "required": false,
                        "api_field": "prompt",
                        "label": "Custom Prompt",
                        "title": "Overrides Room Type, Design Style, Color Scheme, and Specialty Decor when provided",
                        "section": "Prompts"
                    },
                    "num_images": {
                        "type": "range",
                        "required": true,
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of design variations to generate",
                        "section": "Output"
                    },
                    "scale_factor": {
                        "type": "range",
                        "required": false,
                        "default": 2,
                        "min": 1,
                        "max": 8,
                        "subtype": "int",
                        "api_field": "scale_factor",
                        "label": "Scale Factor",
                        "title": "Output resolution multiplier (1× = 768px max, 2× = 1536px max, up to 8× = 6144px max)\n\nScale factors above 2× incur additional credits",
                        "section": "Output"
                    },
                    "color_scheme": {
                        "type": "enum",
                        "required": false,
                        "api_field": "color_scheme",
                        "label": "Color Scheme",
                        "title": "Preferred color palette for the design",
                        "note": "Ignored when prompt is provided",
                        "options": [
                            "COLOR_SCHEME_0",
                            "COLOR_SCHEME_1",
                            "COLOR_SCHEME_2",
                            "COLOR_SCHEME_3",
                            "COLOR_SCHEME_4",
                            "COLOR_SCHEME_5",
                            "COLOR_SCHEME_6",
                            "COLOR_SCHEME_7",
                            "COLOR_SCHEME_8",
                            "COLOR_SCHEME_9",
                            "COLOR_SCHEME_10",
                            "COLOR_SCHEME_11",
                            "COLOR_SCHEME_12",
                            "COLOR_SCHEME_13",
                            "COLOR_SCHEME_14",
                            "COLOR_SCHEME_15",
                            "COLOR_SCHEME_16",
                            "COLOR_SCHEME_17",
                            "COLOR_SCHEME_18",
                            "COLOR_SCHEME_19",
                            "COLOR_SCHEME_20"
                        ],
                        "option_labels": {
                            "COLOR_SCHEME_0": "Default",
                            "COLOR_SCHEME_1": "Moss Green, Tan, White",
                            "COLOR_SCHEME_2": "Gray, Sand, Blue",
                            "COLOR_SCHEME_3": "Hunter Green, Red",
                            "COLOR_SCHEME_4": "White, Pops of Color",
                            "COLOR_SCHEME_5": "Blue, Neon",
                            "COLOR_SCHEME_6": "Light Blue, Emerald",
                            "COLOR_SCHEME_7": "Blue, Grass Green",
                            "COLOR_SCHEME_8": "Blue, Beige",
                            "COLOR_SCHEME_9": "Gray, Brown",
                            "COLOR_SCHEME_10": "Black, Red",
                            "COLOR_SCHEME_11": "Gray-Green, White, Black",
                            "COLOR_SCHEME_12": "Blue, Gray, Taupe",
                            "COLOR_SCHEME_13": "Black, Navy",
                            "COLOR_SCHEME_14": "Emerald, Tan",
                            "COLOR_SCHEME_15": "Forest Green, Light Gray",
                            "COLOR_SCHEME_16": "Yellow, Gray",
                            "COLOR_SCHEME_17": "Pink, Green",
                            "COLOR_SCHEME_18": "Blush Pink, Black",
                            "COLOR_SCHEME_19": "Black, White",
                            "COLOR_SCHEME_20": "Blue, White"
                        },
                        "section": "Settings"
                    },
                    "speciality_decor": {
                        "type": "enum",
                        "required": false,
                        "api_field": "speciality_decor",
                        "label": "Specialty Decor",
                        "title": "Seasonal or themed decor to include",
                        "note": "Ignored when prompt is provided",
                        "options": [
                            "SPECIALITY_DECOR_0",
                            "SPECIALITY_DECOR_1",
                            "SPECIALITY_DECOR_2",
                            "SPECIALITY_DECOR_3",
                            "SPECIALITY_DECOR_4",
                            "SPECIALITY_DECOR_5",
                            "SPECIALITY_DECOR_6",
                            "SPECIALITY_DECOR_7"
                        ],
                        "option_labels": {
                            "SPECIALITY_DECOR_0": "None",
                            "SPECIALITY_DECOR_1": "Halloween",
                            "SPECIALITY_DECOR_2": "Christmas",
                            "SPECIALITY_DECOR_3": "Thanksgiving / Fall",
                            "SPECIALITY_DECOR_4": "Fall Season",
                            "SPECIALITY_DECOR_5": "Spring Season",
                            "SPECIALITY_DECOR_6": "Summer Season",
                            "SPECIALITY_DECOR_7": "Winter Season"
                        },
                        "section": "Settings"
                    },
                    "design_style_image": {
                        "type": "image",
                        "required": false,
                        "upload_as": "s3_url",
                        "api_field": "design_style_image_url",
                        "label": "Style Reference Image",
                        "title": "An image whose visual style should influence the output\n\nCosts 1 additional credit per output image",
                        "section": "Inputs"
                    },
                    "design_style_image_strength": {
                        "type": "range",
                        "required": false,
                        "default": 0.82,
                        "min": 0,
                        "max": 1,
                        "step": 0.01,
                        "subtype": "float",
                        "api_field": "design_style_image_strength",
                        "label": "Style Image Strength",
                        "title": "How strongly the style reference image influences the result (higher = stronger)",
                        "visible_when": {
                            "design_style_image": "!empty"
                        },
                        "section": "Settings"
                    },
                    "design_creativity": {
                        "type": "range",
                        "required": false,
                        "default": 0.39,
                        "min": 0,
                        "max": 1,
                        "step": 0.01,
                        "subtype": "float",
                        "api_field": "design_creativity",
                        "label": "Design Creativity",
                        "title": "Level of creative alteration to the overall look (higher = more creative)",
                        "section": "Settings"
                    },
                    "guidance_scale": {
                        "type": "range",
                        "required": false,
                        "default": 15,
                        "min": 1,
                        "max": 20,
                        "step": 0.5,
                        "subtype": "float",
                        "api_field": "guidance_scale",
                        "label": "Guidance Scale",
                        "title": "How closely the model follows the prompt (higher = stricter adherence, lower = more creative freedom)",
                        "section": "Settings"
                    },
                    "num_inference_steps": {
                        "type": "range",
                        "required": false,
                        "default": 50,
                        "min": 1,
                        "max": 75,
                        "subtype": "int",
                        "api_field": "num_inference_steps",
                        "label": "Inference Steps",
                        "title": "Number of denoising steps (higher = better quality but slower)",
                        "section": "Settings"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Using the same seed with identical parameters will generate similar images. Default is random\n\nNote: Useful for consistency across generations but results may still vary slightly",
                        "section": "Output"
                    }
                },
                "response": {
                    "images_path": "info.images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "createroom": {
                "io": "text → image",
                "description": "Generate room design concepts without a source photo",
                "endpoint": "https://api.decor8.ai/generate_inspirational_designs",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "room_type": {
                        "type": "enum",
                        "required": true,
                        "api_field": "room_type",
                        "label": "Room Type",
                        "title": "Type of room to visualize",
                        "note": "Ignored when prompt is provided",
                        "options": [
                            "back_patio",
                            "back_porch",
                            "balcony",
                            "basement",
                            "bathroom",
                            "bedroom",
                            "boardroom",
                            "cafe",
                            "diningroom",
                            "familyroom",
                            "foyer",
                            "front_porch",
                            "garage",
                            "gym",
                            "homebar",
                            "kidsroom",
                            "kitchen",
                            "laundryroom",
                            "livingroom",
                            "meetingroom",
                            "mudroom",
                            "office",
                            "openplan",
                            "openworkspace",
                            "powderroom",
                            "privateoffice",
                            "readingnook",
                            "study_room",
                            "sunroom",
                            "toyroom",
                            "walkincloset"
                        ],
                        "option_labels": {
                            "back_patio": "Back Patio",
                            "back_porch": "Back Porch",
                            "balcony": "Balcony",
                            "basement": "Basement",
                            "bathroom": "Bathroom",
                            "bedroom": "Bedroom",
                            "boardroom": "Boardroom",
                            "cafe": "Café",
                            "diningroom": "Dining Room",
                            "familyroom": "Family Room",
                            "foyer": "Foyer",
                            "front_porch": "Front Porch",
                            "garage": "Garage",
                            "gym": "Gym",
                            "homebar": "Home Bar",
                            "kidsroom": "Kid's Room",
                            "kitchen": "Kitchen",
                            "laundryroom": "Laundry Room",
                            "livingroom": "Living Room",
                            "meetingroom": "Meeting Room",
                            "mudroom": "Mudroom",
                            "office": "Office",
                            "openplan": "Open Plan",
                            "openworkspace": "Open Workspace",
                            "powderroom": "Powder Room",
                            "privateoffice": "Private Office",
                            "readingnook": "Reading Nook",
                            "study_room": "Study Room",
                            "sunroom": "Sunroom",
                            "toyroom": "Toy Room",
                            "walkincloset": "Walk-In Closet"
                        },
                        "section": "Settings"
                    },
                    "design_style": {
                        "type": "enum",
                        "required": true,
                        "api_field": "design_style",
                        "label": "Design Style",
                        "title": "Interior design style to apply",
                        "note": "Ignored when prompt is provided",
                        "options": [
                            "arabic",
                            "artdeco",
                            "artnouveau",
                            "asian_zen",
                            "bauhaus",
                            "boho",
                            "cabin",
                            "coastal",
                            "coastalgrandmother",
                            "contemporary",
                            "cottagecore",
                            "country",
                            "desertmodern",
                            "eclectic",
                            "europeanclassic",
                            "farmhouse",
                            "frenchcountry",
                            "global",
                            "gothic",
                            "grandmillennial",
                            "high_tech",
                            "hollywoodregency",
                            "industrial",
                            "industrialchic",
                            "japandi",
                            "luxemodern",
                            "maximalist",
                            "mediterranean",
                            "midcenturymodern",
                            "minimalist",
                            "modern",
                            "modernfarmhouse",
                            "moroccan",
                            "neotraditional",
                            "newtraditional",
                            "organicmodern",
                            "retrofuturism",
                            "rustic",
                            "scandinavian",
                            "shabbychic",
                            "southwestern",
                            "traditional",
                            "transitional",
                            "tropical",
                            "tuscan",
                            "urbanmodern",
                            "victorian",
                            "vintage",
                            "wabi_sabi",
                            "warmminimalist"
                        ],
                        "option_labels": {
                            "arabic": "Arabic",
                            "artdeco": "Art Deco",
                            "artnouveau": "Art Nouveau",
                            "asian_zen": "Asian Zen",
                            "bauhaus": "Bauhaus",
                            "boho": "Boho",
                            "cabin": "Cabin",
                            "coastal": "Coastal",
                            "coastalgrandmother": "Coastal Grandmother",
                            "contemporary": "Contemporary",
                            "cottagecore": "Cottagecore",
                            "country": "Country",
                            "desertmodern": "Desert Modern",
                            "eclectic": "Eclectic",
                            "europeanclassic": "European Classic",
                            "farmhouse": "Farmhouse",
                            "frenchcountry": "French Country",
                            "global": "Global",
                            "gothic": "Gothic",
                            "grandmillennial": "Grandmillennial",
                            "high_tech": "High-Tech",
                            "hollywoodregency": "Hollywood Regency",
                            "industrial": "Industrial",
                            "industrialchic": "Industrial Chic",
                            "japandi": "Japandi",
                            "luxemodern": "Luxe Modern",
                            "maximalist": "Maximalist",
                            "mediterranean": "Mediterranean",
                            "midcenturymodern": "Mid-Century Modern",
                            "minimalist": "Minimalist",
                            "modern": "Modern",
                            "modernfarmhouse": "Modern Farmhouse",
                            "moroccan": "Moroccan",
                            "neotraditional": "Neo-Traditional",
                            "newtraditional": "New Traditional",
                            "organicmodern": "Organic Modern",
                            "retrofuturism": "Retrofuturism",
                            "rustic": "Rustic",
                            "scandinavian": "Scandinavian",
                            "shabbychic": "Shabby Chic",
                            "southwestern": "Southwestern",
                            "traditional": "Traditional",
                            "transitional": "Transitional",
                            "tropical": "Tropical",
                            "tuscan": "Tuscan",
                            "urbanmodern": "Urban Modern",
                            "victorian": "Victorian",
                            "vintage": "Vintage",
                            "wabi_sabi": "Wabi-Sabi",
                            "warmminimalist": "Warm Minimalist"
                        },
                        "section": "Settings"
                    },
                    "prompt": {
                        "type": "text",
                        "required": false,
                        "api_field": "prompt",
                        "label": "Custom Prompt",
                        "title": "Overrides Room Type, Design Style, Color Scheme, and Specialty Decor when provided",
                        "section": "Prompts"
                    },
                    "num_images": {
                        "type": "range",
                        "required": true,
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of design variations to generate",
                        "section": "Output"
                    },
                    "color_scheme": {
                        "type": "enum",
                        "required": false,
                        "api_field": "color_scheme",
                        "label": "Color Scheme",
                        "title": "Preferred color palette for the design",
                        "note": "Ignored when prompt is provided",
                        "options": [
                            "COLOR_SCHEME_0",
                            "COLOR_SCHEME_1",
                            "COLOR_SCHEME_2",
                            "COLOR_SCHEME_3",
                            "COLOR_SCHEME_4",
                            "COLOR_SCHEME_5",
                            "COLOR_SCHEME_6",
                            "COLOR_SCHEME_7",
                            "COLOR_SCHEME_8",
                            "COLOR_SCHEME_9",
                            "COLOR_SCHEME_10",
                            "COLOR_SCHEME_11",
                            "COLOR_SCHEME_12",
                            "COLOR_SCHEME_13",
                            "COLOR_SCHEME_14",
                            "COLOR_SCHEME_15",
                            "COLOR_SCHEME_16",
                            "COLOR_SCHEME_17",
                            "COLOR_SCHEME_18",
                            "COLOR_SCHEME_19",
                            "COLOR_SCHEME_20"
                        ],
                        "option_labels": {
                            "COLOR_SCHEME_0": "Default",
                            "COLOR_SCHEME_1": "Moss Green, Tan, White",
                            "COLOR_SCHEME_2": "Gray, Sand, Blue",
                            "COLOR_SCHEME_3": "Hunter Green, Red",
                            "COLOR_SCHEME_4": "White, Pops of Color",
                            "COLOR_SCHEME_5": "Blue, Neon",
                            "COLOR_SCHEME_6": "Light Blue, Emerald",
                            "COLOR_SCHEME_7": "Blue, Grass Green",
                            "COLOR_SCHEME_8": "Blue, Beige",
                            "COLOR_SCHEME_9": "Gray, Brown",
                            "COLOR_SCHEME_10": "Black, Red",
                            "COLOR_SCHEME_11": "Gray-Green, White, Black",
                            "COLOR_SCHEME_12": "Blue, Gray, Taupe",
                            "COLOR_SCHEME_13": "Black, Navy",
                            "COLOR_SCHEME_14": "Emerald, Tan",
                            "COLOR_SCHEME_15": "Forest Green, Light Gray",
                            "COLOR_SCHEME_16": "Yellow, Gray",
                            "COLOR_SCHEME_17": "Pink, Green",
                            "COLOR_SCHEME_18": "Blush Pink, Black",
                            "COLOR_SCHEME_19": "Black, White",
                            "COLOR_SCHEME_20": "Blue, White"
                        },
                        "section": "Settings"
                    },
                    "speciality_decor": {
                        "type": "enum",
                        "required": false,
                        "api_field": "speciality_decor",
                        "label": "Specialty Decor",
                        "title": "Seasonal or themed decor to include",
                        "note": "Ignored when prompt is provided",
                        "options": [
                            "SPECIALITY_DECOR_0",
                            "SPECIALITY_DECOR_1",
                            "SPECIALITY_DECOR_2",
                            "SPECIALITY_DECOR_3",
                            "SPECIALITY_DECOR_4",
                            "SPECIALITY_DECOR_5",
                            "SPECIALITY_DECOR_6",
                            "SPECIALITY_DECOR_7"
                        ],
                        "option_labels": {
                            "SPECIALITY_DECOR_0": "None",
                            "SPECIALITY_DECOR_1": "Halloween",
                            "SPECIALITY_DECOR_2": "Christmas",
                            "SPECIALITY_DECOR_3": "Thanksgiving / Fall",
                            "SPECIALITY_DECOR_4": "Fall Season",
                            "SPECIALITY_DECOR_5": "Spring Season",
                            "SPECIALITY_DECOR_6": "Summer Season",
                            "SPECIALITY_DECOR_7": "Winter Season"
                        },
                        "section": "Settings"
                    },
                    "guidance_scale": {
                        "type": "range",
                        "required": false,
                        "default": 15,
                        "min": 1,
                        "max": 20,
                        "step": 0.5,
                        "subtype": "float",
                        "api_field": "guidance_scale",
                        "label": "Guidance Scale",
                        "title": "How closely the model follows the prompt",
                        "section": "Settings"
                    },
                    "num_inference_steps": {
                        "type": "range",
                        "required": false,
                        "default": 35,
                        "min": 1,
                        "max": 75,
                        "subtype": "int",
                        "api_field": "num_inference_steps",
                        "label": "Inference Steps",
                        "title": "Number of denoising steps (higher = better quality but slower)",
                        "section": "Settings"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Using the same seed with identical parameters will generate similar images. Default is random\n\nNote: Useful for consistency across generations but results may still vary slightly",
                        "section": "Output"
                    }
                },
                "response": {
                    "images_path": "info.images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "wallprime": {
                "io": "image → image",
                "description": "Apply a clean neutral finish to room walls",
                "endpoint": "https://api.decor8.ai/prime_walls_for_room",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_url",
                        "api_field": "input_image_url",
                        "label": "Source",
                        "title": "Photo of the room whose walls should be primed",
                        "section": "Inputs"
                    }
                },
                "response": {
                    "image_url_path": "details.primed_image_url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "replacesky": {
                "io": "image → image",
                "description": "Replace the sky in exterior property photos",
                "endpoint": "https://api.decor8.ai/replace_sky_behind_house",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_url",
                        "api_field": "input_image_url",
                        "label": "Source",
                        "title": "Exterior photo with sky to replace",
                        "section": "Inputs"
                    },
                    "sky_type": {
                        "type": "enum",
                        "required": true,
                        "api_field": "sky_type",
                        "label": "Sky Type",
                        "title": "Desired sky appearance",
                        "options": [
                            "day",
                            "dusk",
                            "night"
                        ],
                        "option_labels": {
                            "day": "Day",
                            "dusk": "Dusk",
                            "night": "Night"
                        },
                        "section": "Settings"
                    }
                },
                "response": {
                    "image_url_path": "new_image_url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "emptyroom": {
                "io": "image → image",
                "description": "Remove furniture and decor from a room, preserving architecture",
                "endpoint": "https://api.decor8.ai/remove_objects_from_room",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_url",
                        "api_field": "input_image_url",
                        "label": "Source",
                        "title": "Photo of the room to empty",
                        "section": "Inputs"
                    },
                    "mask": {
                        "type": "image",
                        "required": false,
                        "principal_mask": true,
                        "mask_padding": "#ffffff",
                        "upload_as": "s3_url",
                        "api_field": "mask_image_url",
                        "label": "Mask",
                        "title": "White pixels = areas to remove, black pixels = areas to preserve\n\nMust have the same aspect ratio as the source image\n\nIf omitted, all furniture and decor is removed automatically",
                        "section": "Inputs"
                    }
                },
                "response": {
                    "image_url_path": "info.image.url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "wallcolor": {
                "io": "image → image",
                "description": "Preview wall paint colors on a room photo",
                "endpoint": "https://api.decor8.ai/change_wall_color",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_url",
                        "api_field": "input_image_url",
                        "label": "Source",
                        "title": "Photo of the room",
                        "section": "Inputs"
                    },
                    "wall_color_hex_code": {
                        "type": "color",
                        "required": true,
                        "api_field": "wall_color_hex_code",
                        "label": "Wall Color",
                        "title": "Hex color code for the new wall color",
                        "section": "Settings"
                    }
                },
                "response": {
                    "images_path": "info.images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "cabinetcolor": {
                "io": "image → image",
                "description": "Preview kitchen cabinet refinishing colors",
                "endpoint": "https://api.decor8.ai/change_kitchen_cabinets_color",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_url",
                        "api_field": "input_image_url",
                        "label": "Source",
                        "title": "Photo of the kitchen",
                        "section": "Inputs"
                    },
                    "cabinet_color_hex_code": {
                        "type": "color",
                        "required": true,
                        "api_field": "cabinet_color_hex_code",
                        "label": "Cabinet Color",
                        "title": "Hex color code for the new cabinet color",
                        "section": "Settings"
                    }
                },
                "response": {
                    "images_path": "info.images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "landscaping": {
                "io": "image + text → image",
                "description": "Generate landscaping designs for yards and outdoor spaces (Beta)",
                "endpoint": "https://api.decor8.ai/generate_landscaping_designs",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_url",
                        "api_field": "input_image_url",
                        "label": "Source",
                        "title": "Photo of the yard or outdoor space",
                        "section": "Inputs"
                    },
                    "yard_type": {
                        "type": "enum",
                        "required": true,
                        "api_field": "yard_type",
                        "label": "Yard Type",
                        "title": "Type of outdoor area",
                        "options": [
                            "Backyard",
                            "Front Yard",
                            "Side Yard"
                        ],
                        "option_labels": {
                            "Backyard": "Backyard",
                            "Front Yard": "Front Yard",
                            "Side Yard": "Side Yard"
                        },
                        "section": "Settings"
                    },
                    "garden_style": {
                        "type": "enum",
                        "required": true,
                        "api_field": "garden_style",
                        "label": "Garden Style",
                        "title": "Landscaping style to apply",
                        "options": [
                            "Alpine Garden",
                            "Aquatic Garden",
                            "Bamboo Garden",
                            "California Style Garden",
                            "Chinese Classical Garden",
                            "Colonial Style Garden",
                            "Container Garden",
                            "Drought Resistant Garden",
                            "English Cottage Garden",
                            "Evergreen Garden",
                            "Feng Shui Garden",
                            "French Formal Garden",
                            "Garden",
                            "Herb and Vegetable garden",
                            "Italian Renaissance Garden",
                            "Japanese Zen Garden",
                            "Mediterranean Garden",
                            "Mounds or Berms",
                            "New England Style Garden",
                            "Outdoor Staircase Garden",
                            "Patio Garden",
                            "Picturesque Garden",
                            "Pollinators-Friendly Garden",
                            "Private Courtyard Garden",
                            "Rain Garden",
                            "Rock Garden",
                            "Shade Garden",
                            "Terraced Garden",
                            "Therapeutic Garden",
                            "Tropical Garden",
                            "Vertical Garden",
                            "Xeriscaping Garden"
                        ],
                        "section": "Settings"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of design variations to generate",
                        "section": "Output"
                    }
                },
                "response": {
                    "images_path": "info.images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "remodelkitchen": {
                "io": "image + text → image",
                "description": "Visualize complete kitchen renovations",
                "endpoint": "https://api.decor8.ai/remodel_kitchen",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_url",
                        "api_field": "input_image_url",
                        "label": "Source",
                        "title": "Photo of the kitchen to remodel",
                        "section": "Inputs"
                    },
                    "design_style": {
                        "type": "enum",
                        "required": true,
                        "api_field": "design_style",
                        "label": "Design Style",
                        "title": "Design style to apply to the remodel",
                        "options": [
                            "arabic",
                            "artdeco",
                            "artnouveau",
                            "asian_zen",
                            "bauhaus",
                            "boho",
                            "cabin",
                            "coastal",
                            "coastalgrandmother",
                            "contemporary",
                            "cottagecore",
                            "country",
                            "desertmodern",
                            "eclectic",
                            "europeanclassic",
                            "farmhouse",
                            "frenchcountry",
                            "global",
                            "gothic",
                            "grandmillennial",
                            "high_tech",
                            "hollywoodregency",
                            "industrial",
                            "industrialchic",
                            "japandi",
                            "luxemodern",
                            "maximalist",
                            "mediterranean",
                            "midcenturymodern",
                            "minimalist",
                            "modern",
                            "modernfarmhouse",
                            "moroccan",
                            "neotraditional",
                            "newtraditional",
                            "organicmodern",
                            "retrofuturism",
                            "rustic",
                            "scandinavian",
                            "shabbychic",
                            "southwestern",
                            "traditional",
                            "transitional",
                            "tropical",
                            "tuscan",
                            "urbanmodern",
                            "victorian",
                            "vintage",
                            "wabi_sabi",
                            "warmminimalist"
                        ],
                        "option_labels": {
                            "arabic": "Arabic",
                            "artdeco": "Art Deco",
                            "artnouveau": "Art Nouveau",
                            "asian_zen": "Asian Zen",
                            "bauhaus": "Bauhaus",
                            "boho": "Boho",
                            "cabin": "Cabin",
                            "coastal": "Coastal",
                            "coastalgrandmother": "Coastal Grandmother",
                            "contemporary": "Contemporary",
                            "cottagecore": "Cottagecore",
                            "country": "Country",
                            "desertmodern": "Desert Modern",
                            "eclectic": "Eclectic",
                            "europeanclassic": "European Classic",
                            "farmhouse": "Farmhouse",
                            "frenchcountry": "French Country",
                            "global": "Global",
                            "gothic": "Gothic",
                            "grandmillennial": "Grandmillennial",
                            "high_tech": "High-Tech",
                            "hollywoodregency": "Hollywood Regency",
                            "industrial": "Industrial",
                            "industrialchic": "Industrial Chic",
                            "japandi": "Japandi",
                            "luxemodern": "Luxe Modern",
                            "maximalist": "Maximalist",
                            "mediterranean": "Mediterranean",
                            "midcenturymodern": "Mid-Century Modern",
                            "minimalist": "Minimalist",
                            "modern": "Modern",
                            "modernfarmhouse": "Modern Farmhouse",
                            "moroccan": "Moroccan",
                            "neotraditional": "Neo-Traditional",
                            "newtraditional": "New Traditional",
                            "organicmodern": "Organic Modern",
                            "retrofuturism": "Retrofuturism",
                            "rustic": "Rustic",
                            "scandinavian": "Scandinavian",
                            "shabbychic": "Shabby Chic",
                            "southwestern": "Southwestern",
                            "traditional": "Traditional",
                            "transitional": "Transitional",
                            "tropical": "Tropical",
                            "tuscan": "Tuscan",
                            "urbanmodern": "Urban Modern",
                            "victorian": "Victorian",
                            "vintage": "Vintage",
                            "wabi_sabi": "Wabi-Sabi",
                            "warmminimalist": "Warm Minimalist"
                        },
                        "section": "Settings"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of design variations to generate",
                        "section": "Output"
                    },
                    "scale_factor": {
                        "type": "range",
                        "required": false,
                        "default": 2,
                        "min": 1,
                        "max": 4,
                        "subtype": "int",
                        "api_field": "scale_factor",
                        "label": "Scale Factor",
                        "title": "Output resolution multiplier",
                        "section": "Output"
                    }
                },
                "response": {
                    "images_path": "info.images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "remodelbathroom": {
                "io": "image + text → image",
                "description": "Visualize complete bathroom renovations",
                "endpoint": "https://api.decor8.ai/remodel_bathroom",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_url",
                        "api_field": "input_image_url",
                        "label": "Source",
                        "title": "Photo of the bathroom to remodel",
                        "section": "Inputs"
                    },
                    "design_style": {
                        "type": "enum",
                        "required": true,
                        "api_field": "design_style",
                        "label": "Design Style",
                        "title": "Design style to apply to the remodel",
                        "options": [
                            "arabic",
                            "artdeco",
                            "artnouveau",
                            "asian_zen",
                            "bauhaus",
                            "boho",
                            "cabin",
                            "coastal",
                            "coastalgrandmother",
                            "contemporary",
                            "cottagecore",
                            "country",
                            "desertmodern",
                            "eclectic",
                            "europeanclassic",
                            "farmhouse",
                            "frenchcountry",
                            "global",
                            "gothic",
                            "grandmillennial",
                            "high_tech",
                            "hollywoodregency",
                            "industrial",
                            "industrialchic",
                            "japandi",
                            "luxemodern",
                            "maximalist",
                            "mediterranean",
                            "midcenturymodern",
                            "minimalist",
                            "modern",
                            "modernfarmhouse",
                            "moroccan",
                            "neotraditional",
                            "newtraditional",
                            "organicmodern",
                            "retrofuturism",
                            "rustic",
                            "scandinavian",
                            "shabbychic",
                            "southwestern",
                            "traditional",
                            "transitional",
                            "tropical",
                            "tuscan",
                            "urbanmodern",
                            "victorian",
                            "vintage",
                            "wabi_sabi",
                            "warmminimalist"
                        ],
                        "option_labels": {
                            "arabic": "Arabic",
                            "artdeco": "Art Deco",
                            "artnouveau": "Art Nouveau",
                            "asian_zen": "Asian Zen",
                            "bauhaus": "Bauhaus",
                            "boho": "Boho",
                            "cabin": "Cabin",
                            "coastal": "Coastal",
                            "coastalgrandmother": "Coastal Grandmother",
                            "contemporary": "Contemporary",
                            "cottagecore": "Cottagecore",
                            "country": "Country",
                            "desertmodern": "Desert Modern",
                            "eclectic": "Eclectic",
                            "europeanclassic": "European Classic",
                            "farmhouse": "Farmhouse",
                            "frenchcountry": "French Country",
                            "global": "Global",
                            "gothic": "Gothic",
                            "grandmillennial": "Grandmillennial",
                            "high_tech": "High-Tech",
                            "hollywoodregency": "Hollywood Regency",
                            "industrial": "Industrial",
                            "industrialchic": "Industrial Chic",
                            "japandi": "Japandi",
                            "luxemodern": "Luxe Modern",
                            "maximalist": "Maximalist",
                            "mediterranean": "Mediterranean",
                            "midcenturymodern": "Mid-Century Modern",
                            "minimalist": "Minimalist",
                            "modern": "Modern",
                            "modernfarmhouse": "Modern Farmhouse",
                            "moroccan": "Moroccan",
                            "neotraditional": "Neo-Traditional",
                            "newtraditional": "New Traditional",
                            "organicmodern": "Organic Modern",
                            "retrofuturism": "Retrofuturism",
                            "rustic": "Rustic",
                            "scandinavian": "Scandinavian",
                            "shabbychic": "Shabby Chic",
                            "southwestern": "Southwestern",
                            "traditional": "Traditional",
                            "transitional": "Transitional",
                            "tropical": "Tropical",
                            "tuscan": "Tuscan",
                            "urbanmodern": "Urban Modern",
                            "victorian": "Victorian",
                            "vintage": "Vintage",
                            "wabi_sabi": "Wabi-Sabi",
                            "warmminimalist": "Warm Minimalist"
                        },
                        "section": "Settings"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of design variations to generate",
                        "section": "Output"
                    },
                    "scale_factor": {
                        "type": "range",
                        "required": false,
                        "default": 2,
                        "min": 1,
                        "max": 4,
                        "subtype": "int",
                        "api_field": "scale_factor",
                        "label": "Scale Factor",
                        "title": "Output resolution multiplier",
                        "section": "Output"
                    }
                },
                "response": {
                    "images_path": "info.images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "sketch3d": {
                "io": "image + text → image",
                "description": "Convert hand-drawn sketches into photorealistic 3D room renders",
                "endpoint": "https://api.decor8.ai/sketch_to_3d_render",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_url",
                        "api_field": "input_image_url",
                        "label": "Source Sketch",
                        "title": "Line drawing or sketch to convert",
                        "section": "Inputs"
                    },
                    "design_style": {
                        "type": "enum",
                        "required": true,
                        "api_field": "design_style",
                        "label": "Design Style",
                        "title": "Design style to apply to the 3D render",
                        "options": [
                            "arabic",
                            "artdeco",
                            "artnouveau",
                            "asian_zen",
                            "bauhaus",
                            "boho",
                            "cabin",
                            "coastal",
                            "coastalgrandmother",
                            "contemporary",
                            "cottagecore",
                            "country",
                            "desertmodern",
                            "eclectic",
                            "europeanclassic",
                            "farmhouse",
                            "frenchcountry",
                            "global",
                            "gothic",
                            "grandmillennial",
                            "high_tech",
                            "hollywoodregency",
                            "industrial",
                            "industrialchic",
                            "japandi",
                            "luxemodern",
                            "maximalist",
                            "mediterranean",
                            "midcenturymodern",
                            "minimalist",
                            "modern",
                            "modernfarmhouse",
                            "moroccan",
                            "neotraditional",
                            "newtraditional",
                            "organicmodern",
                            "retrofuturism",
                            "rustic",
                            "scandinavian",
                            "shabbychic",
                            "southwestern",
                            "traditional",
                            "transitional",
                            "tropical",
                            "tuscan",
                            "urbanmodern",
                            "victorian",
                            "vintage",
                            "wabi_sabi",
                            "warmminimalist"
                        ],
                        "option_labels": {
                            "arabic": "Arabic",
                            "artdeco": "Art Deco",
                            "artnouveau": "Art Nouveau",
                            "asian_zen": "Asian Zen",
                            "bauhaus": "Bauhaus",
                            "boho": "Boho",
                            "cabin": "Cabin",
                            "coastal": "Coastal",
                            "coastalgrandmother": "Coastal Grandmother",
                            "contemporary": "Contemporary",
                            "cottagecore": "Cottagecore",
                            "country": "Country",
                            "desertmodern": "Desert Modern",
                            "eclectic": "Eclectic",
                            "europeanclassic": "European Classic",
                            "farmhouse": "Farmhouse",
                            "frenchcountry": "French Country",
                            "global": "Global",
                            "gothic": "Gothic",
                            "grandmillennial": "Grandmillennial",
                            "high_tech": "High-Tech",
                            "hollywoodregency": "Hollywood Regency",
                            "industrial": "Industrial",
                            "industrialchic": "Industrial Chic",
                            "japandi": "Japandi",
                            "luxemodern": "Luxe Modern",
                            "maximalist": "Maximalist",
                            "mediterranean": "Mediterranean",
                            "midcenturymodern": "Mid-Century Modern",
                            "minimalist": "Minimalist",
                            "modern": "Modern",
                            "modernfarmhouse": "Modern Farmhouse",
                            "moroccan": "Moroccan",
                            "neotraditional": "Neo-Traditional",
                            "newtraditional": "New Traditional",
                            "organicmodern": "Organic Modern",
                            "retrofuturism": "Retrofuturism",
                            "rustic": "Rustic",
                            "scandinavian": "Scandinavian",
                            "shabbychic": "Shabby Chic",
                            "southwestern": "Southwestern",
                            "traditional": "Traditional",
                            "transitional": "Transitional",
                            "tropical": "Tropical",
                            "tuscan": "Tuscan",
                            "urbanmodern": "Urban Modern",
                            "victorian": "Victorian",
                            "vintage": "Vintage",
                            "wabi_sabi": "Wabi-Sabi",
                            "warmminimalist": "Warm Minimalist"
                        },
                        "section": "Settings"
                    },
                    "render_type": {
                        "type": "enum",
                        "required": false,
                        "default": "perspective",
                        "api_field": "render_type",
                        "label": "Render Type",
                        "title": "Type of 3D render to generate",
                        "options": [
                            "isometric",
                            "perspective"
                        ],
                        "option_labels": {
                            "isometric": "Isometric (top-down angled)",
                            "perspective": "Perspective (realistic depth)"
                        },
                        "section": "Settings"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of design variations to generate",
                        "section": "Output"
                    },
                    "scale_factor": {
                        "type": "range",
                        "required": false,
                        "default": 2,
                        "min": 1,
                        "max": 8,
                        "subtype": "int",
                        "api_field": "scale_factor",
                        "label": "Scale Factor",
                        "title": "Output resolution multiplier",
                        "section": "Output"
                    }
                },
                "response": {
                    "images_path": "info.images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "upscale": {
                "io": "image → image",
                "description": "Upscale image resolution up to 8×",
                "endpoint": "https://api.decor8.ai/upscale_image",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "_transport_note": "This endpoint uses multipart/form-data (not JSON) and returns bare base64. Requires http_json_or_multipart or a dedicated transport — not yet supported by the generic dispatch pipeline. Marked deprecated until transport support is added.",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "multipart_file",
                        "api_field": "input_image",
                        "label": "Source",
                        "title": "Image to upscale (max 4MB)",
                        "section": "Inputs"
                    },
                    "scale_factor": {
                        "type": "range",
                        "required": true,
                        "default": 2,
                        "min": 1,
                        "max": 8,
                        "subtype": "int",
                        "api_field": "scale_factor",
                        "label": "Scale Factor",
                        "title": "Resolution multiplier (scale factors above 2× incur additional credits)",
                        "section": "Output"
                    }
                },
                "response": {
                    "image_url_path": "info.upscaled_image",
                    "response_format": "base64"
                },
                "deprecated": true
            }
        }
    },
    "depthanything3": {
        "name": "Depth Anything 3",
        "shortname": "DA3",
        "vendor": "Bytedance",
        "family": "Depth Anything",
        "category": "depth",
        "deprecated": false,
        "prompt_guide_url": "",
        "docs_url": "https://github.com/DepthAnything/Depth-Anything-V3",
        "platforms": {
            "dreamfeed": {
                "name": "Dreamfeed",
                "type": "direct",
                "sdk": null,
                "dispatch": "http_json",
                "secret_id": "tardigrade",
                "auth_method": "bearer"
            }
        },
        "constraints": {},
        "modes": {
            "depthmap": {
                "io": "image → image",
                "description": "Generate a depth map from a source image using Depth Anything 3. Returns a grayscale PNG where bright = near, dark = far.",
                "endpoint": "http://174.129.101.95:8000/api/depth",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "data_url",
                        "api_field": "image",
                        "label": "Source",
                        "title": "Image for which a depth map will be created",
                        "section": "Inputs"
                    },
                    "depth_model": {
                        "type": "enum",
                        "required": false,
                        "api_field": "model",
                        "label": "Depth Model",
                        "title": "Mono estimates relative depth (near vs far). Metric estimates absolute depth in meters (requires EXIF focal length).",
                        "default": "mono",
                        "options": [
                            "metric",
                            "mono"
                        ],
                        "option_labels": {
                            "metric": "Metric (absolute depth)",
                            "mono": "Mono (relative depth)"
                        },
                        "section": "Settings"
                    },
                    "depth_16bit": {
                        "type": "bool",
                        "required": false,
                        "api_field": "depth_16bit",
                        "label": "16 bpc Output",
                        "title": "Return 16 bpc PNG for maximum depth precision (65,535 levels instead of 255)",
                        "default": false,
                        "section": "Settings"
                    },
                    "invert": {
                        "type": "bool",
                        "required": false,
                        "api_field": "invert",
                        "label": "Invert",
                        "title": "Swap near/far mapping. DA3 default is black = far, white = near. Invert for models that expect the opposite convention.",
                        "default": false,
                        "section": "Settings"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": null,
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "ernieimage": {
        "name": "ERNIE-Image",
        "shortname": "ERNIE",
        "vendor": "Baidu",
        "family": "ERNIE",
        "deprecated": false,
        "docs_url": "https://fal.ai/models/fal-ai/ernie-image/api",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "partner",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/ernie-image"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text using Baidu ERNIE. Supports English, Chinese, and Japanese prompts",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output. Supports English, Chinese, and Japanese"
                    },
                    "prompt_expansion": {
                        "type": "bool",
                        "required": false,
                        "section": "Prompts",
                        "default": true,
                        "api_field": "enable_prompt_expansion",
                        "label": "Enhance Prompt",
                        "title": "Automatically enhances the prompt using an LLM for more detailed results"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "section": "Prompts",
                        "default": "",
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from the image"
                    },
                    "guidance_scale": {
                        "type": "range",
                        "required": false,
                        "section": "Settings",
                        "default": 5,
                        "min": 1,
                        "max": 20,
                        "step": 0.5,
                        "subtype": "float",
                        "api_field": "guidance_scale",
                        "label": "Guidance Scale",
                        "title": "Classifier-free guidance scale"
                    },
                    "inference_steps": {
                        "type": "range",
                        "required": false,
                        "section": "Settings",
                        "default": 50,
                        "min": 1,
                        "max": 100,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_inference_steps",
                        "label": "Inference Steps",
                        "title": "Number of denoising steps"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "square_hd",
                        "options": [
                            "landscape_16_9",
                            "landscape_3_2",
                            "landscape_4_3",
                            "landscape_hd",
                            "portrait_16_9",
                            "portrait_3_2",
                            "portrait_4_3",
                            "portrait_hd",
                            "square",
                            "square_hd",
                            "square_uhd"
                        ],
                        "option_labels": {
                            "landscape_16_9": "Landscape 16:9",
                            "landscape_3_2": "Landscape 3:2",
                            "landscape_4_3": "Landscape 4:3",
                            "landscape_hd": "Landscape HD",
                            "portrait_16_9": "Portrait 9:16",
                            "portrait_3_2": "Portrait 2:3",
                            "portrait_4_3": "Portrait 3:4",
                            "portrait_hd": "Portrait HD",
                            "square": "Square",
                            "square_hd": "Square HD",
                            "square_uhd": "Square UHD"
                        },
                        "api_field": "image_size",
                        "label": "Size",
                        "title": ""
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of images to generate"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "jpeg",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Output file format"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "The same seed and the same prompt given to the same version of the model will output the same image every time"
                    },
                    "disable_safety_checker": {
                        "type": "bool",
                        "required": false,
                        "section": "Safety",
                        "default": false,
                        "api_field": "enable_safety_checker",
                        "api_invert": true,
                        "label": "Disable Safety Checker",
                        "title": "Disable safety checker for generated images",
                        "warning_values": [
                            true
                        ]
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "seed_path": "seed",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "fabricant": {
        "name": "The Fabricant",
        "shortname": "The Fabricant",
        "vendor": "The Fabricant",
        "family": "Fabricant",
        "deprecated": false,
        "prompt_guide_url": "https://thefabricant.com/tutorials",
        "docs_url": "https://github.com/The-Fabricant/api-docs/blob/main/photo-studio/photo_studio_test.py",
        "platforms": {
            "fabricant": {
                "name": "The Fabricant",
                "type": "direct",
                "sdk": null,
                "dispatch": "http_json",
                "secret_id": "fabricant",
                "auth_method": "bearer"
            }
        },
        "constraints": {},
        "modes": {
            "vton": {
                "io": "image + image + text → image",
                "description": "Virtual try-on: place a garment onto a model image",
                "endpoint": "https://api.thefabricant.com/v1/photo-studio/predict",
                "http_method": "POST",
                "content_type": "application/json",
                "api_body_wrapper": "inputs",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": false,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "model_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "data_url",
                        "api_field": "person_image",
                        "label": "Model Image",
                        "title": "Primary image of the person on whom the virtual try-on will be performed",
                        "section": "Inputs"
                    },
                    "garment_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "data_url",
                        "api_field": "garment_image",
                        "label": "Garment Image",
                        "title": "",
                        "section": "Inputs"
                    }
                },
                "hidden_api_fields": {
                    "ai_model": "V2"
                },
                "response": {
                    "images_path": "result_urls",
                    "image_url_path": null,
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "fashn": {
        "name": "FASHN",
        "shortname": "FASHN",
        "vendor": "FASHN",
        "family": "FASHN",
        "deprecated": false,
        "prompt_guide_url": "https://help.fashn.ai/using-fashn/guides/prompting-in-fashn",
        "docs_url": "https://docs.fashn.ai/fashn-api/overview",
        "platforms": {
            "fashn": {
                "name": "FASHN",
                "type": "direct",
                "sdk": null,
                "dispatch": "http_poll",
                "secret_id": "fashn",
                "submit_url": "https://api.fashn.ai/v1/run",
                "poll_url_template": "https://api.fashn.ai/v1/status/{prediction_id}",
                "poll_interval_seconds": 1,
                "submit_retries": 5,
                "submit_retry_codes": [
                    502,
                    503,
                    504
                ],
                "auth_prefix": "Bearer"
            },
            "falai": {
                "name": "features and labels",
                "type": "partner",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "vton": "fal-ai/fashn/tryon/v1.6"
                },
                "api_field_map": {},
                "api_field_notes": {
                    "model_image": "Passthrough. S3 upload required.",
                    "garment_image": "Passthrough. S3 upload required."
                },
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "api_value_map": {
                    "vton_endpoint": {
                        "tryon": "tryon"
                    }
                }
            }
        },
        "constraints": {},
        "modes": {
            "vton": {
                "io": "image + image → image",
                "description": "Virtual try-on: place garments onto models, transform product shots, and refine results",
                "api_body_wrapper": "inputs",
                "sub_type_field": "vton_endpoint",
                "shared_fields": {
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "PNG delivers the highest quality image, ideal for content creation where quality is paramount\n\nJPEG provides a faster response with a slightly compressed image, more suitable for real-time applications"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 0,
                        "max": 4294967295,
                        "section": "Output",
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image\n\nA poor result does not necessarily mean the input combination will not work. Sometimes a simple seed change can make all the difference"
                    }
                },
                "sub_types": {
                    "tryon": {
                        "description": "Realistic garment visualization optimized for interactive e-commerce experiences, delivering reliable try-ons in 5 to 17 seconds",
                        "hidden_api_fields": {
                            "model_name": "tryon-v1.6"
                        },
                        "fields": {
                            "model_image": {
                                "type": "image",
                                "required": true,
                                "principal_image": true,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "model_image",
                                "label": "Model Image",
                                "title": "Primary image of the person on whom the virtual try-on will be performed"
                            },
                            "garment_image": {
                                "type": "image",
                                "required": true,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "garment_image",
                                "label": "Garment Image",
                                "title": "Reference image of the clothing item to be tried on\n\nSupports flat-lay, ghost mannequin, and on-model garment photos\n\nFlat-lay and ghost mannequin images generally produce the best results"
                            },
                            "garment_category": {
                                "type": "enum",
                                "required": false,
                                "section": "Settings",
                                "default": null,
                                "options": [
                                    "auto",
                                    "bottoms",
                                    "one-pieces",
                                    "tops"
                                ],
                                "option_labels": {
                                    "auto": "Auto",
                                    "bottoms": "Bottoms",
                                    "one-pieces": "One-Pieces",
                                    "tops": "Tops"
                                },
                                "api_field": "category",
                                "label": "Garment Category",
                                "title": "Specifies the type of garment to apply\n\nIf the garment image includes multiple items such as a shirt and jeans, use this to select which item to apply\n\nAuto is recommended: for flat-lay or ghost mannequin images, garment type is detected automatically. For on-model images, full-body shots default to a full outfit swap, and focused shots select the most likely type\n\nTops: upper body garments such as shirts and blouses\n\nBottoms: lower body garments such as pants and skirts\n\nOne-Pieces: single-piece or full-body garments such as dresses and jumpsuits"
                            },
                            "garment_photo_type": {
                                "type": "enum",
                                "required": false,
                                "section": "Settings",
                                "default": null,
                                "options": [
                                    "auto",
                                    "flat-lay",
                                    "model"
                                ],
                                "option_labels": {
                                    "auto": "Auto",
                                    "flat-lay": "Flat-Lay / Ghost Mannequin",
                                    "model": "Model"
                                },
                                "api_field": "garment_photo_type",
                                "label": "Garment Photo Type",
                                "title": "Specifies the type of garment photo to optimize processing\n\nModel: photos of garments worn by a person\n\nFlat-Lay / Ghost Mannequin: product-only images without a person. Required for precise handling where elements like back neck labels or size tags should be excluded\n\nAuto: automatically detects the photo type"
                            },
                            "vton_mode": {
                                "type": "enum",
                                "required": false,
                                "section": "Settings",
                                "default": null,
                                "options": [
                                    "balanced",
                                    "performance",
                                    "quality"
                                ],
                                "option_labels": {
                                    "balanced": "Balanced",
                                    "performance": "Performance",
                                    "quality": "Quality"
                                },
                                "api_field": "mode",
                                "label": "Mode",
                                "title": "Determines the trade-off between processing speed and output quality\n\nPerformance: fastest, with reduced image quality. Use to quickly test model and garment combinations\n\nBalanced: a middle ground between speed and quality\n\nQuality: slowest, delivering the highest-quality results. Switch to this once you have found a combination that works well"
                            },
                            "segmentation_free": {
                                "type": "bool",
                                "required": false,
                                "section": "Settings",
                                "default": true,
                                "api_field": "segmentation_free",
                                "label": "Segmentation Free",
                                "title": "Direct garment fitting without clothing segmentation, enabling bulkier garment try-ons with improved preservation of body shape and skin texture. Uncheck if original garments are not removed properly"
                            },
                            "num_outputs": {
                                "type": "range",
                                "required": false,
                                "section": "Output",
                                "default": 1,
                                "min": 1,
                                "max": 4,
                                "api_field": "num_samples",
                                "label": "Count",
                                "note": "Sent by Python but not currently shown in JS UI for vton mode",
                                "subtype": "int",
                                "title": "Number of output images to generate\n\nIncreasing this explores multiple variations simultaneously, similar to running multiple trials with different seeds\n\nUse 2 to 4 images with Performance mode to quickly test how sensitive your inputs are to seed variation"
                            },
                            "moderation_level": {
                                "type": "enum",
                                "required": false,
                                "section": "Safety",
                                "default": "permissive",
                                "options": [
                                    "conservative",
                                    "none",
                                    "permissive"
                                ],
                                "option_labels": {
                                    "conservative": "Conservative",
                                    "none": "None",
                                    "permissive": "Permissive"
                                },
                                "api_field": "moderation_level",
                                "warning_values": [
                                    "none"
                                ],
                                "label": "Moderation Level",
                                "title": "Sets the content moderation level for garment images\n\nCONSERVATIVE: enforces stricter modesty standards. Blocks underwear, swimwear, and revealing outfits\n\nPERMISSIVE: allows swimwear, underwear, and revealing garments, while still blocking explicit nudity\n\nNo content moderation: disabling moderation does not absolve users from their responsibility to ensure ethical and lawful use of this tool"
                            }
                        },
                        "label": "Try-On v1.6"
                    },
                    "tryon_max": {
                        "description": "Maximum quality try-on prioritizing photographic accuracy over speed, with processing times over 1 minute",
                        "hidden_api_fields": {
                            "model_name": "tryon-max"
                        },
                        "fields": {
                            "model_image": {
                                "type": "image",
                                "required": true,
                                "principal_image": true,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "model_image",
                                "label": "Model Image",
                                "title": "Primary image of the person on whom the virtual try-on will be performed"
                            },
                            "garment_image": {
                                "type": "image",
                                "required": true,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "garment_image",
                                "label": "Garment Image",
                                "title": "Reference image of the clothing item to be tried on\n\nSupports flat-lay, ghost mannequin, and on-model garment photos\n\nFlat-lay and ghost mannequin images generally produce the best results"
                            },
                            "garment_category": {
                                "type": "enum",
                                "required": false,
                                "section": "Settings",
                                "default": null,
                                "options": [
                                    "auto",
                                    "bottoms",
                                    "one-pieces",
                                    "tops"
                                ],
                                "option_labels": {
                                    "auto": "Auto",
                                    "bottoms": "Bottoms",
                                    "one-pieces": "One-Pieces",
                                    "tops": "Tops"
                                },
                                "api_field": "category",
                                "label": "Garment Category",
                                "title": "Specifies the type of garment to apply\n\nIf the garment image includes multiple items such as a shirt and jeans, use this to select which item to apply\n\nAuto is recommended: for flat-lay or ghost mannequin images, garment type is detected automatically. For on-model images, full-body shots default to a full outfit swap, and focused shots select the most likely type\n\nTops: upper body garments such as shirts and blouses\n\nBottoms: lower body garments such as pants and skirts\n\nOne-Pieces: single-piece or full-body garments such as dresses and jumpsuits"
                            },
                            "garment_photo_type": {
                                "type": "enum",
                                "required": false,
                                "section": "Settings",
                                "default": null,
                                "options": [
                                    "auto",
                                    "flat-lay",
                                    "model"
                                ],
                                "option_labels": {
                                    "auto": "Auto",
                                    "flat-lay": "Flat-Lay / Ghost Mannequin",
                                    "model": "Model"
                                },
                                "api_field": "garment_photo_type",
                                "label": "Garment Photo Type",
                                "title": "Specifies the type of garment photo to optimize processing\n\nModel: photos of garments worn by a person\n\nFlat-Lay / Ghost Mannequin: product-only images without a person. Required for precise handling where elements like back neck labels or size tags should be excluded\n\nAuto: automatically detects the photo type"
                            },
                            "vton_mode": {
                                "type": "enum",
                                "required": false,
                                "section": "Settings",
                                "default": null,
                                "options": [
                                    "balanced",
                                    "performance",
                                    "quality"
                                ],
                                "option_labels": {
                                    "balanced": "Balanced",
                                    "performance": "Performance",
                                    "quality": "Quality"
                                },
                                "api_field": "mode",
                                "label": "Mode",
                                "title": "Determines the trade-off between processing speed and output quality\n\nPerformance: fastest, with reduced image quality. Use to quickly test model and garment combinations\n\nBalanced: a middle ground between speed and quality\n\nQuality: slowest, delivering the highest-quality results. Switch to this once you have found a combination that works well"
                            },
                            "segmentation_free": {
                                "type": "bool",
                                "required": false,
                                "section": "Settings",
                                "default": true,
                                "api_field": "segmentation_free",
                                "label": "Segmentation Free",
                                "title": "Direct garment fitting without clothing segmentation, enabling bulkier garment try-ons with improved preservation of body shape and skin texture. Uncheck if original garments are not removed properly"
                            },
                            "num_outputs": {
                                "type": "range",
                                "required": false,
                                "section": "Output",
                                "default": 1,
                                "min": 1,
                                "max": 4,
                                "api_field": "num_samples",
                                "label": "Count",
                                "note": "Sent by Python but not currently shown in JS UI for vton mode",
                                "subtype": "int",
                                "title": "Number of output images to generate\n\nIncreasing this explores multiple variations simultaneously, similar to running multiple trials with different seeds\n\nUse 2 to 4 images with Performance mode to quickly test how sensitive your inputs are to seed variation"
                            },
                            "moderation_level": {
                                "type": "enum",
                                "required": false,
                                "section": "Safety",
                                "default": "permissive",
                                "options": [
                                    "conservative",
                                    "none",
                                    "permissive"
                                ],
                                "option_labels": {
                                    "conservative": "Conservative",
                                    "none": "None",
                                    "permissive": "Permissive"
                                },
                                "api_field": "moderation_level",
                                "warning_values": [
                                    "none"
                                ],
                                "label": "Moderation Level",
                                "title": "Sets the content moderation level for garment images\n\nCONSERVATIVE: enforces stricter modesty standards. Blocks underwear, swimwear, and revealing outfits\n\nPERMISSIVE: allows swimwear, underwear, and revealing garments, while still blocking explicit nudity\n\nNo content moderation: disabling moderation does not absolve users from their responsibility to ensure ethical and lawful use of this tool"
                            }
                        },
                        "label": "Try-On Max"
                    },
                    "product_to_model": {
                        "description": "Transform product images into people wearing those products, with optional try-on mode",
                        "hidden_api_fields": {
                            "model_name": "product-to-model"
                        },
                        "fields": {
                            "prompt": {
                                "type": "text",
                                "required": false,
                                "section": "Prompts",
                                "default": null,
                                "api_field": "prompt",
                                "placeholder": "To be used only when a Model Image is not provided...",
                                "label": "Prompt",
                                "title": "Additional instructions for person appearance (when Model Image is not provided), styling preferences, or background\n\nExamples: man with tattoos, tucked-in, open jacket, rolled-up sleeves, studio background"
                            },
                            "product_image": {
                                "type": "image",
                                "required": true,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "product_image",
                                "label": "Product Image",
                                "title": "Image of the product to be worn\n\nSupports clothing, accessories, shoes, and other wearable fashion items"
                            },
                            "model_image": {
                                "type": "image",
                                "required": false,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "model_image",
                                "label": "Model Image",
                                "title": "Image of the person to wear the product\n\nWhen provided, enables try-on mode\n\nWhen omitted, generates a new person wearing the product\n\nCannot be combined with Image Prompt, Face Reference, or Background Reference"
                            },
                            "image_prompt": {
                                "type": "image",
                                "required": false,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "image_prompt",
                                "label": "Image Prompt",
                                "title": "Inspiration image that guides pose, environment, and lighting while keeping the product centered in the final output\n\nCannot be combined with Model Image"
                            },
                            "face_reference": {
                                "type": "image",
                                "required": false,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "face_reference",
                                "label": "Face Reference",
                                "title": "Face identity reference to guide who the generated person should look like\n\nThe pipeline refines identity to match the reference while keeping product fidelity\n\nCannot be combined with Model Image\n\nCosts 4 credits per image instead of 1"
                            },
                            "background_reference": {
                                "type": "image",
                                "required": false,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "background_reference",
                                "label": "Background Reference",
                                "title": "Background image used as the backdrop for generation\n\nEnsures location consistency across generations\n\nIf a person appears in the image, they will be ignored and only the background will be used\n\nCannot be combined with Model Image"
                            },
                            "face_reference_mode": {
                                "type": "enum",
                                "required": false,
                                "section": "Settings",
                                "default": "match_reference",
                                "options": [
                                    "match_base",
                                    "match_reference"
                                ],
                                "option_labels": {
                                    "match_base": "Match Base",
                                    "match_reference": "Match Reference"
                                },
                                "api_field": "face_reference_mode",
                                "label": "Face Reference Mode",
                                "title": "Controls how the identity from Face Reference influences pose and expression\n\nMatch Reference favors the reference face's pose and expression for maximum resemblance\n\nMatch Base gives more weight to the prompt when generating the person's pose and expression",
                                "visible_when": {
                                    "face_reference": "not_empty"
                                }
                            },
                            "aspect_ratio": {
                                "type": "enum",
                                "required": false,
                                "section": "Output",
                                "default": null,
                                "options": [
                                    "1:1",
                                    "2:3",
                                    "3:2",
                                    "3:4",
                                    "4:3",
                                    "4:5",
                                    "5:4",
                                    "9:16",
                                    "16:9"
                                ],
                                "api_field": "aspect_ratio",
                                "label": "Ratio",
                                "title": "Desired aspect ratio for the output image\n\nIf omitted, inherits the aspect ratio from the most specific image supplied: Model Image, then Image Prompt, then Product Image\n\nProvide an explicit ratio to override"
                            },
                            "resolution": {
                                "type": "enum",
                                "required": false,
                                "section": "Output",
                                "default": "1k",
                                "options": [
                                    "1k",
                                    "4k"
                                ],
                                "option_labels": {
                                    "1k": "1K",
                                    "4k": "4K"
                                },
                                "api_field": "resolution",
                                "label": "Resolution",
                                "title": "1K produces precise, instruction-following results suited for consistent catalog imagery\n\n4K unlocks creative, ultra high-definition renders with richer product detail but slightly less control over pose and styling"
                            },
                            "num_images": {
                                "type": "range",
                                "required": false,
                                "section": "Output",
                                "default": 1,
                                "min": 1,
                                "max": 4,
                                "subtype": "int",
                                "api_field": "num_images",
                                "label": "Count",
                                "title": "Number of images to generate in a single request"
                            }
                        },
                        "label": "Product to Model"
                    },
                    "edit": {
                        "description": "Versatile post-processing that preserves identity and product fidelity while executing freeform instructions",
                        "hidden_api_fields": {
                            "model_name": "edit"
                        },
                        "fields": {
                            "prompt": {
                                "type": "text",
                                "required": true,
                                "section": "Prompts",
                                "default": null,
                                "api_field": "prompt",
                                "label": "Instructions",
                                "title": "Freeform instructions for the edits to apply\n\nIdeal for pose or view adjustments, styling such as accessories, lighting, or environment, or small fixes to existing outputs"
                            },
                            "image": {
                                "type": "image",
                                "required": true,
                                "principal_image": true,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "image",
                                "label": "Source",
                                "title": "Image to refine\n\nThe model preserves subject identity and product details while applying the requested edits"
                            },
                            "mask": {
                                "type": "image",
                                "required": false,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "mask",
                                "label": "Mask",
                                "title": "Optional mask image that guides the edit toward specific regions\n\nWhite pixels mark areas to prioritize, black pixels mark areas to preserve\n\nThe model may still adjust nearby pixels to keep the image coherent, so treat the mask as a strong hint rather than strict inpainting\n\nMust have the same dimensions as the source image"
                            },
                            "image_context": {
                                "type": "image",
                                "required": false,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "image_context",
                                "label": "Image Context",
                                "title": "Reference image that provides visual context to guide the edit\n\nUse when the desired result cannot be fully described in words alone, such as a specific background scene, complex pose, or texture pattern"
                            },
                            "resolution": {
                                "type": "enum",
                                "required": false,
                                "section": "Output",
                                "default": "1k",
                                "options": [
                                    "1k",
                                    "4k"
                                ],
                                "option_labels": {
                                    "1k": "1K",
                                    "4k": "4K"
                                },
                                "api_field": "resolution",
                                "label": "Resolution",
                                "title": "1K produces precise, instruction-following results suited for consistent catalog imagery\n\n4K unlocks creative, ultra high-definition renders with richer product detail but slightly less control over pose and styling"
                            }
                        },
                        "label": "Edit"
                    }
                },
                "sub_type_section": "Mode Subtype",
                "response": {
                    "request_id_path": "id",
                    "status_path": "status",
                    "images_path": "output",
                    "image_url_path": null,
                    "response_format": "url"
                },
                "deprecated": false,
                "sub_type_label": "Subtype"
            },
            "humanmodel": {
                "io": "text → image",
                "description": "Generate, transform, or swap fashion model identity with optional face and pose references",
                "api_body_wrapper": "inputs",
                "sub_type_field": "humanmodel_endpoint",
                "shared_fields": {
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "PNG delivers the highest quality image, ideal for content creation where quality is paramount\n\nJPEG provides a faster response with a slightly compressed image, more suitable for real-time applications"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 0,
                        "max": 4294967295,
                        "section": "Output",
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    }
                },
                "sub_types": {
                    "face_to_model": {
                        "description": "Transform face images into try-on ready upper-body avatars while preserving facial identity",
                        "hidden_api_fields": {
                            "model_name": "face-to-model"
                        },
                        "response": {
                            "request_id_path": "id",
                            "status_path": "status",
                            "images_path": "output.images",
                            "image_url_path": null,
                            "response_format": "url"
                        },
                        "fields": {
                            "prompt": {
                                "type": "text",
                                "required": false,
                                "section": "Prompts",
                                "default": null,
                                "api_field": "prompt",
                                "label": "Prompt",
                                "title": "Optional styling or body shape guidance for the avatar representation\n\nExamples: athletic build, curvy figure, slender frame\n\nIf omitted, the body shape will be inferred from the face image"
                            },
                            "face_image": {
                                "type": "image",
                                "required": true,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "face_image",
                                "label": "Face Image",
                                "title": "Image of the face to transform into an upper-body avatar\n\nThe AI analyzes facial features, hair, and skin tone to create a representation suitable for virtual try-on applications"
                            },
                            "aspect_ratio": {
                                "type": "enum",
                                "required": false,
                                "section": "Output",
                                "default": "2:3",
                                "options": [
                                    "1:1",
                                    "2:3",
                                    "3:4",
                                    "4:5",
                                    "9:16"
                                ],
                                "api_field": "aspect_ratio",
                                "label": "Ratio",
                                "title": "Desired aspect ratio for the output image\n\nOnly vertical ratios are supported\n\nImages will always be extended downward to fit the aspect ratio"
                            }
                        },
                        "label": "Face to Model"
                    },
                    "model_create": {
                        "description": "Generate realistic fashion models using textual prompts or reference images",
                        "hidden_api_fields": {
                            "model_name": "model-create"
                        },
                        "fields": {
                            "prompt": {
                                "type": "text",
                                "required": true,
                                "section": "Prompts",
                                "api_field": "prompt",
                                "label": "Prompt",
                                "title": "Describe the desired fashion model, clothing, pose, and scene"
                            },
                            "image_reference": {
                                "type": "image",
                                "required": false,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "image_reference",
                                "label": "Reference Image",
                                "title": "Optional image to guide composition and pose\n\nThe AI uses it as inspiration without copying exact details\n\nYou can control whether to copy just the pose or the exact silhouette using the prompt"
                            },
                            "face_reference": {
                                "type": "image",
                                "required": false,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "face_reference",
                                "label": "Face Reference",
                                "title": "Portrait image that locks in a specific identity across generations\n\nOnly available when Resolution is set to 1K\n\nConsumes 4 credits per image\n\nAdds roughly 20 to 30 seconds of processing time"
                            },
                            "face_reference_mode": {
                                "type": "enum",
                                "required": false,
                                "section": "Settings",
                                "default": "match_reference",
                                "options": [
                                    "match_base",
                                    "match_reference"
                                ],
                                "option_labels": {
                                    "match_base": "Match Base",
                                    "match_reference": "Match Reference"
                                },
                                "api_field": "face_reference_mode",
                                "label": "Face Reference Mode",
                                "title": "Controls how the provided Face Reference shapes pose and expression\n\nMatch Base prioritizes the prompt and base generation, keeping the original pose while adapting the reference face\n\nMatch Reference aligns the generated model closely with the reference face's pose, gaze, and expression for maximum resemblance",
                                "visible_when": {
                                    "face_reference": "not_empty"
                                }
                            },
                            "aspect_ratio": {
                                "type": "enum",
                                "required": false,
                                "section": "Output",
                                "default": "1:1",
                                "options": [
                                    "1:1",
                                    "2:3",
                                    "3:2",
                                    "3:4",
                                    "4:3",
                                    "4:5",
                                    "5:4",
                                    "9:16",
                                    "16:9",
                                    "21:9"
                                ],
                                "api_field": "aspect_ratio",
                                "label": "Ratio",
                                "title": "Ratio of width to height for the generated image\n\nWhen a Reference Image is provided, the output inherits the reference image's aspect ratio\n\nSupply an explicit ratio to override"
                            },
                            "resolution": {
                                "type": "enum",
                                "required": false,
                                "section": "Output",
                                "default": "1k",
                                "options": [
                                    "1k",
                                    "4k"
                                ],
                                "option_labels": {
                                    "1k": "1K",
                                    "4k": "4K"
                                },
                                "api_field": "resolution",
                                "label": "Resolution",
                                "title": "1K produces precise, instruction-following results suited for consistent catalog imagery\n\n4K unlocks creative, ultra high-definition renders with richer detail but slightly less control over pose and styling"
                            },
                            "num_images": {
                                "type": "range",
                                "required": false,
                                "section": "Output",
                                "default": 1,
                                "min": 1,
                                "max": 4,
                                "subtype": "int",
                                "api_field": "num_images",
                                "label": "Count",
                                "title": "Number of images to generate per request\n\nEach image consumes 1 credit, or 4 credits when Face Reference is provided"
                            }
                        },
                        "label": "Create Model"
                    },
                    "model_swap": {
                        "description": "Change the identity of fashion models while preserving clothing and outfit details",
                        "hidden_api_fields": {
                            "model_name": "model-swap"
                        },
                        "fields": {
                            "prompt": {
                                "type": "text",
                                "required": false,
                                "section": "Prompts",
                                "default": null,
                                "api_field": "prompt",
                                "label": "Prompt",
                                "title": "Text guidance for identity or scene adjustments\n\nIf omitted, the system generates an appropriate prompt based on image analysis"
                            },
                            "model_image": {
                                "type": "image",
                                "required": true,
                                "principal_image": true,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "model_image",
                                "label": "Model Image",
                                "title": "Source fashion model image containing the clothing and pose to preserve\n\nThe model's identity including face, skin tone, and hair will be transformed while keeping the outfit exactly as shown"
                            },
                            "face_reference": {
                                "type": "image",
                                "required": false,
                                "section": "Inputs",
                                "upload_as": "s3_url",
                                "api_field": "face_reference",
                                "label": "Face Reference",
                                "title": "Reference image to guide identity\n\nWhen provided, the pipeline refines the model swap so both the body and face are aligned with the reference"
                            },
                            "face_reference_mode": {
                                "type": "enum",
                                "required": false,
                                "section": "Settings",
                                "default": "match_reference",
                                "options": [
                                    "match_base",
                                    "match_reference"
                                ],
                                "option_labels": {
                                    "match_base": "Match Base",
                                    "match_reference": "Match Reference"
                                },
                                "api_field": "face_reference_mode",
                                "label": "Face Reference Mode",
                                "title": "Controls how the provided Face Reference shapes the result\n\nMatch Base keeps the original photo's head angle, gaze, and expression while applying the reference identity\n\nMatch Reference favors the reference face's pose and expression for maximum resemblance",
                                "visible_when": {
                                    "face_reference": "not_empty"
                                }
                            },
                            "num_images": {
                                "type": "range",
                                "required": false,
                                "section": "Output",
                                "default": 1,
                                "min": 1,
                                "max": 4,
                                "subtype": "int",
                                "api_field": "num_images",
                                "label": "Count",
                                "title": "Number of images to generate per request"
                            }
                        },
                        "label": "Model Swap"
                    }
                },
                "sub_type_section": "Mode Subtype",
                "response": {
                    "request_id_path": "id",
                    "status_path": "status",
                    "images_path": "output",
                    "image_url_path": null,
                    "response_format": "url"
                },
                "deprecated": false,
                "sub_type_label": "Subtype"
            },
            "expand": {
                "io": "image → image",
                "description": "Adjust image aspect ratios by intelligently expanding or cropping based on content analysis",
                "api_body_wrapper": "inputs",
                "fields": {
                    "image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "upload_as": "s3_url",
                        "api_field": "image",
                        "label": "Source",
                        "title": "Image to reframe to a new aspect ratio\n\nThe AI analyzes content and intelligently decides whether to expand or crop based on subject position, content density, and edge details\n\nOutput resolution is limited to approximately 1 megapixel"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": true,
                        "section": "Output",
                        "default": null,
                        "options": [
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "4:5",
                            "5:4",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "api_field": "aspect_ratio",
                        "label": "Target Ratio",
                        "title": "Target aspect ratio for the reframed image\n\nThe AI determines whether expansion or cropping is more appropriate based on the current image content and dimensions",
                        "option_labels": {
                            "1:1": "1:1",
                            "2:3": "2:3",
                            "3:2": "3:2",
                            "3:4": "3:4",
                            "4:3": "4:3",
                            "4:5": "4:5",
                            "5:4": "5:4",
                            "9:16": "9:16",
                            "16:9": "16:9",
                            "21:9": "21:9"
                        }
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "PNG delivers the highest quality image, ideal for content creation where quality is paramount\n\nJPEG provides a faster response with a slightly compressed image, more suitable for real-time applications"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 0,
                        "max": 4294967295,
                        "section": "Output",
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of images to generate\n\nImage generation has a random element, so generating multiple images increases the chances of getting a good result"
                    }
                },
                "hidden_api_fields": {
                    "model_name": "reframe"
                },
                "response": {
                    "request_id_path": "id",
                    "status_path": "status",
                    "images_path": "output",
                    "image_url_path": null,
                    "response_format": "url"
                },
                "deprecated": false
            },
            "bgremove": {
                "io": "image → image",
                "description": "Remove image backgrounds to create transparent PNG cutouts of foreground subjects",
                "api_body_wrapper": "inputs",
                "fields": {
                    "image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "upload_as": "s3_url",
                        "api_field": "image",
                        "label": "Source",
                        "title": "Image to remove the background from\n\nThe AI automatically detects the main subject and creates a clean cutout with transparent background\n\nSupports images up to 4 megapixels"
                    }
                },
                "hidden_api_fields": {
                    "model_name": "background-remove"
                },
                "response": {
                    "request_id_path": "id",
                    "status_path": "status",
                    "images_path": "output",
                    "image_url_path": null,
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "firerededit": {
        "name": "FireRed Image Edit v1.1",
        "shortname": "FireRed v1.1",
        "vendor": "FireRed",
        "family": "FireRed",
        "deprecated": false,
        "docs_url": "https://fal.ai/models/fal-ai/firered-image-edit-v1.1/api",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "edit": "fal-ai/firered-image-edit-v1.1"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "edit": {
                "io": "image + text → image",
                "description": "Edit images with text instructions using FireRed Image Edit v1.1",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Editing instructions describing what changes to make to the image. Supports both English and Chinese instructions"
                    },
                    "guidance_scale": {
                        "type": "range",
                        "required": false,
                        "section": "Prompts",
                        "default": 4,
                        "min": 1,
                        "max": 10,
                        "step": 0.1,
                        "subtype": "float",
                        "api_field": "guidance_scale",
                        "label": "Guidance Scale",
                        "title": "Classifier-free guidance scale. Higher values make the model follow the prompt more closely"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "section": "Prompts",
                        "default": "",
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from the output image"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "min_items": 1,
                        "max_items": 3,
                        "upload_as": "s3_url",
                        "api_field": "image_urls",
                        "label": "",
                        "alt_label": "Input Images",
                        "title": "Supports single image editing and multi-image references (e.g., virtual try-on, style transfer from reference, portrait makeup)"
                    },
                    "inference_steps": {
                        "type": "range",
                        "required": false,
                        "section": "Settings",
                        "default": 30,
                        "min": 2,
                        "max": 50,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_inference_steps",
                        "label": "Inference Steps",
                        "title": "Number of inference steps to perform. More steps generally produce higher quality results"
                    },
                    "acceleration": {
                        "type": "enum",
                        "required": false,
                        "section": "Settings",
                        "default": "regular",
                        "options": [
                            "high",
                            "none",
                            "regular"
                        ],
                        "option_labels": {
                            "high": "High",
                            "none": "None",
                            "regular": "Regular"
                        },
                        "api_field": "acceleration",
                        "label": "Acceleration",
                        "title": "Acceleration level for inference speed optimization"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": null,
                        "options": [
                            "custom",
                            "landscape_16_9",
                            "landscape_4_3",
                            "portrait_16_9",
                            "portrait_4_3",
                            "square",
                            "square_hd"
                        ],
                        "option_labels": {
                            "custom": "Custom",
                            "landscape_16_9": "Landscape 16:9",
                            "landscape_4_3": "Landscape 4:3",
                            "portrait_16_9": "Portrait 9:16",
                            "portrait_4_3": "Portrait 3:4",
                            "square": "Square",
                            "square_hd": "Square HD"
                        },
                        "no_value_label": "Match Input",
                        "api_field": "image_size",
                        "label": "Image Size",
                        "title": "",
                        "exclude_api_values": [
                            "custom"
                        ]
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "default": 1024,
                        "min": 64,
                        "max": 1920,
                        "step": 8,
                        "api_field": "image_size.width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "",
                        "section": "Output"
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "default": 1024,
                        "min": 64,
                        "max": 1920,
                        "step": 8,
                        "api_field": "image_size.height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of output images to generate"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "The same seed and the same prompt given to the same version of the model will output the same image every time"
                    },
                    "disable_safety_checker": {
                        "type": "bool",
                        "required": false,
                        "section": "Safety",
                        "default": false,
                        "api_field": "enable_safety_checker",
                        "api_invert": true,
                        "warning_values": [
                            true
                        ],
                        "label": "Disable Safety Checker",
                        "title": "Disable safety checker for generated images"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "seed_path": "seed",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "flux_2_flex": {
        "name": "FLUX.2 [flex]",
        "shortname": "FLUX.2 [flex]",
        "vendor": "Black Forest Labs",
        "family": "FLUX",
        "deprecated": false,
        "prompt_guide_url": "https://docs.bfl.ai/guides/prompting_guide_flux2",
        "docs_url": "https://docs.bfl.ai/",
        "platforms": {
            "bfl": {
                "name": "Black Forest Labs"
            }
        },
        "constraints": {},
        "_note": "Same as flux_2_pro/max but with guidance_scale, steps, and up to 10 input images",
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text with optional input images (up to 10)",
                "endpoint": "https://api.bfl.ai/v1/flux-2-flex",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts",
                        "structured_template": "gpt-core"
                    },
                    "prompt_upsampling": {
                        "type": "bool",
                        "required": false,
                        "default": true,
                        "api_field": "prompt_upsampling",
                        "label": "Enhance Prompt",
                        "title": "Automatically modifies the prompt for more creative generation",
                        "section": "Prompts"
                    },
                    "guidance_scale": {
                        "type": "range",
                        "required": false,
                        "default": 4.5,
                        "min": 1.5,
                        "max": 10,
                        "step": 0.1,
                        "api_field": "guidance_scale",
                        "label": "Guidance Scale",
                        "subtype": "float",
                        "title": "High guidance scales improve prompt adherence at the cost of reduced realism",
                        "section": "Prompts"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": false,
                        "min_items": 0,
                        "max_items": 10,
                        "upload_as": "raw_base64",
                        "api_field_pattern": "input_image_{n}",
                        "label": "",
                        "alt_label": "Input Images",
                        "title": "",
                        "section": "Inputs"
                    },
                    "steps": {
                        "type": "range",
                        "required": false,
                        "default": 50,
                        "min": 1,
                        "max": 50,
                        "step": 1,
                        "api_field": "steps",
                        "label": "Steps",
                        "subtype": "int",
                        "title": "Number of denoising steps for image generation. Higher steps lead to more detailed and realistic images",
                        "section": "Settings"
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 64,
                        "max": 2048,
                        "step": 16,
                        "api_field": "width",
                        "label": "Width",
                        "title": "",
                        "section": "Output"
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 64,
                        "max": 2048,
                        "step": 16,
                        "api_field": "height",
                        "label": "Height",
                        "title": "",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image",
                        "section": "Output"
                    },
                    "safety_tolerance": {
                        "type": "range",
                        "required": false,
                        "default": 2,
                        "min": 0,
                        "max": 5,
                        "step": 1,
                        "api_field": "safety_tolerance",
                        "warning_values": [
                            5
                        ],
                        "label": "Tolerance",
                        "subtype": "int",
                        "title": "Tolerance level for input and output moderation. 0 is most strict; 5 is least strict",
                        "section": "Safety"
                    }
                },
                "response": {
                    "request_id_path": "id",
                    "status_path": "status",
                    "images_path": "result.sample",
                    "image_url_path": null,
                    "enhanced_prompt_path": "result.prompt",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "edit": {
                "io": "image + text → image",
                "description": "Edit images with a text prompt (up to 10 input images)",
                "endpoint": "https://api.bfl.ai/v1/flux-2-flex",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts",
                        "structured_template": "flux2-base"
                    },
                    "prompt_upsampling": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "api_field": "prompt_upsampling",
                        "label": "Enhance Prompt",
                        "title": "Automatically modifies the prompt for more creative generation",
                        "section": "Prompts"
                    },
                    "guidance_scale": {
                        "type": "range",
                        "required": false,
                        "default": 4.5,
                        "min": 1.5,
                        "max": 10,
                        "step": 0.1,
                        "api_field": "guidance_scale",
                        "label": "Guidance Scale",
                        "subtype": "float",
                        "title": "High guidance scales improve prompt adherence at the cost of reduced realism",
                        "section": "Prompts"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "min_items": 1,
                        "max_items": 10,
                        "upload_as": "raw_base64",
                        "api_field_pattern": "input_image (first), input_image_{n} (rest)",
                        "label": "",
                        "alt_label": "Input Images",
                        "title": "",
                        "section": "Inputs"
                    },
                    "steps": {
                        "type": "range",
                        "required": false,
                        "default": 50,
                        "min": 1,
                        "max": 50,
                        "step": 1,
                        "api_field": "steps",
                        "label": "Steps",
                        "subtype": "int",
                        "title": "Number of denoising steps for image generation. Higher steps lead to more detailed and realistic images",
                        "section": "Settings"
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 64,
                        "max": 2048,
                        "step": 16,
                        "crop_override_value": 2048,
                        "api_field": "width",
                        "label": "Width",
                        "title": "",
                        "section": "Output"
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 64,
                        "max": 2048,
                        "step": 16,
                        "crop_override_value": 2048,
                        "api_field": "height",
                        "label": "Height",
                        "title": "",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image",
                        "section": "Output"
                    },
                    "safety_tolerance": {
                        "type": "range",
                        "required": false,
                        "default": 2,
                        "min": 0,
                        "max": 5,
                        "step": 1,
                        "api_field": "safety_tolerance",
                        "warning_values": [
                            5
                        ],
                        "label": "Tolerance",
                        "subtype": "int",
                        "title": "Tolerance level for input and output moderation. 0 is most strict; 5 is least strict",
                        "section": "Safety"
                    }
                },
                "response": {
                    "request_id_path": "id",
                    "status_path": "status",
                    "images_path": "result.sample",
                    "image_url_path": null,
                    "enhanced_prompt_path": "result.prompt",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "flux_2_max": {
        "name": "FLUX.2 [max]",
        "shortname": "FLUX.2 [max]",
        "vendor": "Black Forest Labs",
        "family": "FLUX",
        "deprecated": false,
        "prompt_guide_url": "https://docs.bfl.ai/guides/prompting_guide_flux2",
        "docs_url": "https://docs.bfl.ai/",
        "platforms": {
            "bfl": {
                "name": "Black Forest Labs"
            },
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": {
                        "url": "fal-ai/flux-2-max",
                        "api_field_map": {
                            "input_images": null
                        }
                    },
                    "edit": {
                        "url": "fal-ai/flux-2-max/edit",
                        "api_field_map": {
                            "input_images": "image_urls"
                        },
                        "upload_as_map": {
                            "input_images": "s3_url"
                        }
                    }
                },
                "api_field_map": {
                    "height": "image_size.height",
                    "prompt_upsampling": null,
                    "safety_tolerance": "safety_tolerance",
                    "width": "image_size.width"
                },
                "api_field_notes": {
                    "safety_tolerance": "BFL sends int 0–5; fal expects string enum '1'–'5'. Dispatcher must coerce int→str and clamp min to 1."
                },
                "hidden_api_fields": {
                    "enable_safety_checker": true
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            },
            "replicate": {
                "name": "Replicate",
                "type": "byok",
                "dispatch": "replicate_run",
                "secret_id": "replicate",
                "env_var": "REPLICATE_API_TOKEN",
                "endpoints": {
                    "texttoimage": "black-forest-labs/flux-2-max",
                    "edit": "black-forest-labs/flux-2-max"
                },
                "api_field_map": {
                    "prompt_upsampling": null
                },
                "api_value_map": {
                    "output_format": {
                        "jpeg": "jpg",
                        "png": "png"
                    }
                },
                "hidden_api_fields": {},
                "response": {
                    "response_format": "url"
                }
            },
            "wavespeed": {
                "name": "WaveSpeedAI",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "wavespeed",
                "env_var": "WAVESPEED_API_KEY",
                "poll_url_template": "https://api.wavespeed.ai/api/v3/predictions/{request_id}/result",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60,
                "endpoints": {
                    "texttoimage": "https://api.wavespeed.ai/api/v3/wavespeed-ai/flux-2-max/text-to-image",
                    "edit": "https://api.wavespeed.ai/api/v3/wavespeed-ai/flux-2-max/edit"
                },
                "api_field_map": {
                    "height": null,
                    "input_images": "images",
                    "output_format": null,
                    "prompt_upsampling": null,
                    "safety_tolerance": null,
                    "width": null
                },
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "response_format": "url"
                },
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            }
        },
        "constraints": {},
        "_note": "Identical field set to flux_2_pro  — only endpoint differs",
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text with optional input images (up to 10)",
                "endpoint": "https://api.bfl.ai/v1/flux-2-max",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "structured_template": "flux2-photo"
                    },
                    "prompt_upsampling": {
                        "type": "bool",
                        "required": false,
                        "section": "Prompts",
                        "default": true,
                        "api_field": "prompt_upsampling",
                        "label": "Enhance Prompt",
                        "title": "Automatically modifies the prompt for more creative generation"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": false,
                        "section": "Inputs",
                        "min_items": 0,
                        "max_items": 10,
                        "upload_as": "raw_base64",
                        "api_field_pattern": "input_image_{n}",
                        "label": "",
                        "alt_label": "Input Images",
                        "title": ""
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": null,
                        "min": 64,
                        "max": 2048,
                        "step": 16,
                        "api_field": "width",
                        "label": "Width",
                        "title": ""
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": null,
                        "min": 64,
                        "max": 2048,
                        "step": 16,
                        "api_field": "height",
                        "label": "Height",
                        "title": ""
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "jpeg",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    },
                    "safety_tolerance": {
                        "type": "range",
                        "required": false,
                        "section": "Safety",
                        "default": 2,
                        "min": 0,
                        "max": 5,
                        "step": 1,
                        "api_field": "safety_tolerance",
                        "warning_values": [
                            5
                        ],
                        "label": "Tolerance",
                        "subtype": "int",
                        "title": "Tolerance level for input and output moderation. 0 is most strict; 5 is least strict"
                    }
                },
                "response": {
                    "request_id_path": "id",
                    "status_path": "status",
                    "images_path": "result.sample",
                    "image_url_path": null,
                    "enhanced_prompt_path": "result.prompt",
                    "response_format": "url"
                },
                "deprecated": false,
                "ui_extras": [
                    "pose_editor"
                ]
            },
            "edit": {
                "io": "image + text → image",
                "description": "Edit images with a text prompt (up to 10 input images)",
                "endpoint": "https://api.bfl.ai/v1/flux-2-max",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "structured_template": "flux2-photo"
                    },
                    "prompt_upsampling": {
                        "type": "bool",
                        "required": false,
                        "section": "Prompts",
                        "default": false,
                        "api_field": "prompt_upsampling",
                        "label": "Enhance Prompt",
                        "title": "Automatically modifies the prompt for more creative generation"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "min_items": 1,
                        "max_items": 10,
                        "upload_as": "raw_base64",
                        "api_field_pattern": "input_image (first), input_image_{n} (rest)",
                        "label": "",
                        "alt_label": "Input Images",
                        "title": ""
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": null,
                        "min": 64,
                        "max": 2048,
                        "step": 16,
                        "crop_override_value": 2048,
                        "api_field": "width",
                        "label": "Width",
                        "title": ""
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": null,
                        "min": 64,
                        "max": 2048,
                        "step": 16,
                        "crop_override_value": 2048,
                        "api_field": "height",
                        "label": "Height",
                        "title": ""
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "jpeg",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    },
                    "safety_tolerance": {
                        "type": "range",
                        "required": false,
                        "section": "Safety",
                        "default": 2,
                        "min": 0,
                        "max": 5,
                        "step": 1,
                        "api_field": "safety_tolerance",
                        "warning_values": [
                            5
                        ],
                        "label": "Tolerance",
                        "subtype": "int",
                        "title": "Tolerance level for input and output moderation. 0 is most strict; 5 is least strict"
                    }
                },
                "response": {
                    "request_id_path": "id",
                    "status_path": "status",
                    "images_path": "result.sample",
                    "image_url_path": null,
                    "enhanced_prompt_path": "result.prompt",
                    "response_format": "url"
                },
                "deprecated": false,
                "ui_extras": [
                    "pose_editor"
                ]
            }
        }
    },
    "flux_2_pro": {
        "name": "FLUX.2 [pro]",
        "shortname": "FLUX.2 [pro]",
        "vendor": "Black Forest Labs",
        "family": "FLUX",
        "deprecated": false,
        "prompt_guide_url": "https://docs.bfl.ai/guides/prompting_guide_flux2",
        "docs_url": "https://docs.bfl.ai/",
        "platforms": {
            "bfl": {
                "name": "Black Forest Labs"
            },
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/flux-2-pro",
                    "edit": "fal-ai/flux-2-pro/edit"
                },
                "api_field_map": {
                    "height": "image_size.height",
                    "input_images": "image_urls",
                    "prompt_upsampling": "enable_prompt_expansion",
                    "width": "image_size.width"
                },
                "api_field_notes": {
                    "safety_tolerance": "BFL sends int 0–5; fal expects string enum '1'–'5'. Dispatcher must coerce int→str and clamp min to 1."
                },
                "hidden_api_fields": {
                    "enable_safety_checker": true
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            },
            "replicate": {
                "name": "Replicate",
                "type": "byok",
                "dispatch": "replicate_run",
                "secret_id": "replicate",
                "env_var": "REPLICATE_API_TOKEN",
                "endpoints": {
                    "texttoimage": "black-forest-labs/flux-2-pro",
                    "edit": "black-forest-labs/flux-2-pro"
                },
                "api_field_map": {
                    "prompt_upsampling": null
                },
                "api_value_map": {
                    "output_format": {
                        "jpeg": "jpg",
                        "png": "png"
                    }
                },
                "hidden_api_fields": {},
                "response": {
                    "response_format": "url"
                }
            },
            "wavespeed": {
                "name": "WaveSpeedAI",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "wavespeed",
                "env_var": "WAVESPEED_API_KEY",
                "poll_url_template": "https://api.wavespeed.ai/api/v3/predictions/{request_id}/result",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60,
                "endpoints": {
                    "texttoimage": "https://api.wavespeed.ai/api/v3/wavespeed-ai/flux-2-pro/text-to-image",
                    "edit": "https://api.wavespeed.ai/api/v3/wavespeed-ai/flux-2-pro/edit"
                },
                "api_field_map": {
                    "height": null,
                    "input_images": "images",
                    "output_format": null,
                    "prompt_upsampling": null,
                    "safety_tolerance": null,
                    "width": null
                },
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "response_format": "url"
                },
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text with optional input images (up to 8)",
                "endpoint": "https://api.bfl.ai/v1/flux-2-pro",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "structured_template": "flux2-base"
                    },
                    "prompt_upsampling": {
                        "type": "bool",
                        "required": false,
                        "section": "Prompts",
                        "default": true,
                        "api_field": "prompt_upsampling",
                        "label": "Enhance Prompt",
                        "title": "Automatically modifies the prompt for more creative generation"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": false,
                        "section": "Inputs",
                        "min_items": 0,
                        "max_items": 8,
                        "upload_as": "raw_base64",
                        "api_field_pattern": "input_image_{n}",
                        "label": "",
                        "alt_label": "Input Images",
                        "note": "In texttoimage mode all images use suffix: input_image_1, input_image_2, etc.",
                        "title": ""
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": null,
                        "min": 64,
                        "max": 2048,
                        "step": 16,
                        "api_field": "width",
                        "label": "Width",
                        "title": ""
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": null,
                        "min": 64,
                        "max": 2048,
                        "step": 16,
                        "api_field": "height",
                        "label": "Height",
                        "title": ""
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "jpeg",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    },
                    "safety_tolerance": {
                        "type": "range",
                        "required": false,
                        "default": 2,
                        "section": "Safety",
                        "min": 1,
                        "max": 5,
                        "step": 1,
                        "api_field": "safety_tolerance",
                        "warning_values": [
                            5
                        ],
                        "label": "Tolerance",
                        "subtype": "int",
                        "title": "Tolerance level for input and output moderation.  A higher value is less strict"
                    }
                },
                "response": {
                    "request_id_path": "id",
                    "status_path": "status",
                    "images_path": "result.sample",
                    "image_url_path": null,
                    "enhanced_prompt_path": "result.prompt",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "edit": {
                "io": "image + text → image",
                "description": "Edit images with a text prompt (up to 8 input images)",
                "endpoint": "https://api.bfl.ai/v1/flux-2-pro",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "structured_template": "flux2-base"
                    },
                    "prompt_upsampling": {
                        "type": "bool",
                        "required": false,
                        "section": "Prompts",
                        "default": false,
                        "api_field": "prompt_upsampling",
                        "label": "Enhance Prompt",
                        "title": "Automatically modifies the prompt for more creative generation"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "min_items": 1,
                        "max_items": 8,
                        "upload_as": "raw_base64",
                        "api_field_pattern": "input_image (first), input_image_{n} (rest)",
                        "label": "",
                        "alt_label": "Input Images",
                        "note": "In edit mode first image maps to 'input_image', subsequent to 'input_image_2' etc.",
                        "title": ""
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": null,
                        "min": 64,
                        "max": 2048,
                        "step": 16,
                        "crop_override_value": 2048,
                        "api_field": "width",
                        "label": "Width",
                        "title": ""
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": null,
                        "min": 64,
                        "max": 2048,
                        "step": 16,
                        "crop_override_value": 2048,
                        "api_field": "height",
                        "label": "Height",
                        "title": ""
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "jpeg",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    },
                    "safety_tolerance": {
                        "type": "range",
                        "required": false,
                        "section": "Safety",
                        "default": 2,
                        "min": 1,
                        "max": 5,
                        "step": 1,
                        "api_field": "safety_tolerance",
                        "warning_values": [
                            5
                        ],
                        "label": "Tolerance",
                        "subtype": "int",
                        "title": "Tolerance level for input and output moderation. A higher value is less strict"
                    }
                },
                "response": {
                    "request_id_path": "id",
                    "status_path": "status",
                    "images_path": "result.sample",
                    "image_url_path": null,
                    "enhanced_prompt_path": "result.prompt",
                    "response_format": "url"
                },
                "ui_extras": [
                    "pose_editor"
                ],
                "deprecated": false
            }
        }
    },
    "flux_depth_pro": {
        "name": "FLUX.1 Depth [pro]",
        "shortname": "FLUX Depth Pro",
        "vendor": "Black Forest Labs",
        "family": "FLUX Tools",
        "deprecated": false,
        "docs_url": "https://replicate.com/black-forest-labs/flux-depth-pro/api/schema",
        "platforms": {
            "replicate": {
                "name": "Replicate",
                "type": "byok",
                "dispatch": "replicate_run",
                "secret_id": "replicate",
                "env_var": "REPLICATE_API_TOKEN",
                "model_id": "black-forest-labs/flux-depth-pro",
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "edit": {
                "io": "image + text → image",
                "description": "Generate an image using a depth-map-derived control signal from a reference image, guided by a text prompt",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "structured_template": "basic",
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "prompt_upsampling": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "section": "Prompts",
                        "api_field": "prompt_upsampling",
                        "label": "Enhance Prompt",
                        "title": "Automatically modify the prompt for more creative generation"
                    },
                    "guidance": {
                        "type": "range",
                        "required": false,
                        "default": 30,
                        "min": 1,
                        "max": 100,
                        "step": 1,
                        "subtype": "float",
                        "section": "Prompts",
                        "api_field": "guidance",
                        "label": "Guidance",
                        "title": "Balance between prompt adherence and image quality/diversity\n\nHigher values follow the prompt more closely but may reduce image quality\n\nLower values allow more creative freedom but may drift from the prompt"
                    },
                    "control_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_public_url",
                        "api_field": "control_image",
                        "label": "Control Image",
                        "title": "Reference image whose depth structure guides the generation. Supported formats: JPEG, PNG, GIF, WebP",
                        "section": "Inputs"
                    },
                    "steps": {
                        "type": "range",
                        "required": false,
                        "default": 50,
                        "min": 15,
                        "max": 50,
                        "step": 1,
                        "subtype": "int",
                        "section": "Settings",
                        "api_field": "steps",
                        "label": "Steps",
                        "title": "Number of diffusion steps\n\nHigher values yield finer details but increase processing time"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "jpg",
                        "section": "Output",
                        "options": [
                            "jpg",
                            "png"
                        ],
                        "option_labels": {
                            "jpg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "default": null,
                        "section": "Output",
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    },
                    "safety_tolerance": {
                        "type": "enum",
                        "required": false,
                        "default": "2",
                        "section": "Safety",
                        "options": [
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "6"
                        ],
                        "option_labels": {
                            "1": "1 (Most strict)",
                            "2": "2",
                            "3": "3",
                            "4": "4",
                            "5": "5",
                            "6": "6 (Least strict)"
                        },
                        "api_field": "safety_tolerance",
                        "warning_values": [
                            "6"
                        ],
                        "label": "Tolerance",
                        "title": "Content moderation strictness\n\n1 is the most strict (blocks most content), 6 is the least strict"
                    }
                },
                "response": {
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "googlevton": {
        "name": "Google Virtual Try-On",
        "shortname": "Google VTON",
        "vendor": "Google",
        "family": "Imagen",
        "deprecated": false,
        "prompt_guide_url": "https://docs.cloud.google.com/vertex-ai/generative-ai/docs/model-reference/virtual-try-on-api",
        "docs_url": "https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/virtual-try-on-api",
        "platforms": {
            "google_vertex": {
                "name": "Google Vertex AI",
                "model_version": "virtual-try-on-001",
                "location": "us-central1"
            }
        },
        "constraints": {},
        "modes": {
            "vton": {
                "io": "image + image → image",
                "description": "Virtual try-on: place a garment onto a person image",
                "http_method": "POST",
                "content_type": "application/json",
                "payload_structure": "vertex_predict",
                "fields": {
                    "model_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "raw_base64",
                        "api_field": "instances[0].personImage.image.bytesBase64Encoded",
                        "label": "Person Image",
                        "title": "Primary image of the person on whom the virtual try-on will be performed",
                        "section": "Inputs"
                    },
                    "garment_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "raw_base64",
                        "api_field": "instances[0].productImages[0].image.bytesBase64Encoded",
                        "label": "Product Image",
                        "title": "",
                        "section": "Inputs"
                    },
                    "base_steps": {
                        "type": "int",
                        "required": true,
                        "default": 32,
                        "min": 1,
                        "max": 100,
                        "step": 1,
                        "api_field": "parameters.baseSteps",
                        "label": "Base Steps",
                        "title": "An integer that controls image generation, with higher steps trading higher quality for increased latency",
                        "section": "Settings"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "image/png",
                        "options": [
                            "image/jpeg",
                            "image/png"
                        ],
                        "option_labels": {
                            "image/jpeg": "JPEG",
                            "image/png": "PNG"
                        },
                        "api_field": "parameters.outputOptions.mimeType",
                        "label": "Format",
                        "title": "Desired file format of the resulting image",
                        "section": "Output"
                    },
                    "compression_quality": {
                        "type": "range",
                        "required": false,
                        "default": 75,
                        "min": 0,
                        "max": 100,
                        "step": 1,
                        "api_field": "parameters.outputOptions.compressionQuality",
                        "label": "Quality",
                        "visible_when": {
                            "output_format": "image/jpeg"
                        },
                        "subtype": "int",
                        "title": "",
                        "section": "Output"
                    },
                    "num_outputs": {
                        "type": "range",
                        "required": true,
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "step": 1,
                        "api_field": "parameters.sampleCount",
                        "label": "Count",
                        "subtype": "int",
                        "title": "Number of output images to generate",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "max": 4294967295,
                        "default": null,
                        "api_field": "parameters.seed",
                        "visible_when": {
                            "add_watermark": false
                        },
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image",
                        "section": "Output"
                    },
                    "add_watermark": {
                        "type": "bool",
                        "required": false,
                        "default": true,
                        "api_field": "parameters.addWatermark",
                        "warning_values": [
                            false
                        ],
                        "label": "Add Watermark",
                        "title": "Add an invisible watermark to the generated images\n\nNote: Seed is not available when this is checked",
                        "section": "Safety"
                    },
                    "person_generation": {
                        "type": "enum",
                        "required": false,
                        "default": "allow_adult",
                        "options": [
                            "allow_adult",
                            "allow_all",
                            "dont_allow"
                        ],
                        "option_labels": {
                            "allow_adult": "Allow generation of adults only",
                            "allow_all": "Allow generation of people of all ages",
                            "dont_allow": "Disallow the inclusion of people or faces in images"
                        },
                        "api_field": "parameters.personGeneration",
                        "warning_values": [
                            "allow_all"
                        ],
                        "label": "Person Generation",
                        "title": "",
                        "section": "Safety"
                    },
                    "safety_setting": {
                        "type": "enum",
                        "required": false,
                        "default": "block_medium_and_above",
                        "options": [
                            "block_low_and_above",
                            "block_medium_and_above",
                            "block_only_high"
                        ],
                        "option_labels": {
                            "block_low_and_above": "Block low and above",
                            "block_medium_and_above": "Block medium and above",
                            "block_only_high": "Block only high"
                        },
                        "api_field": "parameters.safetySetting",
                        "warning_values": [
                            "block_only_high"
                        ],
                        "label": "Safety Setting",
                        "title": "BLOCK LOW AND ABOVE: Strongest filtering level, most strict blocking\n\nBLOCK MEDIUM AND ABOVE: Block some problematic prompts and responses\n\nBLOCK ONLY HIGH: Reduces the number of requests blocked due to safety filters",
                        "section": "Safety"
                    }
                },
                "response": {
                    "images_path": "predictions",
                    "image_data_path": "bytesBase64Encoded",
                    "enhanced_prompt_path": "prompt",
                    "response_format": "base64"
                },
                "deprecated": false
            }
        }
    },
    "gptimage": {
        "name": "ChatGPT Images 2.0",
        "shortname": "ChatGPT Images 2",
        "vendor": "OpenAI",
        "family": "ChatGPT Images",
        "deprecated": false,
        "prompt_guide_url": "https://developers.openai.com/cookbook/examples/multimodal/image-gen-models-prompting-guide",
        "docs_url": "https://platform.openai.com/docs/guides/image-generation",
        "platforms": {
            "openai": {
                "name": "OpenAI",
                "type": "byok",
                "dispatch": "openai_sdk",
                "secret_id": "open_ai",
                "env_var": "OPENAI_API_KEY",
                "endpoints": {
                    "texttoimage": "client.images.generate",
                    "edit": "client.images.edit"
                },
                "api_field_map": {
                    "compression_quality": "output_compression",
                    "image_size": "size",
                    "width": "size",
                    "height": "size"
                },
                "api_transform_map": {
                    "width": "concat_dimensions_x",
                    "height": "concat_dimensions_x"
                },
                "api_value_map": {
                    "image_size": {
                        "auto": "auto",
                        "custom": "custom",
                        "square": "1024x1024",
                        "square_hd": "2048x2048",
                        "landscape_4_3": "1536x1024",
                        "landscape_16_9": "2048x1152",
                        "portrait_4_3": "1024x1536",
                        "portrait_16_9": "2160x3840"
                    }
                },
                "hidden_api_fields": {
                    "model": "gpt-image-2"
                },
                "response": {
                    "images_path": "images",
                    "enhanced_prompt_path": "revised_prompt",
                    "response_format": "base64"
                }
            },
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "reverse_image_arrays": true,
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": {
                        "url": "openai/gpt-image-2",
                        "api_value_map": {
                            "image_size": {
                                "landscape_16_9": "landscape_16_9",
                                "landscape_4_3": "landscape_4_3",
                                "portrait_16_9": "portrait_16_9",
                                "portrait_4_3": "portrait_4_3",
                                "square": "square",
                                "square_hd": "square_hd"
                            }
                        }
                    },
                    "edit": {
                        "url": "openai/gpt-image-2/edit",
                        "api_value_map": {
                            "image_size": {
                                "auto": "auto",
                                "landscape_16_9": "landscape_16_9",
                                "landscape_4_3": "landscape_4_3",
                                "portrait_16_9": "portrait_16_9",
                                "portrait_4_3": "portrait_4_3",
                                "square": "square",
                                "square_hd": "square_hd"
                            }
                        }
                    }
                },
                "api_field_map": {
                    "compression_quality": null,
                    "edit_ref_images": "image_urls",
                    "mask": "mask_url",
                    "moderation": null,
                    "num_outputs": "num_images",
                    "output_format": "output_format"
                },
                "api_value_map": {
                    "quality": {
                        "high": "high",
                        "low": "low",
                        "medium": "medium"
                    }
                },
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text",
                "sdk_method": "client.images.generate()",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 32000,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "structured_template": "gpt-core"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "auto",
                        "options": [
                            "auto",
                            "custom",
                            "landscape_16_9",
                            "landscape_4_3",
                            "portrait_16_9",
                            "portrait_4_3",
                            "square",
                            "square_hd"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "custom": "Custom",
                            "landscape_16_9": "Landscape 16:9",
                            "landscape_4_3": "Landscape 4:3",
                            "portrait_16_9": "Portrait 9:16",
                            "portrait_4_3": "Portrait 3:4",
                            "square": "Square",
                            "square_hd": "Square HD"
                        },
                        "exclude_api_values": ["custom"],
                        "api_field": "image_size",
                        "label": "Image Size",
                        "title": "Preset size. Select Custom to specify explicit width and height"
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "default": 1024,
                        "min": 64,
                        "max": 3840,
                        "step": 16,
                        "api_field": "image_size.width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "Multiple of 16, ≤ 3840px. Aspect ratio ≤ 3:1. Total pixels 655,360–8,294,400",
                        "section": "Output"
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "default": 1024,
                        "min": 64,
                        "max": 3840,
                        "step": 16,
                        "api_field": "image_size.height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "Multiple of 16, ≤ 3840px. Aspect ratio ≤ 3:1. Total pixels 655,360–8,294,400",
                        "section": "Output"
                    },
                    "quality": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "auto",
                        "options": [
                            "auto",
                            "high",
                            "low",
                            "medium"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "high": "High",
                            "low": "Low",
                            "medium": "Medium"
                        },
                        "api_field": "quality",
                        "label": "Quality",
                        "title": ""
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WEBP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "note": "",
                        "title": "Desired file format of the resulting image"
                    },
                    "compression_quality": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 100,
                        "min": 0,
                        "max": 100,
                        "step": 1,
                        "api_field": "output_compression",
                        "label": "Compression Quality",
                        "note": "",
                        "visible_when": {
                            "output_format": {
                                "not_equals": "png"
                            }
                        },
                        "subtype": "int",
                        "title": ""
                    },
                    "num_outputs": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 10,
                        "step": 1,
                        "api_field": "n",
                        "label": "Count",
                        "subtype": "int",
                        "title": "Number of output images to generate"
                    },
                    "moderation": {
                        "type": "enum",
                        "required": false,
                        "section": "Safety",
                        "default": "auto",
                        "options": [
                            "auto",
                            "low"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "low": "Low"
                        },
                        "api_field": "moderation",
                        "warning_values": [
                            "low"
                        ],
                        "label": "Moderation Level",
                        "title": "AUTO: Standard filtering that seeks to limit creating certain categories of potentially age-inappropriate content\n\nLOW: Less restrictive filtering"
                    }
                },
                "hidden_api_fields": {
                    "model": "gpt-image-2"
                },
                "response": {
                    "images_path": "data[].b64_json",
                    "enhanced_prompt_path": "data[0].revised_prompt",
                    "response_format": "base64",
                    "response_type": "object_attribute"
                },
                "deprecated": false
            },
            "edit": {
                "io": "image + text → image",
                "description": "Edit images with text prompt and optional mask",
                "sdk_method": "client.images.edit()",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 32000,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "structured_template": "gpt-core"
                    },
                    "edit_ref_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "min_items": 1,
                        "max_items": 16,
                        "upload_as": "multipart_file",
                        "api_field": "image",
                        "label": "",
                        "alt_label": "Edit Reference Images",
                        "note": "Uploaded as BytesIO file buffers with inferred MIME filenames",
                        "title": ""
                    },
                    "mask": {
                        "type": "image",
                        "required": false,
                        "principal_mask": true,
                        "mask_padding": "#000000",
                        "section": "Inputs",
                        "upload_as": "multipart_file",
                        "api_field": "mask",
                        "api_transform": "prepare_8bit_mask_file",
                        "label": "Mask",
                        "title": "Consisting of a gradient between black and white (grayscale), with pixels toward white defining the area to be changed"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "auto",
                        "crop_override_value": "auto",
                        "options": [
                            "auto",
                            "custom",
                            "landscape_16_9",
                            "landscape_4_3",
                            "portrait_16_9",
                            "portrait_4_3",
                            "square",
                            "square_hd"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "custom": "Custom",
                            "landscape_16_9": "Landscape 16:9",
                            "landscape_4_3": "Landscape 4:3",
                            "portrait_16_9": "Portrait 9:16",
                            "portrait_4_3": "Portrait 3:4",
                            "square": "Square",
                            "square_hd": "Square HD"
                        },
                        "exclude_api_values": ["custom"],
                        "api_field": "image_size",
                        "label": "Image Size",
                        "title": "Preset size. Select Custom to specify explicit width and height"
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "default": 1024,
                        "min": 64,
                        "max": 3840,
                        "step": 16,
                        "api_field": "image_size.width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "Multiple of 16, ≤ 3840px. Aspect ratio ≤ 3:1. Total pixels 655,360–8,294,400",
                        "section": "Output"
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "default": 1024,
                        "min": 64,
                        "max": 3840,
                        "step": 16,
                        "api_field": "image_size.height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "Multiple of 16, ≤ 3840px. Aspect ratio ≤ 3:1. Total pixels 655,360–8,294,400",
                        "section": "Output"
                    },
                    "quality": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "auto",
                        "options": [
                            "auto",
                            "high",
                            "low",
                            "medium"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "high": "High",
                            "low": "Low",
                            "medium": "Medium"
                        },
                        "api_field": "quality",
                        "label": "Quality",
                        "title": ""
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WEBP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "compression_quality": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 100,
                        "min": 0,
                        "max": 100,
                        "step": 1,
                        "api_field": "output_compression",
                        "label": "Compression Quality",
                        "note": "",
                        "visible_when": {
                            "output_format": {
                                "not_equals": "png"
                            }
                        },
                        "subtype": "int",
                        "title": ""
                    },
                    "num_outputs": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 10,
                        "step": 1,
                        "api_field": "n",
                        "label": "Count",
                        "subtype": "int",
                        "title": "Number of output images to generate"
                    }
                },
                "hidden_api_fields": {
                    "model": "gpt-image-2"
                },
                "response": {
                    "images_path": "data[].b64_json",
                    "enhanced_prompt_path": "data[0].revised_prompt",
                    "response_format": "base64",
                    "response_type": "object_attribute"
                },
                "ui_extras": [
                    "pose_editor"
                ],
                "deprecated": false
            }
        }
    },
    "grokimagine": {
        "name": "Grok Imagine Image",
        "shortname": "Grok Imagine",
        "vendor": "xAI",
        "family": "Grok",
        "deprecated": false,
        "prompt_guide_url": "https://www.freepik.com/blog/grok-imagine/",
        "docs_url": "https://fal.ai/models/xai/grok-imagine-image",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "partner",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "xai/grok-imagine-image",
                    "edit": "xai/grok-imagine-image/edit"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "revised_prompt_path": "revised_prompt",
                    "response_format": "url"
                }
            },
            "replicate": {
                "name": "Replicate",
                "type": "byok",
                "dispatch": "replicate_run",
                "secret_id": "replicate",
                "env_var": "REPLICATE_API_TOKEN",
                "endpoints": {
                    "texttoimage": "xai/grok-imagine-image",
                    "edit": "xai/grok-imagine-image"
                },
                "api_field_map": {
                    "input_image": "image",
                    "num_images": null,
                    "output_format": null
                },
                "hidden_api_fields": {},
                "response": {
                    "response_format": "url"
                }
            },
            "wavespeed": {
                "name": "WaveSpeedAI",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "wavespeed",
                "env_var": "WAVESPEED_API_KEY",
                "poll_url_template": "https://api.wavespeed.ai/api/v3/predictions/{request_id}/result",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60,
                "endpoints": {
                    "texttoimage": "https://api.wavespeed.ai/api/v3/x-ai/grok-imagine-image/text-to-image",
                    "edit": "https://api.wavespeed.ai/api/v3/x-ai/grok-imagine-image/edit"
                },
                "api_field_map": {
                    "input_image": "image",
                    "num_images": null
                },
                "api_value_map": {
                    "aspect_ratio": {
                        "1:1": "1:1",
                        "1:2": "1:2",
                        "2:1": "2:1",
                        "2:3": "2:3",
                        "3:2": "3:2",
                        "3:4": "3:4",
                        "4:3": "4:3",
                        "9:16": "9:16",
                        "9:20": "9:20",
                        "16:9": "16:9",
                        "20:9": "20:9"
                    },
                    "output_format": {
                        "jpeg": "jpeg",
                        "png": "png"
                    }
                },
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "response_format": "url"
                },
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            }
        },
        "constraints": {
            "prompt_max_length": 8000
        },
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "max_length": 8000,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "1:1",
                        "options": [
                            "1:1",
                            "1:2",
                            "2:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "9:16",
                            "9:19.5",
                            "9:20",
                            "16:9",
                            "19.5:9",
                            "20:9"
                        ],
                        "option_labels": {
                            "1:1": "",
                            "1:2": "",
                            "2:1": "",
                            "2:3": "",
                            "3:2": "",
                            "3:4": "",
                            "4:3": "",
                            "9:16": "",
                            "9:19.5": "",
                            "9:20": "",
                            "16:9": "",
                            "19.5:9": "",
                            "20:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": ""
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "jpeg",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WEBP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": ""
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "api_field": "num_images",
                        "label": "Count",
                        "subtype": "int",
                        "title": ""
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "revised_prompt_path": "revised_prompt",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "edit": {
                "io": "image + text → image",
                "description": "Edit images with a text prompt. Supports up to 3 input images",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "max_length": 8000,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Text description of the desired image"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "min_items": 1,
                        "max_items": 3,
                        "upload_as": "s3_url",
                        "api_field": "image_urls",
                        "label": "",
                        "alt_label": "Input Images",
                        "title": "Input images for editing (up to 3)"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "jpeg",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WEBP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": ""
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "api_field": "num_images",
                        "label": "Count",
                        "subtype": "int",
                        "title": ""
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "revised_prompt_path": "revised_prompt",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "heygen": {
        "name": "HeyGen",
        "shortname": "HeyGen",
        "vendor": "HeyGen",
        "family": "HeyGen",
        "deprecated": false,
        "docs_url": "https://docs.heygen.com/reference/generate-photo-avatar-photos",
        "platforms": {
            "heygen": {
                "name": "HeyGen",
                "type": "direct",
                "sdk": null,
                "dispatch": "http_poll",
                "secret_id": "heygen",
                "auth_header": "x-api-key",
                "poll_url_template": "https://api.heygen.com/v2/photo_avatar/generation/{generation_id}",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60
            }
        },
        "constraints": {},
        "modes": {
            "humanmodel": {
                "io": "text → image",
                "description": "Generate photo avatar images from appearance description and demographic parameters",
                "endpoint": "https://api.heygen.com/v2/photo_avatar/photo/generate",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "appearance": {
                        "type": "text",
                        "required": true,
                        "max_length": 1000,
                        "api_field": "appearance",
                        "label": "Appearance",
                        "title": "Describe in detail how you want the avatar photo to appear",
                        "section": "Prompts"
                    },
                    "name": {
                        "type": "string",
                        "required": false,
                        "default": "",
                        "api_field": "name",
                        "label": "Name",
                        "title": "",
                        "section": "Settings"
                    },
                    "age": {
                        "type": "enum",
                        "required": false,
                        "default": "Unspecified",
                        "options": [
                            "Early Middle Age",
                            "Late Middle Age",
                            "Senior",
                            "Unspecified",
                            "Young Adult"
                        ],
                        "option_labels": {
                            "Early Middle Age": "",
                            "Late Middle Age": "",
                            "Senior": "",
                            "Unspecified": "",
                            "Young Adult": ""
                        },
                        "api_field": "age",
                        "label": "Age Category",
                        "title": "",
                        "section": "Settings"
                    },
                    "gender": {
                        "type": "enum",
                        "required": false,
                        "default": "Unspecified",
                        "options": [
                            "Man",
                            "Unspecified",
                            "Woman"
                        ],
                        "option_labels": {
                            "Man": "",
                            "Unspecified": "",
                            "Woman": ""
                        },
                        "api_field": "gender",
                        "label": "Gender",
                        "title": "",
                        "section": "Settings"
                    },
                    "ethnicity": {
                        "type": "enum",
                        "required": false,
                        "default": "Unspecified",
                        "options": [
                            "Asian American",
                            "Black",
                            "East Asian",
                            "Hispanic",
                            "Middle Eastern",
                            "Pacific",
                            "South Asian",
                            "South East Asian",
                            "Unspecified",
                            "White"
                        ],
                        "option_labels": {
                            "Asian American": "",
                            "Black": "",
                            "East Asian": "",
                            "Hispanic": "",
                            "Middle Eastern": "",
                            "Pacific": "",
                            "South Asian": "",
                            "South East Asian": "",
                            "Unspecified": "",
                            "White": ""
                        },
                        "api_field": "ethnicity",
                        "label": "Ethnicity",
                        "title": "",
                        "section": "Settings"
                    },
                    "pose": {
                        "type": "enum",
                        "required": false,
                        "default": "full_body",
                        "options": [
                            "close_up",
                            "full_body",
                            "half_body"
                        ],
                        "option_labels": {
                            "close_up": "Close Up",
                            "full_body": "Full Body",
                            "half_body": "Half Body"
                        },
                        "api_field": "pose",
                        "label": "Pose",
                        "title": "",
                        "section": "Settings"
                    },
                    "style": {
                        "type": "enum",
                        "required": false,
                        "default": "Unspecified",
                        "options": [
                            "Cinematic",
                            "Cyberpunk",
                            "Noir",
                            "Pixar",
                            "Realistic",
                            "Unspecified",
                            "Vintage"
                        ],
                        "option_labels": {
                            "Cinematic": "",
                            "Cyberpunk": "",
                            "Noir": "",
                            "Pixar": "",
                            "Realistic": "",
                            "Unspecified": "",
                            "Vintage": ""
                        },
                        "api_field": "style",
                        "label": "Style",
                        "title": "",
                        "section": "Settings"
                    },
                    "orientation": {
                        "type": "enum",
                        "required": false,
                        "default": "square",
                        "options": [
                            "horizontal",
                            "square",
                            "vertical"
                        ],
                        "option_labels": {
                            "horizontal": "Horizontal",
                            "square": "Square",
                            "vertical": "Vertical"
                        },
                        "api_field": "orientation",
                        "label": "Output Orientation",
                        "title": "",
                        "section": "Output"
                    }
                },
                "response": {
                    "request_id_path": "data.generation_id",
                    "status_path": "data.status",
                    "images_path": "data.image_url_list",
                    "image_url_path": null,
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "huhu": {
        "name": "Huhu AI",
        "shortname": "Huhu AI",
        "vendor": "Huhu AI",
        "family": "Huhu",
        "deprecated": false,
        "docs_url": "https://huhu.ai/try-on-api/",
        "platforms": {
            "huhu": {
                "name": "Huhu AI",
                "type": "direct",
                "sdk": null,
                "dispatch": "http_poll",
                "secret_id": "huhu",
                "auth_header": "x-api-key",
                "poll_url_template": "https://api-service.huhu.ai/requests/v1?job_id={job_id}",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 120
            }
        },
        "constraints": {},
        "modes": {
            "vton": {
                "io": "image + image → image",
                "description": "Virtual try-on: place a garment onto a model image",
                "endpoint": "https://api-service.huhu.ai/tryon/v1",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "model_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_url",
                        "api_field": "image_model_url",
                        "label": "Model Image",
                        "title": "Primary image of the person on whom the virtual try-on will be performed",
                        "section": "Inputs"
                    },
                    "garment_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "s3_url",
                        "api_field": "image_garment_url",
                        "label": "Garment Image",
                        "title": "",
                        "section": "Inputs"
                    },
                    "garment_type": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "Bottom",
                            "Full Body",
                            "Top"
                        ],
                        "option_labels": {
                            "Bottom": "",
                            "Full Body": "",
                            "Top": ""
                        },
                        "api_field": "garment_type",
                        "label": "Garment Type",
                        "title": "",
                        "section": "Inputs"
                    },
                    "vton_model": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "HD",
                            "SD_V1",
                            "SD_V2",
                            "SD_V3"
                        ],
                        "option_labels": {
                            "HD": "HD",
                            "SD_V1": "SD v1",
                            "SD_V2": "SD v2",
                            "SD_V3": "SD v3"
                        },
                        "api_field": null,
                        "label": "Model Variant",
                        "note": "Shown in JS UI and used for repaint_other_garment visibility, but NOT currently sent to API  — see corrections log",
                        "title": "",
                        "section": "Settings"
                    },
                    "repaint_hands": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "api_field": "repaint_hands",
                        "label": "Regenerate Hands",
                        "title": "Regenerate hands when they are over the garment",
                        "section": "Settings"
                    },
                    "repaint_feet": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "api_field": "repaint_feet",
                        "label": "Regenerate Feet",
                        "title": "Regenerate shoes and feet to match the new outfit",
                        "section": "Settings"
                    },
                    "repaint_other_garment": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "api_field": "repaint_other_garment",
                        "label": "Regenerate Other Garment",
                        "visible_when": {
                            "vton_model": {
                                "one_of": [
                                    "SD_V2",
                                    "SD_V3"
                                ]
                            },
                            "garment_type": {
                                "not_equals": "Full Body"
                            }
                        },
                        "title": "Generate the other garment type that matches the given try-on garment",
                        "section": "Settings"
                    }
                },
                "response": {
                    "request_id_path": "job_id",
                    "status_path": "status",
                    "images_path": "output",
                    "image_url_path": "image_url",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "hunyuanimg3i": {
        "name": "HunyuanImage 3.0-Instruct",
        "shortname": "HunyuanImage 3.0i",
        "vendor": "Tencent Hunyuan",
        "family": "HunyuanImage",
        "deprecated": false,
        "docs_url": "https://fal.ai/models/fal-ai/hunyuan-image/v3/instruct/text-to-image/api",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/hunyuan-image/v3/instruct/text-to-image",
                    "edit": "fal-ai/hunyuan-image/v3/instruct/edit"
                },
                "api_field_map": {},
                "hidden_api_fields": {
                    "enable_safety_checker": true
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text using Hunyuan V3 Instruct",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "guidance_scale": {
                        "type": "range",
                        "required": false,
                        "section": "Prompts",
                        "default": 3.5,
                        "min": 1,
                        "max": 20,
                        "step": 0.1,
                        "subtype": "float",
                        "api_field": "guidance_scale",
                        "label": "Guidance Scale",
                        "title": "Controls how much the model adheres to the prompt\n\nHigher values mean stricter adherence"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "auto",
                        "options": [
                            "auto",
                            "square_hd",
                            "square",
                            "portrait_4_3",
                            "portrait_16_9",
                            "landscape_4_3",
                            "landscape_16_9"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "landscape_4_3": "Landscape 4:3",
                            "landscape_16_9": "Landscape 16:9",
                            "portrait_4_3": "Portrait 4:3",
                            "portrait_16_9": "Portrait 16:9",
                            "square": "Square",
                            "square_hd": "Square HD"
                        },
                        "api_field": "image_size",
                        "label": "Image Size",
                        "title": "The desired size of the generated image\n\nIf Auto, image size will be determined by the model"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of output images to generate"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "edit": {
                "io": "image + text → image",
                "description": "Edit images with text instructions using Hunyuan V3 Instruct",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "guidance_scale": {
                        "type": "range",
                        "required": false,
                        "section": "Prompts",
                        "default": 3.5,
                        "min": 1,
                        "max": 20,
                        "step": 0.1,
                        "subtype": "float",
                        "api_field": "guidance_scale",
                        "label": "Guidance Scale",
                        "title": "Controls how much the model adheres to the prompt\n\nHigher values mean stricter adherence"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "upload_as": "s3_public_url",
                        "api_field": "image_urls",
                        "label": "",
                        "alt_label": "Input Images",
                        "note": "Up to 3 reference images. URLs passed as string array.",
                        "title": ""
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "auto",
                        "crop_override_value": "square_hd",
                        "options": [
                            "auto",
                            "square_hd",
                            "square",
                            "portrait_4_3",
                            "portrait_16_9",
                            "landscape_4_3",
                            "landscape_16_9"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "landscape_4_3": "Landscape 4:3",
                            "landscape_16_9": "Landscape 16:9",
                            "portrait_4_3": "Portrait 4:3",
                            "portrait_16_9": "Portrait 16:9",
                            "square": "Square",
                            "square_hd": "Square HD"
                        },
                        "api_field": "image_size",
                        "label": "Image Size",
                        "title": "The desired size of the generated image\n\nIf Auto, image size will be determined by the model"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of output images to generate"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "hywuedit": {
        "name": "HY-WU Edit",
        "shortname": "HY-WU",
        "vendor": "Tencent Hunyuan",
        "family": "HY-WU",
        "deprecated": false,
        "docs_url": "https://fal.ai/models/fal-ai/hy-wu-edit/api",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "edit": "fal-ai/hy-wu-edit"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "edit": {
                "io": "image + text → image",
                "description": "Multi-image editing with functional neural memory. Supports virtual try-on, style transfer, and instruction-based edits using up to 3 reference images",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Editing instructions describing the desired changes. Supports English and Chinese. Use specific instructions like 'Replace the clothing on figure 1 with the outfit from figure 2'"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "min_items": 1,
                        "max_items": 3,
                        "upload_as": "s3_url",
                        "api_field": "image_urls",
                        "label": "",
                        "alt_label": "Input Images",
                        "title": "Typically 2 images: the base image and the reference image. Supports up to 3 images for multi-reference edits"
                    },
                    "enable_thinking": {
                        "type": "bool",
                        "required": false,
                        "section": "Settings",
                        "default": true,
                        "api_field": "enable_thinking",
                        "reasoning_flag": [
                            true
                        ],
                        "label": "Enable Thinking",
                        "title": "The model reasons about the edit before generating, producing higher quality results at the cost of longer inference time. Disable for faster results on straightforward edits"
                    },
                    "inference_steps": {
                        "type": "range",
                        "required": false,
                        "section": "Settings",
                        "default": 30,
                        "min": 1,
                        "max": 100,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_inference_steps",
                        "label": "Inference Steps",
                        "title": "Number of diffusion denoising steps. More steps generally produce higher quality results"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "auto",
                        "crop_override_value": "square_hd",
                        "options": [
                            "auto",
                            "custom",
                            "landscape_16_9",
                            "landscape_4_3",
                            "portrait_16_9",
                            "portrait_4_3",
                            "square",
                            "square_hd"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "custom": "Custom",
                            "landscape_16_9": "Landscape 16:9",
                            "landscape_4_3": "Landscape 4:3",
                            "portrait_16_9": "Portrait 9:16",
                            "portrait_4_3": "Portrait 3:4",
                            "square": "Square",
                            "square_hd": "Square HD"
                        },
                        "exclude_api_values": [
                            "custom"
                        ],
                        "api_field": "image_size",
                        "label": "Image Size",
                        "title": "The desired size of the generated image. If Auto, image size will be determined by the model"
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "default": 512,
                        "min": 64,
                        "max": 14142,
                        "step": 8,
                        "api_field": "image_size.width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "",
                        "section": "Output"
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "default": 512,
                        "min": 64,
                        "max": 14142,
                        "step": 8,
                        "api_field": "image_size.height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of output images to generate"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "The same seed and the same prompt given to the same version of the model will output the same image every time"
                    },
                    "disable_safety_checker": {
                        "type": "bool",
                        "required": false,
                        "section": "Safety",
                        "default": false,
                        "api_field": "enable_safety_checker",
                        "api_invert": true,
                        "warning_values": [
                            true
                        ],
                        "label": "Disable Safety Checker",
                        "title": "Disable safety checker for generated images"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "seed_path": "seed",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "iclightv2": {
        "name": "IC-Light V2",
        "shortname": "IC-Light V2",
        "vendor": "IC-Light",
        "family": "IC-Light",
        "deprecated": false,
        "docs_url": "https://fal.ai/models/fal-ai/iclight-v2",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "relight": "fal-ai/iclight-v2"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "relight": {
                "io": "image + text → image",
                "description": "Relight an image with a text description of desired lighting",
                "fields": {
                    "lighting_description": {
                        "type": "text",
                        "required": true,
                        "max_length": 10000,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "The model understands detailed terms about lighting, so be specific. You can also specify a background change\n\nTerms like '45 degrees to the side', 'above', 'below', 'left', 'right', 'front', 'back', 'in front', 'behind' and combinations of these work. For light quality, try terms like 'soft', 'diffused', 'harsh', 'dramatic', 'subtle', 'bright', and 'dim'. Consider including context and time of day to convey a sense of light temperature and shadow patterning\n\nSet-up descriptions like 'three-point studio lighting' or 'clamshell lighting setup' may also be used",
                        "section": "Prompts"
                    },
                    "guidance_scale": {
                        "type": "range",
                        "required": false,
                        "default": 5.0,
                        "min": 0,
                        "max": 20,
                        "step": 0.5,
                        "api_field": "guidance_scale",
                        "label": "Guidance Scale",
                        "note": "",
                        "subtype": "float",
                        "title": "Guidance scale for generation",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "note": "Shown in JS UI but Python does NOT send it",
                        "title": "Description of what to exclude from an image",
                        "section": "Prompts"
                    },
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_url",
                        "api_field": "image_url",
                        "label": "Source",
                        "title": "",
                        "section": "Inputs"
                    },
                    "mask": {
                        "type": "image",
                        "required": false,
                        "principal_mask": true,
                        "mask_padding": "#000000",
                        "upload_as": "s3_url",
                        "api_field": "mask_image_url",
                        "label": "Mask",
                        "title": "Consisting of a gradient between black and white (grayscale), with pixels toward white defining the area to be changed",
                        "section": "Inputs"
                    },
                    "inference_steps": {
                        "type": "range",
                        "required": false,
                        "default": 28,
                        "min": 1,
                        "max": 50,
                        "step": 1,
                        "api_field": "num_inference_steps",
                        "label": "Inference Steps",
                        "subtype": "int",
                        "title": "Number of inference steps to perform",
                        "section": "Settings"
                    },
                    "initial_latent": {
                        "type": "enum",
                        "required": false,
                        "default": "None",
                        "options": [
                            "Bottom",
                            "Left",
                            "None",
                            "Right",
                            "Top"
                        ],
                        "option_labels": {
                            "Bottom": "",
                            "Left": "",
                            "None": "",
                            "Right": "",
                            "Top": ""
                        },
                        "api_field": "initial_latent",
                        "label": "Lighting Preference",
                        "title": "Lighting conditions",
                        "section": "Settings"
                    },
                    "cfg_scale": {
                        "type": "range",
                        "required": false,
                        "default": 1.0,
                        "min": 0,
                        "max": 5,
                        "step": 0.1,
                        "api_field": "cfg",
                        "label": "CFG Scale",
                        "subtype": "float",
                        "title": "The real classifier-free-guidance scale for the generation",
                        "section": "Settings"
                    },
                    "enable_hr_fix": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "api_field": "enable_hr_fix",
                        "label": "Enable HR Fix",
                        "title": "Toggle for resolution improvements",
                        "section": "Settings"
                    },
                    "highres_denoise": {
                        "type": "range",
                        "required": false,
                        "default": 0.95,
                        "min": 0,
                        "max": 1,
                        "step": 0.01,
                        "api_field": "highres_denoise",
                        "label": "High-res Denoise Strength",
                        "visible_when": {
                            "enable_hr_fix": true
                        },
                        "subtype": "float",
                        "title": "Strength for high-resolution pass. Only used if the HR fix is enabled",
                        "section": "Settings"
                    },
                    "lowres_denoise": {
                        "type": "range",
                        "required": false,
                        "default": 0.98,
                        "min": 0,
                        "max": 1,
                        "step": 0.01,
                        "api_field": "lowres_denoise",
                        "label": "Low-res Denoise Strength",
                        "subtype": "float",
                        "title": "Strength for low-res pass",
                        "section": "Settings"
                    },
                    "hr_downscale": {
                        "type": "range",
                        "required": false,
                        "default": 0.5,
                        "min": 0,
                        "max": 1,
                        "step": 0.01,
                        "api_field": "hr_downscale",
                        "label": "HR Downscale Factor",
                        "subtype": "float",
                        "title": "High-resolution downscale factor",
                        "section": "Settings"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "custom",
                            "landscape_16_9",
                            "landscape_4_3",
                            "portrait_3_4",
                            "portrait_9_16",
                            "square",
                            "square_hd"
                        ],
                        "option_labels": {
                            "custom": "Custom",
                            "landscape_16_9": "Landscape 16:9",
                            "landscape_4_3": "Landscape 4:3",
                            "portrait_3_4": "Portrait 3:4",
                            "portrait_9_16": "Portrait 9:16",
                            "square": "Square",
                            "square_hd": "Square HD"
                        },
                        "api_field": "image_size",
                        "label": "Image Size",
                        "note": "When 'custom', sends {width, height} object instead of string preset",
                        "title": "",
                        "section": "Output",
                        "exclude_api_values": [
                            "custom"
                        ]
                    },
                    "custom_width": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 64,
                        "max": 1920,
                        "step": 1,
                        "api_field": "image_size.width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "",
                        "section": "Output"
                    },
                    "custom_height": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 64,
                        "max": 1920,
                        "step": 1,
                        "api_field": "image_size.height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image",
                        "section": "Output"
                    },
                    "num_outputs": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "step": 1,
                        "api_field": "num_images",
                        "label": "Count",
                        "subtype": "int",
                        "title": "Number of output images to generate",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image",
                        "section": "Output"
                    },
                    "disable_safety_checker": {
                        "type": "bool",
                        "required": false,
                        "default": true,
                        "api_field": "enable_safety_checker",
                        "api_transform": "invert_bool",
                        "warning_values": [
                            true
                        ],
                        "label": "Disable Safety Checker",
                        "title": "Disable safety checker for generated images",
                        "section": "Safety"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "response_format": "url",
                    "multi_output": true
                },
                "deprecated": false
            }
        }
    },
    "ideogram": {
        "name": "Ideogram 3.0",
        "shortname": "Ideogram 3.0",
        "vendor": "Ideogram",
        "family": "Ideogram",
        "deprecated": false,
        "prompt_guide_url": "https://docs.ideogram.ai/using-ideogram/prompting-guide",
        "docs_url": "https://fal.ai/models/fal-ai/ideogram/v3/api",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/ideogram/v3",
                    "edit": "fal-ai/ideogram/v3/edit",
                    "expand": "fal-ai/ideogram/v3/reframe",
                    "bggen": "fal-ai/ideogram/v3/replace-background",
                    "layerize": "fal-ai/ideogram/v3/layerize-text"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text with optional style references, style presets, and color palette",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 800,
                        "structured_template": "basic",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "max": 800,
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from an image. Descriptions in the prompt take precedence over descriptions in the negative prompt",
                        "section": "Prompts"
                    },
                    "expand_prompt": {
                        "type": "bool",
                        "required": false,
                        "default": true,
                        "api_field": "expand_prompt",
                        "label": "Magic Prompt",
                        "title": "Interpret the prompt and expand/embellish it to maximize variety and beauty of generated images",
                        "section": "Prompts"
                    },
                    "style_reference_images": {
                        "type": "image[]",
                        "required": false,
                        "max_items": 3,
                        "upload_as": "s3_public_url",
                        "api_field": "image_urls",
                        "label": "Style Reference Images",
                        "title": "Up to 3 images whose styles blend with your prompt. Combined size limited to 10 MB. Not compatible with Style Type",
                        "section": "Style"
                    },
                    "style_type": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "AUTO",
                            "DESIGN",
                            "GENERAL",
                            "REALISTIC"
                        ],
                        "option_labels": {
                            "AUTO": "Auto",
                            "DESIGN": "Design",
                            "GENERAL": "General",
                            "REALISTIC": "Realistic"
                        },
                        "api_field": "style",
                        "label": "Style Type",
                        "title": "AUTO: Let the model pick the best style\n\nGENERAL: Versatile, handles most prompts\n\nREALISTIC: Photographic, lifelike output\n\nDESIGN: Logos, posters, graphic design. Not compatible with Style Reference Images",
                        "section": "Style"
                    },
                    "style_preset": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "80S_ILLUSTRATION",
                            "90S_NOSTALGIA",
                            "ABSTRACT_ORGANIC",
                            "ANALOG_NOSTALGIA",
                            "ART_BRUT",
                            "ART_DECO",
                            "ART_POSTER",
                            "AURA",
                            "AVANT_GARDE",
                            "BAUHAUS",
                            "BLUEPRINT",
                            "BLURRY_MOTION",
                            "BRIGHT_ART",
                            "C4D_CARTOON",
                            "CHILDRENS_BOOK",
                            "COLLAGE",
                            "COLORING_BOOK_I",
                            "COLORING_BOOK_II",
                            "CUBISM",
                            "DARK_AURA",
                            "DOODLE",
                            "DOUBLE_EXPOSURE",
                            "DRAMATIC_CINEMA",
                            "EDITORIAL",
                            "EMOTIONAL_MINIMAL",
                            "ETHEREAL_PARTY",
                            "EXPIRED_FILM",
                            "FLAT_ART",
                            "FLAT_VECTOR",
                            "FOREST_REVERIE",
                            "GEO_MINIMALIST",
                            "GLASS_PRISM",
                            "GOLDEN_HOUR",
                            "GRAFFITI_I",
                            "GRAFFITI_II",
                            "HALFTONE_PRINT",
                            "HIGH_CONTRAST",
                            "HIPPIE_ERA",
                            "ICONIC",
                            "JAPANDI_FUSION",
                            "JAZZY",
                            "LONG_EXPOSURE",
                            "MAGAZINE_EDITORIAL",
                            "MINIMAL_ILLUSTRATION",
                            "MIXED_MEDIA",
                            "MONOCHROME",
                            "NIGHTLIFE",
                            "OIL_PAINTING",
                            "OLD_CARTOONS",
                            "PAINT_GESTURE",
                            "POP_ART",
                            "RETRO_ETCHING",
                            "RIVIERA_POP",
                            "SPOTLIGHT_80S",
                            "STYLIZED_RED",
                            "SURREAL_COLLAGE",
                            "TRAVEL_POSTER",
                            "VINTAGE_GEO",
                            "VINTAGE_POSTER",
                            "WATERCOLOR",
                            "WEIRD",
                            "WOODBLOCK_PRINT"
                        ],
                        "option_labels": {
                            "80S_ILLUSTRATION": "80s Illustration",
                            "90S_NOSTALGIA": "90s Nostalgia",
                            "ABSTRACT_ORGANIC": "Abstract Organic",
                            "ANALOG_NOSTALGIA": "Analog Nostalgia",
                            "ART_BRUT": "Art Brut",
                            "ART_DECO": "Art Deco",
                            "ART_POSTER": "Art Poster",
                            "AURA": "Aura",
                            "AVANT_GARDE": "Avant Garde",
                            "BAUHAUS": "Bauhaus",
                            "BLUEPRINT": "Blueprint",
                            "BLURRY_MOTION": "Blurry Motion",
                            "BRIGHT_ART": "Bright Art",
                            "C4D_CARTOON": "C4D Cartoon",
                            "CHILDRENS_BOOK": "Children's Book",
                            "COLLAGE": "Collage",
                            "COLORING_BOOK_I": "Coloring Book I",
                            "COLORING_BOOK_II": "Coloring Book II",
                            "CUBISM": "Cubism",
                            "DARK_AURA": "Dark Aura",
                            "DOODLE": "Doodle",
                            "DOUBLE_EXPOSURE": "Double Exposure",
                            "DRAMATIC_CINEMA": "Dramatic Cinema",
                            "EDITORIAL": "Editorial",
                            "EMOTIONAL_MINIMAL": "Emotional Minimal",
                            "ETHEREAL_PARTY": "Ethereal Party",
                            "EXPIRED_FILM": "Expired Film",
                            "FLAT_ART": "Flat Art",
                            "FLAT_VECTOR": "Flat Vector",
                            "FOREST_REVERIE": "Forest Reverie",
                            "GEO_MINIMALIST": "Geo Minimalist",
                            "GLASS_PRISM": "Glass Prism",
                            "GOLDEN_HOUR": "Golden Hour",
                            "GRAFFITI_I": "Graffiti I",
                            "GRAFFITI_II": "Graffiti II",
                            "HALFTONE_PRINT": "Halftone Print",
                            "HIGH_CONTRAST": "High Contrast",
                            "HIPPIE_ERA": "Hippie Era",
                            "ICONIC": "Iconic",
                            "JAPANDI_FUSION": "Japandi Fusion",
                            "JAZZY": "Jazzy",
                            "LONG_EXPOSURE": "Long Exposure",
                            "MAGAZINE_EDITORIAL": "Magazine Editorial",
                            "MINIMAL_ILLUSTRATION": "Minimal Illustration",
                            "MIXED_MEDIA": "Mixed Media",
                            "MONOCHROME": "Monochrome",
                            "NIGHTLIFE": "Nightlife",
                            "OIL_PAINTING": "Oil Painting",
                            "OLD_CARTOONS": "Old Cartoons",
                            "PAINT_GESTURE": "Paint Gesture",
                            "POP_ART": "Pop Art",
                            "RETRO_ETCHING": "Retro Etching",
                            "RIVIERA_POP": "Riviera Pop",
                            "SPOTLIGHT_80S": "Spotlight 80s",
                            "STYLIZED_RED": "Stylized Red",
                            "SURREAL_COLLAGE": "Surreal Collage",
                            "TRAVEL_POSTER": "Travel Poster",
                            "VINTAGE_GEO": "Vintage Geo",
                            "VINTAGE_POSTER": "Vintage Poster",
                            "WATERCOLOR": "Watercolor",
                            "WEIRD": "Weird",
                            "WOODBLOCK_PRINT": "Woodblock Print"
                        },
                        "api_field": "style_preset",
                        "label": "Style Preset",
                        "title": "Curated artistic style preset that guides the generation",
                        "section": "Style"
                    },
                    "style_codes": {
                        "type": "text",
                        "required": false,
                        "api_field": "style_codes",
                        "label": "Style Codes",
                        "title": "Comma-separated list of 8-character hexadecimal codes representing the style. Not compatible with Style Reference Images or Style Type",
                        "section": "Style"
                    },
                    "color_palette_preset": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "EMBER",
                            "FRESH",
                            "JUNGLE",
                            "MAGIC",
                            "MELON",
                            "MOSAIC",
                            "PASTEL",
                            "ULTRAMARINE"
                        ],
                        "option_labels": {
                            "EMBER": "Ember",
                            "FRESH": "Fresh",
                            "JUNGLE": "Jungle",
                            "MAGIC": "Magic",
                            "MELON": "Melon",
                            "MOSAIC": "Mosaic",
                            "PASTEL": "Pastel",
                            "ULTRAMARINE": "Ultramarine"
                        },
                        "api_field": "color_palette.name",
                        "label": "Color Palette",
                        "title": "Color palette preset that guides the generation's colors",
                        "section": "Color"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "default": "square_hd",
                        "options": [
                            "custom",
                            "landscape_16_9",
                            "landscape_4_3",
                            "portrait_16_9",
                            "portrait_4_3",
                            "square",
                            "square_hd"
                        ],
                        "option_labels": {
                            "custom": "Custom",
                            "landscape_16_9": "Landscape 16:9",
                            "landscape_4_3": "Landscape 4:3",
                            "portrait_16_9": "Portrait 9:16",
                            "portrait_4_3": "Portrait 3:4",
                            "square": "Square",
                            "square_hd": "Square HD"
                        },
                        "api_field": "image_size",
                        "label": "Size",
                        "title": "Output image resolution. Choose Custom to specify exact width and height",
                        "section": "Output",
                        "exclude_api_values": [
                            "custom"
                        ]
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "default": 1024,
                        "min": 256,
                        "max": 2048,
                        "step": 8,
                        "api_field": "image_size.width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "Custom output width in pixels",
                        "section": "Output"
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "default": 1024,
                        "min": 256,
                        "max": 2048,
                        "step": 8,
                        "api_field": "image_size.height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "Custom output height in pixels",
                        "section": "Output"
                    },
                    "rendering_speed": {
                        "type": "enum",
                        "required": false,
                        "default": "BALANCED",
                        "options": [
                            "BALANCED",
                            "QUALITY",
                            "TURBO"
                        ],
                        "option_labels": {
                            "BALANCED": "Balanced",
                            "QUALITY": "Quality",
                            "TURBO": "Turbo"
                        },
                        "api_field": "rendering_speed",
                        "label": "Render Speed",
                        "title": "TURBO: Fastest, lowest cost\n\nBALANCED: Default; balances speed and quality\n\nQUALITY: Highest detail and fidelity",
                        "section": "Output"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "min": 1,
                        "max": 8,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of images to generate per request",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "max": 2147483647,
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Random seed for reproducible generation. Use the same seed and settings to create similar images",
                        "section": "Output"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "edit": {
                "io": "image + mask + text → image",
                "description": "Edit an image by inpainting within a mask region",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 800,
                        "structured_template": "basic",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe what should appear in the masked region",
                        "section": "Prompts"
                    },
                    "expand_prompt": {
                        "type": "bool",
                        "required": false,
                        "default": true,
                        "api_field": "expand_prompt",
                        "label": "Magic Prompt",
                        "section": "Prompts"
                    },
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_public_url",
                        "api_field": "image_url",
                        "label": "Source",
                        "title": "The image to edit. Must have the exact same dimensions as the mask",
                        "section": "Inputs"
                    },
                    "mask": {
                        "type": "image",
                        "required": true,
                        "principal_mask": true,
                        "mask_padding": "#ffffff",
                        "upload_as": "s3_public_url",
                        "api_field": "mask_url",
                        "label": "Mask",
                        "title": "Black regions will be edited, white regions preserved. Must match source image dimensions",
                        "section": "Inputs"
                    },
                    "style_reference_images": {
                        "type": "image[]",
                        "required": false,
                        "max_items": 3,
                        "upload_as": "s3_public_url",
                        "api_field": "image_urls",
                        "label": "Style Reference Images",
                        "title": "Up to 3 images whose styles guide the edit. Combined size limited to 10 MB",
                        "section": "Style"
                    },
                    "style_preset": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "80S_ILLUSTRATION",
                            "90S_NOSTALGIA",
                            "ABSTRACT_ORGANIC",
                            "ANALOG_NOSTALGIA",
                            "ART_BRUT",
                            "ART_DECO",
                            "ART_POSTER",
                            "AURA",
                            "AVANT_GARDE",
                            "BAUHAUS",
                            "BLUEPRINT",
                            "BLURRY_MOTION",
                            "BRIGHT_ART",
                            "C4D_CARTOON",
                            "CHILDRENS_BOOK",
                            "COLLAGE",
                            "COLORING_BOOK_I",
                            "COLORING_BOOK_II",
                            "CUBISM",
                            "DARK_AURA",
                            "DOODLE",
                            "DOUBLE_EXPOSURE",
                            "DRAMATIC_CINEMA",
                            "EDITORIAL",
                            "EMOTIONAL_MINIMAL",
                            "ETHEREAL_PARTY",
                            "EXPIRED_FILM",
                            "FLAT_ART",
                            "FLAT_VECTOR",
                            "FOREST_REVERIE",
                            "GEO_MINIMALIST",
                            "GLASS_PRISM",
                            "GOLDEN_HOUR",
                            "GRAFFITI_I",
                            "GRAFFITI_II",
                            "HALFTONE_PRINT",
                            "HIGH_CONTRAST",
                            "HIPPIE_ERA",
                            "ICONIC",
                            "JAPANDI_FUSION",
                            "JAZZY",
                            "LONG_EXPOSURE",
                            "MAGAZINE_EDITORIAL",
                            "MINIMAL_ILLUSTRATION",
                            "MIXED_MEDIA",
                            "MONOCHROME",
                            "NIGHTLIFE",
                            "OIL_PAINTING",
                            "OLD_CARTOONS",
                            "PAINT_GESTURE",
                            "POP_ART",
                            "RETRO_ETCHING",
                            "RIVIERA_POP",
                            "SPOTLIGHT_80S",
                            "STYLIZED_RED",
                            "SURREAL_COLLAGE",
                            "TRAVEL_POSTER",
                            "VINTAGE_GEO",
                            "VINTAGE_POSTER",
                            "WATERCOLOR",
                            "WEIRD",
                            "WOODBLOCK_PRINT"
                        ],
                        "option_labels": {
                            "80S_ILLUSTRATION": "80s Illustration",
                            "90S_NOSTALGIA": "90s Nostalgia",
                            "ABSTRACT_ORGANIC": "Abstract Organic",
                            "ANALOG_NOSTALGIA": "Analog Nostalgia",
                            "ART_BRUT": "Art Brut",
                            "ART_DECO": "Art Deco",
                            "ART_POSTER": "Art Poster",
                            "AURA": "Aura",
                            "AVANT_GARDE": "Avant Garde",
                            "BAUHAUS": "Bauhaus",
                            "BLUEPRINT": "Blueprint",
                            "BLURRY_MOTION": "Blurry Motion",
                            "BRIGHT_ART": "Bright Art",
                            "C4D_CARTOON": "C4D Cartoon",
                            "CHILDRENS_BOOK": "Children's Book",
                            "COLLAGE": "Collage",
                            "COLORING_BOOK_I": "Coloring Book I",
                            "COLORING_BOOK_II": "Coloring Book II",
                            "CUBISM": "Cubism",
                            "DARK_AURA": "Dark Aura",
                            "DOODLE": "Doodle",
                            "DOUBLE_EXPOSURE": "Double Exposure",
                            "DRAMATIC_CINEMA": "Dramatic Cinema",
                            "EDITORIAL": "Editorial",
                            "EMOTIONAL_MINIMAL": "Emotional Minimal",
                            "ETHEREAL_PARTY": "Ethereal Party",
                            "EXPIRED_FILM": "Expired Film",
                            "FLAT_ART": "Flat Art",
                            "FLAT_VECTOR": "Flat Vector",
                            "FOREST_REVERIE": "Forest Reverie",
                            "GEO_MINIMALIST": "Geo Minimalist",
                            "GLASS_PRISM": "Glass Prism",
                            "GOLDEN_HOUR": "Golden Hour",
                            "GRAFFITI_I": "Graffiti I",
                            "GRAFFITI_II": "Graffiti II",
                            "HALFTONE_PRINT": "Halftone Print",
                            "HIGH_CONTRAST": "High Contrast",
                            "HIPPIE_ERA": "Hippie Era",
                            "ICONIC": "Iconic",
                            "JAPANDI_FUSION": "Japandi Fusion",
                            "JAZZY": "Jazzy",
                            "LONG_EXPOSURE": "Long Exposure",
                            "MAGAZINE_EDITORIAL": "Magazine Editorial",
                            "MINIMAL_ILLUSTRATION": "Minimal Illustration",
                            "MIXED_MEDIA": "Mixed Media",
                            "MONOCHROME": "Monochrome",
                            "NIGHTLIFE": "Nightlife",
                            "OIL_PAINTING": "Oil Painting",
                            "OLD_CARTOONS": "Old Cartoons",
                            "PAINT_GESTURE": "Paint Gesture",
                            "POP_ART": "Pop Art",
                            "RETRO_ETCHING": "Retro Etching",
                            "RIVIERA_POP": "Riviera Pop",
                            "SPOTLIGHT_80S": "Spotlight 80s",
                            "STYLIZED_RED": "Stylized Red",
                            "SURREAL_COLLAGE": "Surreal Collage",
                            "TRAVEL_POSTER": "Travel Poster",
                            "VINTAGE_GEO": "Vintage Geo",
                            "VINTAGE_POSTER": "Vintage Poster",
                            "WATERCOLOR": "Watercolor",
                            "WEIRD": "Weird",
                            "WOODBLOCK_PRINT": "Woodblock Print"
                        },
                        "api_field": "style_preset",
                        "label": "Style Preset",
                        "section": "Style"
                    },
                    "style_codes": {
                        "type": "text",
                        "required": false,
                        "api_field": "style_codes",
                        "label": "Style Codes",
                        "title": "Comma-separated 8-character hex style codes",
                        "section": "Style"
                    },
                    "color_palette_preset": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "EMBER",
                            "FRESH",
                            "JUNGLE",
                            "MAGIC",
                            "MELON",
                            "MOSAIC",
                            "PASTEL",
                            "ULTRAMARINE"
                        ],
                        "option_labels": {
                            "EMBER": "Ember",
                            "FRESH": "Fresh",
                            "JUNGLE": "Jungle",
                            "MAGIC": "Magic",
                            "MELON": "Melon",
                            "MOSAIC": "Mosaic",
                            "PASTEL": "Pastel",
                            "ULTRAMARINE": "Ultramarine"
                        },
                        "api_field": "color_palette.name",
                        "label": "Color Palette",
                        "section": "Color"
                    },
                    "rendering_speed": {
                        "type": "enum",
                        "required": false,
                        "default": "BALANCED",
                        "options": [
                            "BALANCED",
                            "QUALITY",
                            "TURBO"
                        ],
                        "option_labels": {
                            "BALANCED": "Balanced",
                            "QUALITY": "Quality",
                            "TURBO": "Turbo"
                        },
                        "api_field": "rendering_speed",
                        "label": "Render Speed",
                        "section": "Output"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "min": 1,
                        "max": 8,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "max": 2147483647,
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "section": "Output"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "expand": {
                "io": "image → image",
                "description": "Reframe an image to a new resolution, extending the canvas with intelligent outpainting",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_public_url",
                        "api_field": "image_url",
                        "label": "Source",
                        "title": "The image to reframe",
                        "section": "Inputs"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": true,
                        "default": "square_hd",
                        "options": [
                            "custom",
                            "landscape_16_9",
                            "landscape_4_3",
                            "portrait_16_9",
                            "portrait_4_3",
                            "square",
                            "square_hd"
                        ],
                        "option_labels": {
                            "custom": "Custom",
                            "landscape_16_9": "Landscape 16:9",
                            "landscape_4_3": "Landscape 4:3",
                            "portrait_16_9": "Portrait 9:16",
                            "portrait_4_3": "Portrait 3:4",
                            "square": "Square",
                            "square_hd": "Square HD"
                        },
                        "api_field": "image_size",
                        "label": "Target Size",
                        "title": "The output resolution the image should be reframed to",
                        "section": "Output",
                        "exclude_api_values": [
                            "custom"
                        ]
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "default": 1024,
                        "min": 256,
                        "max": 2048,
                        "step": 8,
                        "api_field": "image_size.width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "section": "Output"
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "default": 1024,
                        "min": 256,
                        "max": 2048,
                        "step": 8,
                        "api_field": "image_size.height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "section": "Output"
                    },
                    "style_reference_images": {
                        "type": "image[]",
                        "required": false,
                        "max_items": 3,
                        "upload_as": "s3_public_url",
                        "api_field": "image_urls",
                        "label": "Style Reference Images",
                        "section": "Style"
                    },
                    "style_type": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "AUTO",
                            "DESIGN",
                            "GENERAL",
                            "REALISTIC"
                        ],
                        "option_labels": {
                            "AUTO": "Auto",
                            "DESIGN": "Design",
                            "GENERAL": "General",
                            "REALISTIC": "Realistic"
                        },
                        "api_field": "style",
                        "label": "Style Type",
                        "section": "Style"
                    },
                    "style_codes": {
                        "type": "text",
                        "required": false,
                        "api_field": "style_codes",
                        "label": "Style Codes",
                        "section": "Style"
                    },
                    "color_palette_preset": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "EMBER",
                            "FRESH",
                            "JUNGLE",
                            "MAGIC",
                            "MELON",
                            "MOSAIC",
                            "PASTEL",
                            "ULTRAMARINE"
                        ],
                        "option_labels": {
                            "EMBER": "Ember",
                            "FRESH": "Fresh",
                            "JUNGLE": "Jungle",
                            "MAGIC": "Magic",
                            "MELON": "Melon",
                            "MOSAIC": "Mosaic",
                            "PASTEL": "Pastel",
                            "ULTRAMARINE": "Ultramarine"
                        },
                        "api_field": "color_palette.name",
                        "label": "Color Palette",
                        "section": "Color"
                    },
                    "rendering_speed": {
                        "type": "enum",
                        "required": false,
                        "default": "BALANCED",
                        "options": [
                            "BALANCED",
                            "QUALITY",
                            "TURBO"
                        ],
                        "option_labels": {
                            "BALANCED": "Balanced",
                            "QUALITY": "Quality",
                            "TURBO": "Turbo"
                        },
                        "api_field": "rendering_speed",
                        "label": "Render Speed",
                        "section": "Output"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "min": 1,
                        "max": 8,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "max": 2147483647,
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "section": "Output"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "bggen": {
                "io": "image + text → image",
                "description": "Replace the background of an image. The foreground subject is preserved, the background is generated from the prompt",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 800,
                        "structured_template": "basic",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe the new background",
                        "section": "Prompts"
                    },
                    "expand_prompt": {
                        "type": "bool",
                        "required": false,
                        "default": true,
                        "api_field": "expand_prompt",
                        "label": "Magic Prompt",
                        "section": "Prompts"
                    },
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_public_url",
                        "api_field": "image_url",
                        "label": "Source",
                        "title": "The image whose background will be replaced",
                        "section": "Inputs"
                    },
                    "style_reference_images": {
                        "type": "image[]",
                        "required": false,
                        "max_items": 3,
                        "upload_as": "s3_public_url",
                        "api_field": "image_urls",
                        "label": "Style Reference Images",
                        "section": "Style"
                    },
                    "style_type": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "AUTO",
                            "DESIGN",
                            "GENERAL",
                            "REALISTIC"
                        ],
                        "option_labels": {
                            "AUTO": "Auto",
                            "DESIGN": "Design",
                            "GENERAL": "General",
                            "REALISTIC": "Realistic"
                        },
                        "api_field": "style",
                        "label": "Style Type",
                        "section": "Style"
                    },
                    "style_preset": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "80S_ILLUSTRATION",
                            "90S_NOSTALGIA",
                            "ABSTRACT_ORGANIC",
                            "ANALOG_NOSTALGIA",
                            "ART_BRUT",
                            "ART_DECO",
                            "ART_POSTER",
                            "AURA",
                            "AVANT_GARDE",
                            "BAUHAUS",
                            "BLUEPRINT",
                            "BLURRY_MOTION",
                            "BRIGHT_ART",
                            "C4D_CARTOON",
                            "CHILDRENS_BOOK",
                            "COLLAGE",
                            "COLORING_BOOK_I",
                            "COLORING_BOOK_II",
                            "CUBISM",
                            "DARK_AURA",
                            "DOODLE",
                            "DOUBLE_EXPOSURE",
                            "DRAMATIC_CINEMA",
                            "EDITORIAL",
                            "EMOTIONAL_MINIMAL",
                            "ETHEREAL_PARTY",
                            "EXPIRED_FILM",
                            "FLAT_ART",
                            "FLAT_VECTOR",
                            "FOREST_REVERIE",
                            "GEO_MINIMALIST",
                            "GLASS_PRISM",
                            "GOLDEN_HOUR",
                            "GRAFFITI_I",
                            "GRAFFITI_II",
                            "HALFTONE_PRINT",
                            "HIGH_CONTRAST",
                            "HIPPIE_ERA",
                            "ICONIC",
                            "JAPANDI_FUSION",
                            "JAZZY",
                            "LONG_EXPOSURE",
                            "MAGAZINE_EDITORIAL",
                            "MINIMAL_ILLUSTRATION",
                            "MIXED_MEDIA",
                            "MONOCHROME",
                            "NIGHTLIFE",
                            "OIL_PAINTING",
                            "OLD_CARTOONS",
                            "PAINT_GESTURE",
                            "POP_ART",
                            "RETRO_ETCHING",
                            "RIVIERA_POP",
                            "SPOTLIGHT_80S",
                            "STYLIZED_RED",
                            "SURREAL_COLLAGE",
                            "TRAVEL_POSTER",
                            "VINTAGE_GEO",
                            "VINTAGE_POSTER",
                            "WATERCOLOR",
                            "WEIRD",
                            "WOODBLOCK_PRINT"
                        ],
                        "option_labels": {
                            "80S_ILLUSTRATION": "80s Illustration",
                            "90S_NOSTALGIA": "90s Nostalgia",
                            "ABSTRACT_ORGANIC": "Abstract Organic",
                            "ANALOG_NOSTALGIA": "Analog Nostalgia",
                            "ART_BRUT": "Art Brut",
                            "ART_DECO": "Art Deco",
                            "ART_POSTER": "Art Poster",
                            "AURA": "Aura",
                            "AVANT_GARDE": "Avant Garde",
                            "BAUHAUS": "Bauhaus",
                            "BLUEPRINT": "Blueprint",
                            "BLURRY_MOTION": "Blurry Motion",
                            "BRIGHT_ART": "Bright Art",
                            "C4D_CARTOON": "C4D Cartoon",
                            "CHILDRENS_BOOK": "Children's Book",
                            "COLLAGE": "Collage",
                            "COLORING_BOOK_I": "Coloring Book I",
                            "COLORING_BOOK_II": "Coloring Book II",
                            "CUBISM": "Cubism",
                            "DARK_AURA": "Dark Aura",
                            "DOODLE": "Doodle",
                            "DOUBLE_EXPOSURE": "Double Exposure",
                            "DRAMATIC_CINEMA": "Dramatic Cinema",
                            "EDITORIAL": "Editorial",
                            "EMOTIONAL_MINIMAL": "Emotional Minimal",
                            "ETHEREAL_PARTY": "Ethereal Party",
                            "EXPIRED_FILM": "Expired Film",
                            "FLAT_ART": "Flat Art",
                            "FLAT_VECTOR": "Flat Vector",
                            "FOREST_REVERIE": "Forest Reverie",
                            "GEO_MINIMALIST": "Geo Minimalist",
                            "GLASS_PRISM": "Glass Prism",
                            "GOLDEN_HOUR": "Golden Hour",
                            "GRAFFITI_I": "Graffiti I",
                            "GRAFFITI_II": "Graffiti II",
                            "HALFTONE_PRINT": "Halftone Print",
                            "HIGH_CONTRAST": "High Contrast",
                            "HIPPIE_ERA": "Hippie Era",
                            "ICONIC": "Iconic",
                            "JAPANDI_FUSION": "Japandi Fusion",
                            "JAZZY": "Jazzy",
                            "LONG_EXPOSURE": "Long Exposure",
                            "MAGAZINE_EDITORIAL": "Magazine Editorial",
                            "MINIMAL_ILLUSTRATION": "Minimal Illustration",
                            "MIXED_MEDIA": "Mixed Media",
                            "MONOCHROME": "Monochrome",
                            "NIGHTLIFE": "Nightlife",
                            "OIL_PAINTING": "Oil Painting",
                            "OLD_CARTOONS": "Old Cartoons",
                            "PAINT_GESTURE": "Paint Gesture",
                            "POP_ART": "Pop Art",
                            "RETRO_ETCHING": "Retro Etching",
                            "RIVIERA_POP": "Riviera Pop",
                            "SPOTLIGHT_80S": "Spotlight 80s",
                            "STYLIZED_RED": "Stylized Red",
                            "SURREAL_COLLAGE": "Surreal Collage",
                            "TRAVEL_POSTER": "Travel Poster",
                            "VINTAGE_GEO": "Vintage Geo",
                            "VINTAGE_POSTER": "Vintage Poster",
                            "WATERCOLOR": "Watercolor",
                            "WEIRD": "Weird",
                            "WOODBLOCK_PRINT": "Woodblock Print"
                        },
                        "api_field": "style_preset",
                        "label": "Style Preset",
                        "section": "Style"
                    },
                    "style_codes": {
                        "type": "text",
                        "required": false,
                        "api_field": "style_codes",
                        "label": "Style Codes",
                        "section": "Style"
                    },
                    "color_palette_preset": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "EMBER",
                            "FRESH",
                            "JUNGLE",
                            "MAGIC",
                            "MELON",
                            "MOSAIC",
                            "PASTEL",
                            "ULTRAMARINE"
                        ],
                        "option_labels": {
                            "EMBER": "Ember",
                            "FRESH": "Fresh",
                            "JUNGLE": "Jungle",
                            "MAGIC": "Magic",
                            "MELON": "Melon",
                            "MOSAIC": "Mosaic",
                            "PASTEL": "Pastel",
                            "ULTRAMARINE": "Ultramarine"
                        },
                        "api_field": "color_palette.name",
                        "label": "Color Palette",
                        "section": "Color"
                    },
                    "rendering_speed": {
                        "type": "enum",
                        "required": false,
                        "default": "BALANCED",
                        "options": [
                            "BALANCED",
                            "QUALITY",
                            "TURBO"
                        ],
                        "option_labels": {
                            "BALANCED": "Balanced",
                            "QUALITY": "Quality",
                            "TURBO": "Turbo"
                        },
                        "api_field": "rendering_speed",
                        "label": "Render Speed",
                        "section": "Output"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "min": 1,
                        "max": 8,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "max": 2147483647,
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "section": "Output"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "layerize": {
                "workflow_only": true,
                "io": "image → structured layers",
                "description": "Extract text containers and layer data from a flat graphic. Returns HTML overlay, font candidates, and background without text — intended for downstream workflow nodes, not direct form rendering",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "s3_public_url",
                        "api_field": "image_url",
                        "label": "Source",
                        "title": "Flat graphic to layerize. JPEG, PNG, or WebP, max 10 MB",
                        "section": "Inputs"
                    },
                    "prompt": {
                        "type": "text",
                        "required": false,
                        "max": 800,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Optional prompt to guide the layerization",
                        "section": "Prompts"
                    },
                    "font_name_h1": {
                        "type": "text",
                        "required": false,
                        "api_field": "font_name_h1",
                        "label": "Font Name — H1",
                        "title": "Name of the font to use for h1 text. Not compatible with H1 Font URL",
                        "section": "Fonts"
                    },
                    "font_file_h1_url": {
                        "type": "text",
                        "required": false,
                        "api_field": "font_file_h1_url",
                        "label": "Font URL — H1",
                        "title": "URL of the font file to use for h1 text. Not compatible with H1 Font Name",
                        "section": "Fonts"
                    },
                    "font_name_h2": {
                        "type": "text",
                        "required": false,
                        "api_field": "font_name_h2",
                        "label": "Font Name — H2",
                        "section": "Fonts"
                    },
                    "font_file_h2_url": {
                        "type": "text",
                        "required": false,
                        "api_field": "font_file_h2_url",
                        "label": "Font URL — H2",
                        "section": "Fonts"
                    },
                    "font_name_body": {
                        "type": "text",
                        "required": false,
                        "api_field": "font_name_body",
                        "label": "Font Name — Body",
                        "section": "Fonts"
                    },
                    "font_file_body_url": {
                        "type": "text",
                        "required": false,
                        "api_field": "font_file_body_url",
                        "label": "Font URL — Body",
                        "section": "Fonts"
                    },
                    "font_name_small": {
                        "type": "text",
                        "required": false,
                        "api_field": "font_name_small",
                        "label": "Font Name — Small",
                        "section": "Fonts"
                    },
                    "font_file_small_url": {
                        "type": "text",
                        "required": false,
                        "api_field": "font_file_small_url",
                        "label": "Font URL — Small",
                        "section": "Fonts"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "max": 2147483647,
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "section": "Output"
                    }
                },
                "response": {
                    "image_url_path": "image.url",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "imagen4": {
        "name": "Imagen 4.0",
        "shortname": "Imagen 4",
        "vendor": "Google",
        "family": "Imagen",
        "deprecated": true,
        "docs_url": "https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/imagen-api",
        "platforms": {
            "google_vertex": {
                "name": "Google Vertex AI",
                "model_version": "imagen-4.0-generate-001",
                "location": "us-central1"
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text",
                "http_method": "POST",
                "content_type": "application/json",
                "payload_structure": "vertex_predict",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 750,
                        "api_field": "instances[0].prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "prompt_upsampling": {
                        "type": "bool",
                        "required": false,
                        "api_field": "parameters.enhancePrompt",
                        "label": "Enhance Prompt",
                        "title": "Automatically modifies the prompt for more creative generation",
                        "section": "Prompts"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "options": [
                            "1:1",
                            "3:4",
                            "4:3",
                            "9:16",
                            "16:9"
                        ],
                        "option_labels": {
                            "1:1": "",
                            "3:4": "",
                            "4:3": "",
                            "9:16": "",
                            "16:9": ""
                        },
                        "api_field": "parameters.aspectRatioImagen",
                        "label": "Ratio",
                        "title": "Ratio of width to height, followed by pixel dimensions",
                        "section": "Output"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "1K",
                            "2K"
                        ],
                        "option_labels": {
                            "1K": "",
                            "2K": ""
                        },
                        "api_field": "parameters.sampleImageSize",
                        "label": "Image Size",
                        "title": "Output image dimensions",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "options": [
                            "image/jpeg",
                            "image/png"
                        ],
                        "option_labels": {
                            "image/jpeg": "JPEG",
                            "image/png": "PNG"
                        },
                        "api_field": "parameters.outputOptions.mimeType",
                        "label": "Format",
                        "title": "Desired file format of the resulting image",
                        "section": "Output"
                    },
                    "compression_quality": {
                        "type": "range",
                        "required": false,
                        "default": 90,
                        "min": 0,
                        "max": 100,
                        "step": 1,
                        "api_field": "parameters.outputOptions.compressionQuality",
                        "label": "Compression Quality",
                        "visible_when": {
                            "output_format": "image/jpeg"
                        },
                        "subtype": "int",
                        "title": "",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "max": 4294967295,
                        "default": null,
                        "api_field": "parameters.seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image",
                        "section": "Output"
                    },
                    "person_generation": {
                        "type": "enum",
                        "required": false,
                        "options": [
                            "allow_adult",
                            "allow_all",
                            "dont_allow"
                        ],
                        "option_labels": {
                            "allow_adult": "Allow generation of adults only",
                            "allow_all": "Allow generation of people of all ages",
                            "dont_allow": "Disallow the inclusion of people or faces in images"
                        },
                        "api_field": "parameters.personGeneration",
                        "warning_values": [
                            "allow_all"
                        ],
                        "label": "Person Generation",
                        "title": "",
                        "section": "Safety"
                    },
                    "safety_setting": {
                        "type": "enum",
                        "required": false,
                        "options": [
                            "block_low_and_above",
                            "block_medium_and_above",
                            "block_only_high"
                        ],
                        "option_labels": {
                            "block_low_and_above": "Block Low and Above",
                            "block_medium_and_above": "Block Medium and Above",
                            "block_only_high": "Block Only High"
                        },
                        "api_field": "parameters.safetySetting",
                        "warning_values": [
                            "block_only_high"
                        ],
                        "label": "Safety Setting",
                        "title": "BLOCK LOW AND ABOVE: Strongest filtering level, most strict blocking\n\nBLOCK MEDIUM AND ABOVE: Block some problematic prompts and responses\n\nBLOCK ONLY HIGH: Reduces the number of requests blocked due to safety filters",
                        "section": "Safety"
                    }
                },
                "hidden_api_fields": {
                    "parameters.sampleCount": 1
                },
                "response": {
                    "images_path": "predictions",
                    "image_data_path": "bytesBase64Encoded",
                    "enhanced_prompt_path": "prompt",
                    "response_format": "base64"
                },
                "deprecated": false
            }
        }
    },
    "imagen4u": {
        "name": "Imagen 4.0 Ultra",
        "shortname": "Imagen 4 Ultra",
        "vendor": "Google",
        "family": "Imagen",
        "deprecated": false,
        "prompt_guide_url": "https://docs.cloud.google.com/vertex-ai/generative-ai/docs/image/img-gen-prompt-guide",
        "docs_url": "https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/imagen-api",
        "platforms": {
            "google_vertex": {
                "name": "Google Vertex AI",
                "model_version": "imagen-4.0-ultra-generate-001",
                "location": "us-central1"
            },
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/imagen4/preview/ultra"
                },
                "api_field_map": {
                    "compression_quality": null,
                    "image_size": "resolution",
                    "output_format": "output_format",
                    "person_generation": null,
                    "prompt_upsampling": null,
                    "safety_setting": null
                },
                "api_field_notes": {
                    "output_format": "Registry sends MIME types ('image/jpeg', 'image/png'). fal expects short names ('jpeg', 'png', 'webp'). Dispatcher must strip 'image/' prefix."
                },
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            },
            "replicate": {
                "name": "Replicate",
                "type": "byok",
                "dispatch": "replicate_run",
                "secret_id": "replicate",
                "env_var": "REPLICATE_API_TOKEN",
                "model_id": "google/imagen-4-ultra",
                "api_field_map": {
                    "aspect_ratio": "aspect_ratio",
                    "compression_quality": null,
                    "image_size": "image_size",
                    "output_format": "output_format",
                    "person_generation": null,
                    "prompt": "prompt",
                    "prompt_upsampling": null,
                    "safety_setting": "safety_filter_level",
                    "seed": null
                },
                "api_value_map": {
                    "output_format": {
                        "image/jpeg": "jpg",
                        "image/png": "png"
                    }
                },
                "hidden_api_fields": {},
                "response": {
                    "response_format": "url"
                }
            },
            "wavespeed": {
                "name": "WaveSpeedAI",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "wavespeed",
                "env_var": "WAVESPEED_API_KEY",
                "poll_url_template": "https://api.wavespeed.ai/api/v3/predictions/{request_id}/result",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60,
                "endpoints": {
                    "texttoimage": "https://api.wavespeed.ai/api/v3/google/imagen4-ultra"
                },
                "api_field_map": {
                    "aspect_ratio": "aspect_ratio",
                    "compression_quality": null,
                    "image_size": "resolution",
                    "output_format": null,
                    "person_generation": null,
                    "prompt": "prompt",
                    "prompt_upsampling": null,
                    "safety_setting": null,
                    "seed": "seed"
                },
                "api_value_map": {
                    "image_size": {
                        "1K": "1k",
                        "2K": "2k"
                    }
                },
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "response_format": "url"
                },
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            }
        },
        "constraints": {},
        "_note": "Identical field set to imagen4  — only model_version differs",
        "modes": {
            "texttoimage": {
                "_inherits": "imagen4.modes.texttoimage",
                "io": "text → image",
                "description": "Generate images from text (Ultra quality)",
                "fields": "SEE imagen4.modes.texttoimage.fields",
                "response": {
                    "images_path": "predictions",
                    "image_data_path": "bytesBase64Encoded",
                    "enhanced_prompt_path": "prompt",
                    "response_format": "base64"
                },
                "deprecated": false
            }
        }
    },
    "imagineart": {
        "name": "ImagineArt 1.5 Pro",
        "shortname": "ImagineArt 1.5",
        "vendor": "ImagineArt",
        "family": "ImagineArt",
        "deprecated": false,
        "prompt_guide_url": "https://www.imagine.art/blogs/imagine-art-1-5-prompt-guide",
        "docs_url": "https://fal.ai/models/imagineart/imagineart-1.5-pro-preview/text-to-image",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "imagineart/imagineart-1.5-pro-preview/text-to-image"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "structured_template": "basic",
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "1:1",
                        "options": [
                            "1:1",
                            "1:3",
                            "2:3",
                            "3:1",
                            "3:2",
                            "3:4",
                            "4:3",
                            "9:16",
                            "16:9"
                        ],
                        "option_labels": {
                            "1:1": "",
                            "1:3": "",
                            "2:3": "",
                            "3:1": "",
                            "3:2": "",
                            "3:4": "",
                            "4:3": "",
                            "9:16": "",
                            "16:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": ""
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "imagineart2": {
        "name": "ImagineArt 2.0 Preview",
        "shortname": "ImagineArt 2.0",
        "vendor": "ImagineArt",
        "family": "ImagineArt",
        "deprecated": false,
        "prompt_guide_url": "https://www.imagine.art/blogs/imagine-art-1-5-prompt-guide",
        "docs_url": "https://fal.ai/models/imagineart/imagineart-2.0-preview/text-to-image",
        "_note": "ImagineArt 2.0 is currently in preview on fal. Kept as a separate entry rather than replacing ImagineArt 1.5 Pro so production work can continue on the stable 1.5 while 2.0 is evaluated. Adds resolution (1K/2K) and reasoning (low/high) controls plus an expanded aspect_ratio set.",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "imagineart/imagineart-2.0-preview/text-to-image"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "structured_template": "basic",
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "reasoning": {
                        "type": "enum",
                        "required": false,
                        "section": "Settings",
                        "default": "low",
                        "options": [
                            "low",
                            "high"
                        ],
                        "option_labels": {
                            "low": "Low",
                            "high": "High"
                        },
                        "api_field": "reasoning",
                        "label": "Reasoning",
                        "reasoning_flag": [
                            "low",
                            "high"
                        ],
                        "title": "Visual understanding level. High reasoning takes more time but generates better images"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "1:1",
                        "options": [
                            "1:1",
                            "1:3",
                            "1:4",
                            "2:3",
                            "3:1",
                            "3:2",
                            "3:4",
                            "4:1",
                            "4:3",
                            "4:5",
                            "5:4",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "1:1": "",
                            "1:3": "",
                            "1:4": "",
                            "2:3": "",
                            "3:1": "",
                            "3:2": "",
                            "3:4": "",
                            "4:1": "",
                            "4:3": "",
                            "4:5": "",
                            "5:4": "",
                            "9:16": "",
                            "16:9": "",
                            "21:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": ""
                    },
                    "resolution": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "2K",
                        "options": [
                            "1K",
                            "2K"
                        ],
                        "option_labels": {
                            "1K": "1K",
                            "2K": "2K"
                        },
                        "api_field": "resolution",
                        "label": "Resolution",
                        "title": "Output resolution. 1K targets ~1024px on the long edge and renders faster. 2K targets ~2048px for higher quality but slower generation"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "joyai": {
        "name": "JoyAI-Image",
        "shortname": "JoyAI-Image",
        "vendor": "JoyAI",
        "family": "JoyAI",
        "deprecated": false,
        "docs_url": "https://fal.ai/models/fal-ai/joyai-image-edit/api",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "edit": "fal-ai/joyai-image-edit"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "edit": {
                "io": "image + text \u2192 image",
                "description": "Edit images with text instructions using JoyAI",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "The edit instruction describing what changes to make to the image"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "section": "Prompts",
                        "default": "",
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from the output image"
                    },
                    "input_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "upload_as": "s3_url",
                        "api_field": "image_url",
                        "label": "Image",
                        "title": "Input image to edit"
                    },
                    "guidance_scale": {
                        "type": "range",
                        "required": false,
                        "section": "Settings",
                        "default": 5,
                        "min": 1,
                        "max": 15,
                        "step": 0.5,
                        "subtype": "float",
                        "api_field": "guidance_scale",
                        "label": "Guidance Scale",
                        "title": "Controls how closely the output follows the edit instruction"
                    },
                    "inference_steps": {
                        "type": "range",
                        "required": false,
                        "section": "Settings",
                        "default": 30,
                        "min": 1,
                        "max": 50,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_inference_steps",
                        "label": "Inference Steps",
                        "title": "Number of denoising steps. More steps generally produce higher quality results"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "jpeg",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "The same seed and the same prompt given to the same version of the model will output the same image every time"
                    },
                    "disable_safety_checker": {
                        "type": "bool",
                        "required": false,
                        "section": "Safety",
                        "default": false,
                        "api_field": "enable_safety_checker",
                        "api_invert": true,
                        "label": "Disable Safety Checker",
                        "title": "Disable safety checker for generated images"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "seed_path": "seed",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "klingomni3": {
        "name": "Kling Omni 3",
        "shortname": "Kling O3",
        "vendor": "Kuaishou",
        "family": "Kling",
        "deprecated": false,
        "docs_url": "https://fal.ai/models/fal-ai/kling-image/o3/text-to-image/api",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "partner",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/kling-image/o3/text-to-image",
                    "edit": "fal-ai/kling-image/o3/image-to-image"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text using Kling Omni 3. Supports series generation for multiple related images",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 2500,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output. Reference character elements as @Element1"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "16:9",
                        "options": [
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "1:1": "",
                            "2:3": "",
                            "3:2": "",
                            "3:4": "",
                            "4:3": "",
                            "9:16": "",
                            "16:9": "",
                            "21:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": ""
                    },
                    "resolution": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "1K",
                        "options": [
                            "1K",
                            "2K",
                            "4K"
                        ],
                        "option_labels": {},
                        "api_field": "resolution",
                        "label": "Resolution",
                        "title": "Image generation resolution"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "result_type": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "single",
                        "options": [
                            "series",
                            "single"
                        ],
                        "option_labels": {
                            "series": "Series",
                            "single": "Standard"
                        },
                        "api_field": "result_type",
                        "label": "Result Type",
                        "title": "'Standard' generates independent images. 'Series' generates a coherent set of related images"
                    },
                    "series_amount": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 4,
                        "min": 2,
                        "max": 9,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "series_amount",
                        "label": "Series Count",
                        "title": "Number of related images to generate in 'Series' mode",
                        "visible_when": {
                            "result_type": "series"
                        }
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 9,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of output images to generate",
                        "visible_when": {
                            "result_type": "single"
                        }
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "edit": {
                "io": "image + text → image",
                "description": "Multi-image reference editing with Kling Omni 3. Reference images in prompt using @Image1, @Image2, etc.",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe the desired transformation or edit. Reference input images as @Image1, @Image2, etc. and character elements as @Element1. Max 2500 characters"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "min_items": 1,
                        "max_items": 10,
                        "upload_as": "s3_url",
                        "api_field": "image_urls",
                        "label": "",
                        "alt_label": "Reference Images",
                        "title": "Reference images for editing. Reference in prompt as @Image1, @Image2, etc. (1-indexed). Up to 10 images"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "auto",
                        "options": [
                            "auto",
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "1:1": "",
                            "2:3": "",
                            "3:2": "",
                            "3:4": "",
                            "4:3": "",
                            "9:16": "",
                            "16:9": "",
                            "21:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": "Auto-intelligently determines aspect ratio based on input content"
                    },
                    "resolution": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "1K",
                        "options": [
                            "1K",
                            "2K",
                            "4K"
                        ],
                        "option_labels": {},
                        "api_field": "resolution",
                        "label": "Resolution",
                        "title": "Image generation resolution"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "result_type": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "single",
                        "options": [
                            "series",
                            "single"
                        ],
                        "option_labels": {
                            "series": "Series",
                            "single": "Standard"
                        },
                        "api_field": "result_type",
                        "label": "Result Type",
                        "title": "'Standard' generates independent images. 'Series' generates a coherent set of related images"
                    },
                    "series_amount": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 4,
                        "min": 2,
                        "max": 9,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "series_amount",
                        "label": "Series Count",
                        "title": "Number of related images to generate in 'Series' mode",
                        "visible_when": {
                            "result_type": "series"
                        }
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 9,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of output images to generate",
                        "visible_when": {
                            "result_type": "single"
                        }
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "klingv3": {
        "name": "Kling Image V3",
        "shortname": "Kling V3",
        "vendor": "Kuaishou",
        "family": "Kling",
        "deprecated": false,
        "docs_url": "https://fal.ai/models/fal-ai/kling-image/v3/text-to-image/api",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "partner",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/kling-image/v3/text-to-image",
                    "edit": "fal-ai/kling-image/v3/image-to-image"
                },
                "api_field_map": {
                    "input_image": "image_url"
                },
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            },
            "wavespeed": {
                "name": "WaveSpeedAI",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "wavespeed",
                "env_var": "WAVESPEED_API_KEY",
                "poll_url_template": "https://api.wavespeed.ai/api/v3/predictions/{request_id}/result",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60,
                "endpoints": {
                    "texttoimage": "https://api.wavespeed.ai/api/v3/kwaivgi/kling-image-v3/text-to-image"
                },
                "api_field_map": {
                    "negative_prompt": null
                },
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "response_format": "url"
                },
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text using Kling Image v3",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 2500,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "section": "Prompts",
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from the image. It is recommended to supplement negative prompt information through negative sentences directly within the main prompt"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "16:9",
                        "options": [
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "1:1": "",
                            "2:3": "",
                            "3:2": "",
                            "3:4": "",
                            "4:3": "",
                            "9:16": "",
                            "16:9": "",
                            "21:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": ""
                    },
                    "resolution": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "1K",
                        "options": [
                            "1K",
                            "2K"
                        ],
                        "option_labels": {},
                        "api_field": "resolution",
                        "label": "Resolution",
                        "title": "Image generation resolution"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 9,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of output images to generate"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "edit": {
                "io": "image + text → image",
                "description": "Edit or transform images with text instructions using Kling Image v3",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 2500,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe the desired transformation or edit"
                    },
                    "input_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "upload_as": "s3_url",
                        "api_field": "image_url",
                        "image_constraints": {
                            "min_height": 300,
                            "min_width": 300
                        },
                        "label": "",
                        "alt_label": "Reference Image",
                        "title": "Reference image for image-to-image generation"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "16:9",
                        "crop_override_value": "1:1",
                        "options": [
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "1:1": "",
                            "2:3": "",
                            "3:2": "",
                            "3:4": "",
                            "4:3": "",
                            "9:16": "",
                            "16:9": "",
                            "21:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": ""
                    },
                    "resolution": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "1K",
                        "options": [
                            "1K",
                            "2K"
                        ],
                        "option_labels": {},
                        "api_field": "resolution",
                        "label": "Resolution",
                        "title": "Image generation resolution"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 9,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of output images to generate"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "lucidorigin": {
        "name": "Lucid Origin",
        "shortname": "Lucid Origin",
        "vendor": "Leonardo AI",
        "family": "Leonardo",
        "deprecated": false,
        "platforms": {
            "leonardo": {
                "name": "Leonardo AI",
                "model_uuid": "7b592283-e8a7-4c5a-9ba6-d18c31f258b9"
            }
        },
        "prompt_guide_url": "https://leonardo.ai/news/ai-image-prompts/",
        "constraints": {},
        "modes": {
            "texttoimage": {
                "_inherits": "phoenix.modes.texttoimage",
                "io": "text → image",
                "description": "Generate images from text (Lucid Origin)",
                "hidden_api_fields": {
                    "modelId": "7b592283-e8a7-4c5a-9ba6-d18c31f258b9",
                    "num_images": 1
                },
                "field_overrides": {
                    "contrast": {
                        "default": 3.5,
                        "required": true,
                        "note": "Required for Lucid models, defaults to 3.5"
                    },
                    "style_preset": {
                        "options": [
                            "9fdc5e8c-4d13-49b4-9ce6-5a74cbb19177",
                            "a5632c7c-ddbb-4e2f-ba34-8456ab3ac436",
                            "cc53f935-884c-40a0-b7eb-1f5c42821fb5",
                            "6fedbf1f-4a17-45ec-84fb-92fe524a29ef",
                            "111dc692-d470-4eec-b791-3475abac4c46",
                            "594c4a08-a522-4e0e-b7ff-e4dac4b6b622",
                            "85da2dcc-c373-464c-9a7a-5624359be859",
                            "d574325d-1278-4fe2-974b-768525f253c3",
                            "97c20e5c-1af6-4d42-b227-54d03d8f0727",
                            "335e6010-a75c-45d9-afc5-032c65e9180e",
                            "30c1d34f-e3a9-479a-b56f-c018bbc9c02a",
                            "cadc8cd6-7838-4c99-b645-df76be8ba8d8",
                            "a2f7ea66-959b-4bbe-b508-6133238b76b6",
                            "621e1c9a-6319-4bee-a12d-ae40659162fa",
                            "0d914779-c822-430a-b976-30075033f1c4",
                            "556c1ee5-ec38-42e8-955a-1e82dad0ffa1",
                            "8e2bc543-6ee2-45f9-bcd9-594b6ce84dcd",
                            "6105baa2-851b-446e-9db5-08a671a8c42f",
                            "5bdc3f2a-1be6-4d1c-8e77-992a30824a2c",
                            "62736842-6e4b-4028-b79a-4f1a1606e893",
                            "dee282d3-891f-4f73-ba02-7f8131e5541b"
                        ],
                        "option_labels": {
                            "0d914779-c822-430a-b976-30075033f1c4": "Neutral",
                            "111dc692-d470-4eec-b791-3475abac4c46": "Dynamic",
                            "30c1d34f-e3a9-479a-b56f-c018bbc9c02a": "Macro",
                            "335e6010-a75c-45d9-afc5-032c65e9180e": "Long Exposure",
                            "556c1ee5-ec38-42e8-955a-1e82dad0ffa1": "None",
                            "594c4a08-a522-4e0e-b7ff-e4dac4b6b622": "Fashion",
                            "5bdc3f2a-1be6-4d1c-8e77-992a30824a2c": "Stock Photo",
                            "6105baa2-851b-446e-9db5-08a671a8c42f": "Retro",
                            "621e1c9a-6319-4bee-a12d-ae40659162fa": "Moody",
                            "62736842-6e4b-4028-b79a-4f1a1606e893": "Unprocessed",
                            "6fedbf1f-4a17-45ec-84fb-92fe524a29ef": "Creative",
                            "85da2dcc-c373-464c-9a7a-5624359be859": "Film",
                            "8e2bc543-6ee2-45f9-bcd9-594b6ce84dcd": "Portrait",
                            "97c20e5c-1af6-4d42-b227-54d03d8f0727": "HDR",
                            "9fdc5e8c-4d13-49b4-9ce6-5a74cbb19177": "Bokeh",
                            "a2f7ea66-959b-4bbe-b508-6133238b76b6": "Monochrome",
                            "a5632c7c-ddbb-4e2f-ba34-8456ab3ac436": "Cinematic",
                            "cadc8cd6-7838-4c99-b645-df76be8ba8d8": "Minimalist",
                            "cc53f935-884c-40a0-b7eb-1f5c42821fb5": "Cinematic Close-Up",
                            "d574325d-1278-4fe2-974b-768525f253c3": "Food",
                            "dee282d3-891f-4f73-ba02-7f8131e5541b": "Vibrant"
                        },
                        "note": "Uses Lucid-specific style preset UUIDs, not Phoenix ones"
                    }
                },
                "deprecated": false
            },
            "upscale": {
                "_inherits": "phoenix.modes.upscale",
                "deprecated": false
            }
        }
    },
    "lucidrealism": {
        "name": "Lucid Realism",
        "shortname": "Lucid Realism",
        "vendor": "Leonardo AI",
        "family": "Leonardo",
        "deprecated": false,
        "prompt_guide_url": "https://leonardo.ai/news/ai-image-prompts/",
        "platforms": {
            "leonardo": {
                "name": "Leonardo AI",
                "model_uuid": "05ce0082-2d80-4a2d-8653-4d1c85e2418e"
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "_inherits": "phoenix.modes.texttoimage",
                "io": "text → image",
                "description": "Generate images from text (Lucid Realism)",
                "hidden_api_fields": {
                    "modelId": "05ce0082-2d80-4a2d-8653-4d1c85e2418e",
                    "num_images": 1
                },
                "field_overrides": {
                    "contrast": {
                        "default": 3.5,
                        "required": true
                    },
                    "style_preset": {
                        "options": [
                            "9fdc5e8c-4d13-49b4-9ce6-5a74cbb19177",
                            "a5632c7c-ddbb-4e2f-ba34-8456ab3ac436",
                            "cc53f935-884c-40a0-b7eb-1f5c42821fb5",
                            "6fedbf1f-4a17-45ec-84fb-92fe524a29ef",
                            "111dc692-d470-4eec-b791-3475abac4c46",
                            "594c4a08-a522-4e0e-b7ff-e4dac4b6b622",
                            "85da2dcc-c373-464c-9a7a-5624359be859",
                            "d574325d-1278-4fe2-974b-768525f253c3",
                            "97c20e5c-1af6-4d42-b227-54d03d8f0727",
                            "335e6010-a75c-45d9-afc5-032c65e9180e",
                            "30c1d34f-e3a9-479a-b56f-c018bbc9c02a",
                            "cadc8cd6-7838-4c99-b645-df76be8ba8d8",
                            "a2f7ea66-959b-4bbe-b508-6133238b76b6",
                            "621e1c9a-6319-4bee-a12d-ae40659162fa",
                            "0d914779-c822-430a-b976-30075033f1c4",
                            "556c1ee5-ec38-42e8-955a-1e82dad0ffa1",
                            "8e2bc543-6ee2-45f9-bcd9-594b6ce84dcd",
                            "6105baa2-851b-446e-9db5-08a671a8c42f",
                            "5bdc3f2a-1be6-4d1c-8e77-992a30824a2c",
                            "62736842-6e4b-4028-b79a-4f1a1606e893",
                            "dee282d3-891f-4f73-ba02-7f8131e5541b"
                        ],
                        "option_labels": {
                            "0d914779-c822-430a-b976-30075033f1c4": "Neutral",
                            "111dc692-d470-4eec-b791-3475abac4c46": "Dynamic",
                            "30c1d34f-e3a9-479a-b56f-c018bbc9c02a": "Macro",
                            "335e6010-a75c-45d9-afc5-032c65e9180e": "Long Exposure",
                            "556c1ee5-ec38-42e8-955a-1e82dad0ffa1": "None",
                            "594c4a08-a522-4e0e-b7ff-e4dac4b6b622": "Fashion",
                            "5bdc3f2a-1be6-4d1c-8e77-992a30824a2c": "Stock Photo",
                            "6105baa2-851b-446e-9db5-08a671a8c42f": "Retro",
                            "621e1c9a-6319-4bee-a12d-ae40659162fa": "Moody",
                            "62736842-6e4b-4028-b79a-4f1a1606e893": "Unprocessed",
                            "6fedbf1f-4a17-45ec-84fb-92fe524a29ef": "Creative",
                            "85da2dcc-c373-464c-9a7a-5624359be859": "Film",
                            "8e2bc543-6ee2-45f9-bcd9-594b6ce84dcd": "Portrait",
                            "97c20e5c-1af6-4d42-b227-54d03d8f0727": "HDR",
                            "9fdc5e8c-4d13-49b4-9ce6-5a74cbb19177": "Bokeh",
                            "a2f7ea66-959b-4bbe-b508-6133238b76b6": "Monochrome",
                            "a5632c7c-ddbb-4e2f-ba34-8456ab3ac436": "Cinematic",
                            "cadc8cd6-7838-4c99-b645-df76be8ba8d8": "Minimalist",
                            "cc53f935-884c-40a0-b7eb-1f5c42821fb5": "Cinematic Close-Up",
                            "d574325d-1278-4fe2-974b-768525f253c3": "Food",
                            "dee282d3-891f-4f73-ba02-7f8131e5541b": "Vibrant"
                        }
                    }
                },
                "deprecated": false
            },
            "upscale": {
                "_inherits": "phoenix.modes.upscale",
                "deprecated": false
            }
        }
    },
    "lumaphoton": {
        "name": "Luma Photon 1",
        "shortname": "Luma Photon 1",
        "vendor": "Luma Labs",
        "family": "Photon",
        "deprecated": false,
        "prompt_guide_url": "https://docs.lumalabs.ai/docs/image-generation",
        "docs_url": "https://docs.lumalabs.ai/docs/api/image-generation",
        "platforms": {
            "luma": {
                "name": "Luma Labs",
                "type": "direct",
                "sdk": null,
                "dispatch": "http_poll",
                "secret_id": "lumaphoton1",
                "auth_header": "Authorization",
                "auth_prefix": "Bearer",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60
            },
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/luma-photon",
                    "edit": "fal-ai/luma-photon/modify"
                },
                "api_field_map": {
                    "character_refs": null,
                    "image_refs": null,
                    "modify_image_ref": "image_url",
                    "style_refs": null
                },
                "api_field_notes": {
                    "modify_image_ref": "Registry sends {url, weight} object. fal splits this into two fields: 'image_url' (the URL) and 'strength' (the weight). Dispatcher must decompose the object."
                },
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            },
            "replicate": {
                "name": "Replicate",
                "type": "byok",
                "dispatch": "replicate_run",
                "secret_id": "replicate",
                "env_var": "REPLICATE_API_TOKEN",
                "model_id": "luma/photon",
                "api_field_map": {
                    "character_refs": null,
                    "image_refs": null,
                    "style_refs": null
                },
                "hidden_api_fields": {},
                "response": {
                    "response_format": "url"
                }
            },
            "wavespeed": {
                "name": "WaveSpeedAI",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "wavespeed",
                "env_var": "WAVESPEED_API_KEY",
                "poll_url_template": "https://api.wavespeed.ai/api/v3/predictions/{request_id}/result",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60,
                "endpoints": {
                    "texttoimage": "https://api.wavespeed.ai/api/v3/luma/photon",
                    "edit": "https://api.wavespeed.ai/api/v3/luma/photon-modify"
                },
                "api_field_map": {
                    "aspect_ratio": null,
                    "character_refs": null,
                    "image_refs": null,
                    "modify_image_ref": "image",
                    "style_refs": null
                },
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "response_format": "url"
                },
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text with optional style/image/character references",
                "endpoint": "https://api.lumalabs.ai/dream-machine/v1/generations/image",
                "poll_url_template": "https://api.lumalabs.ai/dream-machine/v1/generations/{id}",
                "http_method": "POST",
                "content_type": "application/json",
                "success_status_code": 201,
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 5000,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "image_refs": {
                        "type": "ref_list",
                        "required": false,
                        "api_field": "image_refs",
                        "api_transform": "process_ref_list",
                        "label": "Image References",
                        "title": "",
                        "section": "Inputs"
                    },
                    "style_refs": {
                        "type": "ref_list",
                        "required": false,
                        "api_field": "style_refs",
                        "api_transform": "process_ref_list",
                        "label": "Style References",
                        "title": "",
                        "section": "Inputs"
                    },
                    "character_refs": {
                        "type": "ref_list",
                        "required": false,
                        "api_field": "character_refs",
                        "api_transform": "process_character_ref",
                        "label": "Character References",
                        "title": "",
                        "section": "Inputs"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "1:1",
                            "3:4",
                            "4:3",
                            "9:16",
                            "9:21",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "1:1": "",
                            "3:4": "",
                            "4:3": "",
                            "9:16": "",
                            "9:21": "",
                            "16:9": "",
                            "21:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": "Ratio of width to height, followed by pixel dimensions",
                        "section": "Output"
                    }
                },
                "hidden_api_fields": {
                    "model": "photon-1"
                },
                "response": {
                    "request_id_path": "id",
                    "status_path": "state",
                    "image_url_path": "assets.image",
                    "response_format": "url"
                },
                "deprecated": false,
                "ui_extras": [
                    "pose_editor"
                ]
            },
            "edit": {
                "io": "image + text → image",
                "description": "Edit an image with a text prompt using modify_image_ref",
                "endpoint": "https://api.lumalabs.ai/dream-machine/v1/generations/image",
                "poll_url_template": "https://api.lumalabs.ai/dream-machine/v1/generations/{id}",
                "http_method": "POST",
                "content_type": "application/json",
                "success_status_code": 201,
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 5000,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "modify_image_ref": {
                        "type": "image_with_weight",
                        "required": false,
                        "principal_image": true,
                        "upload_as": "s3_url",
                        "api_field": "modify_image_ref",
                        "label": "Image to Modify",
                        "note": "Object with {url, weight}. URL uploaded to S3 for public access.",
                        "title": "",
                        "section": "Inputs"
                    }
                },
                "hidden_api_fields": {
                    "model": "photon-1"
                },
                "response": {
                    "request_id_path": "id",
                    "status_path": "state",
                    "image_url_path": "assets.image",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "variations": {
                "_alias_of": "edit",
                "io": "image + text → image",
                "description": "Python handles variations identically to edit. No separate JS UI entry.",
                "deprecated": false
            }
        }
    },
    "magnific": {
        "name": "Magnific",
        "shortname": "Magnific",
        "vendor": "Freepik",
        "family": "Magnific",
        "deprecated": false,
        "docs_url": "https://docs.freepik.com/api-reference",
        "platforms": {
            "freepik": {
                "name": "Freepik",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "freepik",
                "env_var": "FREEPIK_API_KEY",
                "auth_header": "x-freepik-api-key",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 120,
                "poll_url_pattern": "append_task_id",
                "endpoints": {
                    "relight": "https://api.freepik.com/v1/ai/image-relight",
                    "styletransfer": "https://api.freepik.com/v1/ai/image-style-transfer",
                    "upscale": "https://api.freepik.com/v1/ai/image-upscaler-precision-v2"
                },
                "api_field_map": {},
                "hidden_api_fields": {}
            }
        },
        "constraints": {},
        "modes": {
            "upscale": {
                "io": "image → image",
                "description": "Upscale an image using either Precision or Creative mode",
                "prompt_guide_url": "https://www.freepik.com/blog/how-to-use-magnific-ai-image-upscaler-a-comprehensive-guide/",
                "sub_types": {
                    "precision": {
                        "endpoint": "https://api.freepik.com/v1/ai/image-upscaler-precision-v2",
                        "description": "Precision upscale  — detail-preserving with sharpen/grain controls",
                        "fields": {
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "upload_as": "raw_base64",
                                "api_field": "image",
                                "label": "Source",
                                "title": "",
                                "section": "Inputs"
                            },
                            "sharpen": {
                                "type": "range",
                                "required": false,
                                "default": 7,
                                "api_field": "sharpen",
                                "label": "Sharpen",
                                "subtype": "int",
                                "min": 0,
                                "max": 100,
                                "step": 1,
                                "title": "Image sharpness intensity control. Higher values increase edge definition and clarity in the upscaled image",
                                "section": "Settings"
                            },
                            "smart_grain": {
                                "type": "range",
                                "required": false,
                                "default": 7,
                                "api_field": "smart_grain",
                                "label": "Smart Grain",
                                "subtype": "int",
                                "min": 0,
                                "max": 100,
                                "step": 1,
                                "title": "Intelligent grain/texture enhancement for the upscaled image. Helps preserve natural film grain and texture detail.\n\nHigher values add more fine-grained texture to prevent the upscaled image from looking too smooth or artificial",
                                "section": "Settings"
                            },
                            "ultra_detail": {
                                "type": "range",
                                "required": false,
                                "default": 30,
                                "api_field": "ultra_detail",
                                "label": "Ultra Detail",
                                "subtype": "int",
                                "min": 0,
                                "max": 100,
                                "step": 1,
                                "title": "Ultra detail enhancement level for the image upscaling process. This parameter controls how much fine detail the AI adds to the upscaled image, such as textures, patterns, and micro-details. Higher values create more intricate details",
                                "section": "Settings"
                            },
                            "flavor": {
                                "type": "enum",
                                "required": false,
                                "api_field": "flavor",
                                "label": "Upscale Flavor",
                                "options": [
                                    "photo",
                                    "photo_denoiser",
                                    "sublime"
                                ],
                                "option_labels": {
                                    "photo": "Photo",
                                    "photo_denoiser": "Photo Denoiser",
                                    "sublime": "Sublime"
                                },
                                "title": "Image processing flavor that determines the upscaling style and optimization for different image types:\n\nSUBLIME: Optimized for artistic and illustrated images with smooth gradients and vibrant colors\n\nPHOTO: Optimized for photographic images, preserving natural colors and realistic details\n\nPHOTO DENOISER: Specialized for photos with noise reduction, ideal for low-light or grainy photographs",
                                "section": "Settings"
                            },
                            "scale_factor": {
                                "type": "range",
                                "required": true,
                                "default": 2,
                                "api_field": "scale_factor",
                                "label": "Scale Factor",
                                "subtype": "int",
                                "min": 2,
                                "max": 16,
                                "step": 1,
                                "title": "Image scaling factor for upscaling. Determines how much larger the output image will be compared to the input. For example, a scale ratio of 2 will double the dimensions (2x width and 2x height, resulting in 4x total pixels)",
                                "section": "Settings"
                            },
                            "filter_nsfw": {
                                "type": "bool",
                                "required": false,
                                "default": false,
                                "api_field": "filter_nsfw",
                                "label": "Filter NSFW",
                                "title": "Enable NSFW (Not Safe For Work) content filtering on the output image",
                                "section": "Safety",
                                "warning_values": [
                                    false
                                ]
                            }
                        },
                        "label": "Precision v2"
                    },
                    "creative": {
                        "endpoint": "https://api.freepik.com/v1/ai/image-upscaler",
                        "description": "Creative upscale  — AI-enhanced with creativity/HDR controls",
                        "fields": {
                            "prompt": {
                                "type": "text",
                                "required": false,
                                "api_field": "prompt",
                                "label": "Prompt",
                                "title": "Prompt to guide the upscale process. Reusing the same prompt for AI-generated images will improve the results",
                                "section": "Prompts"
                            },
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "upload_as": "raw_base64",
                                "api_field": "image",
                                "label": "Source",
                                "title": "",
                                "section": "Inputs"
                            },
                            "scale_factor": {
                                "type": "enum",
                                "required": true,
                                "default": "2x",
                                "api_field": "scale_factor",
                                "label": "Scale Factor",
                                "options": [
                                    "16x",
                                    "2x",
                                    "4x",
                                    "8x"
                                ],
                                "option_labels": {
                                    "16x": "16x",
                                    "2x": "2x",
                                    "4x": "4x",
                                    "8x": "8x"
                                },
                                "note": "Values like '2x', '4x'. Python strips trailing 'x' for timeout calc.",
                                "title": "2X or 4X works best for minor upgrades where you need a sharper, high-quality image without excessive size increases. This is useful for UI assets, web graphics, and product visuals.\n\n8X or 16X is ideal for large-scale projects like posters, detailed artwork, film production, and game textures where every pixel matters. However, the higher the scale, the more important it is to adjust Resemblance, HDR, and Fractality to avoid artificial-looking results",
                                "section": "Settings"
                            },
                            "optimized_for": {
                                "type": "enum",
                                "required": false,
                                "default": "standard",
                                "api_field": "optimized_for",
                                "label": "Optimized For",
                                "options": [
                                    "3d_renders",
                                    "art_n_illustration",
                                    "films_n_photography",
                                    "hard_portraits",
                                    "nature_n_landscapes",
                                    "science_fiction_n_horror",
                                    "soft_portraits",
                                    "standard",
                                    "videogame_assets"
                                ],
                                "option_labels": {
                                    "3d_renders": "3D Renders",
                                    "art_n_illustration": "Art & Illustration",
                                    "films_n_photography": "Films & Photography",
                                    "hard_portraits": "Hard Portraits",
                                    "nature_n_landscapes": "Nature & Landscapes",
                                    "science_fiction_n_horror": "Science Fiction & Horror",
                                    "soft_portraits": "Soft Portraits",
                                    "standard": "Standard",
                                    "videogame_assets": "Videogame Assets"
                                },
                                "title": "STANDARD: General purpose\n\nSOFT/HARD PORTRAITS: Maintains natural skin textures and facial features\n\nART & ILLUSTRATION: Improves brushstrokes, digital textures, and linework for a detailed finish\n\nVIDEOGAME ASSETS: Strengthens textures and materials, ensuring realistic surface details for in-game models\n\nNATURE & LANDSCAPES: Preserves fine textures like leaves, rocks, and water while keeping depth and realism\n\nFILMS & PHOTOGRAPHY: Optimizes contrast and sharpness for a cinematic, high-resolution look\n\n3D RENDERS: Brings out material details and depth while preventing over- sharpening of images\n\nSCIENCE FICTION & HORROR: Adds dramatic lighting and deep contrasts, perfect for dark, atmospheric visuals",
                                "section": "Settings"
                            },
                            "creativity": {
                                "type": "range",
                                "required": false,
                                "default": 0,
                                "api_field": "creativity",
                                "label": "Creativity",
                                "subtype": "int",
                                "min": -10,
                                "max": 10,
                                "step": 1,
                                "title": "Increase or decrease AI creativity",
                                "section": "Settings"
                            },
                            "hdr": {
                                "type": "range",
                                "required": false,
                                "default": 0,
                                "api_field": "hdr",
                                "label": "HDR",
                                "subtype": "int",
                                "min": -10,
                                "max": 10,
                                "step": 1,
                                "title": "Increase or decrease the level of definition and detail",
                                "section": "Settings"
                            },
                            "resemblance": {
                                "type": "range",
                                "required": false,
                                "default": 0,
                                "api_field": "resemblance",
                                "label": "Resemblance",
                                "subtype": "int",
                                "min": -10,
                                "max": 10,
                                "step": 1,
                                "title": "Adjust the level of resemblance to the original image",
                                "section": "Settings"
                            },
                            "fractality": {
                                "type": "range",
                                "required": false,
                                "default": 0,
                                "api_field": "fractality",
                                "label": "Fractality",
                                "subtype": "int",
                                "min": -10,
                                "max": 10,
                                "step": 1,
                                "title": "Controls the amount of detail added per square pixel, influencing the texture sharpness and complexity",
                                "section": "Settings"
                            },
                            "engine": {
                                "type": "enum",
                                "required": false,
                                "default": "automatic",
                                "api_field": "engine",
                                "label": "Upscale Engine",
                                "options": [
                                    "automatic",
                                    "magnific_illusio",
                                    "magnific_sharpy",
                                    "magnific_sparkle"
                                ],
                                "option_labels": {
                                    "automatic": "Auto",
                                    "magnific_illusio": "Illusio",
                                    "magnific_sharpy": "Sharpy",
                                    "magnific_sparkle": "Sparkle"
                                },
                                "title": "AUTOMATIC: A well-balanced choice for general use when you’re unsure which engine to pick\n\nILLUSIO: Best for digital art and illustration. It’s excellent with brushstrokes, colors, and textures\n\nSHARPY: Designed for photography. This engine maximizes sharpness and detail retention without making the image look artificial\n\nSPARKLE: The most balanced option, offering a mix of sharpness, detail refinement, and texture preservation",
                                "section": "Settings"
                            },
                            "filter_nsfw": {
                                "type": "bool",
                                "required": false,
                                "default": false,
                                "api_field": "filter_nsfw",
                                "label": "Filter NSFW",
                                "title": "Enable NSFW (Not Safe For Work) content filtering on the output image",
                                "section": "Safety",
                                "warning_values": [
                                    false
                                ]
                            }
                        },
                        "label": "Creative"
                    }
                },
                "sub_type_field": "magnific_upscale_type",
                "poll_timeout_dynamic": true,
                "response": {
                    "request_id_path": "data.task_id",
                    "status_path": "data.status",
                    "images_path": "data.generated",
                    "response_format": "url"
                },
                "deprecated": false,
                "sub_type_label": "Subtype",
                "sub_type_section": "Mode Subtype"
            },
            "relight": {
                "io": "image + text → image",
                "description": "Relight an image with lighting controls and optional reference",
                "endpoint": "https://api.freepik.com/v1/ai/image-relight",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": false,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "You can guide the generation process and influence the light transfer with a descriptive prompt. For example, if the reference image is a brightly lit scene, adding something like 'A sunlit forest clearing at golden hour' will be helpful.\n\nYou can also use your imagination to alter lighting conditions in images: transforming a daytime scene into a moonlit night, enhancing the warmth of a sunset, or even dramatic changes like casting shadows of towering structures across a cityscape.\n\nIMPORTANT: You can emphasize specific aspects of the light in your prompt by using a number in parentheses, ranging from 1 to 1.4, like '(dark scene:1.3)'",
                        "section": "Prompts"
                    },
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "raw_base64",
                        "api_field": "image",
                        "label": "Source",
                        "title": "",
                        "section": "Inputs"
                    },
                    "light_transfer_ref": {
                        "type": "image",
                        "required": false,
                        "upload_as": "raw_base64",
                        "api_field": "transfer_light_from_reference_image",
                        "label": "Light Transfer Reference",
                        "title": "The model will try to mimic the light, colors and shadows of the reference\n\nNot compatible with using a lightmap",
                        "section": "Inputs"
                    },
                    "lightmap": {
                        "type": "image",
                        "required": false,
                        "upload_as": "raw_base64",
                        "api_field": "transfer_light_from_lightmap",
                        "label": "Lightmap",
                        "title": "A lightmap is an image where black indicates the absence of light, and lighter colors like pure white indicate the intensity, colors, and shapes of the light\n\nNot compatible with using a light reference",
                        "section": "Inputs"
                    },
                    "light_transfer_strength": {
                        "type": "range",
                        "required": false,
                        "default": 100,
                        "api_field": "light_transfer_strength",
                        "label": "Light Transfer Strength",
                        "subtype": "int",
                        "min": 1,
                        "max": 100,
                        "step": 1,
                        "title": "Specify the intensity that the prompt, reference image, or lightmap will have. A value of 0% will keep the output closest to the original, while 100% represents the maximum possible light transfer\n\nIf you enable 'Interpolate from Original', lower values here will make the result even more similar to your original image",
                        "section": "Settings"
                    },
                    "interpolate_from_original": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "api_field": "interpolate_from_original",
                        "label": "Interpolate from Original",
                        "title": "Will make your final image interpolate from the original using the 'Light Transfer Strength' slider, at the cost of sometimes restricting the generation's freedom\n\nIf disabled, the generation will be freer and will generally produce better results; however, for example, if you want to generate all the frames of a video where a room transitions from having the lights off and very dim lighting to gradually becoming fully illuminated as a new day begins, activating this option might be useful (together with gradually increasing the 'Light Transfer Strength' value)",
                        "section": "Settings"
                    },
                    "change_background": {
                        "type": "bool",
                        "required": false,
                        "default": true,
                        "api_field": "change_background",
                        "label": "Change Background",
                        "title": "When enabled, it will change the background based on the prompt and/or reference image. This is very useful for product placement and portraits; however, disable it if your scene is a landscape or interior",
                        "section": "Settings"
                    },
                    "style": {
                        "type": "enum",
                        "required": false,
                        "default": "standard",
                        "api_field": "style",
                        "label": "Relight Style",
                        "title": "CLEAN and SMOOTH are both good choices when using a reference image",
                        "options": [
                            "brighter",
                            "clean",
                            "contrasted_n_hdr",
                            "darker_but_realistic",
                            "just_composition",
                            "smooth",
                            "standard"
                        ],
                        "option_labels": {
                            "brighter": "Brighter",
                            "clean": "Clean",
                            "contrasted_n_hdr": "Contrasted & HDR",
                            "darker_but_realistic": "Darker But Realistic",
                            "just_composition": "Just Composition",
                            "smooth": "Smooth",
                            "standard": "Standard"
                        },
                        "section": "Settings"
                    },
                    "preserve_details": {
                        "type": "bool",
                        "required": false,
                        "default": true,
                        "api_field": "preserve_details",
                        "label": "Preserve Details",
                        "title": "Attempt to maintain the texture and small details of the original image. Especially good for product photography, text, etc. Disable it if you prefer a smoother result",
                        "section": "Settings"
                    },
                    "advanced_whites": {
                        "type": "range",
                        "required": false,
                        "default": 50,
                        "api_field": "advanced_settings.whites",
                        "label": "Whites",
                        "subtype": "int",
                        "min": 0,
                        "max": 100,
                        "step": 1,
                        "title": "",
                        "section": "Advanced Settings"
                    },
                    "advanced_blacks": {
                        "type": "range",
                        "required": false,
                        "default": 50,
                        "api_field": "advanced_settings.blacks",
                        "label": "Blacks",
                        "subtype": "int",
                        "min": 0,
                        "max": 100,
                        "step": 1,
                        "title": "",
                        "section": "Advanced Settings"
                    },
                    "advanced_brightness": {
                        "type": "range",
                        "required": false,
                        "default": 50,
                        "api_field": "advanced_settings.brightness",
                        "label": "Brightness",
                        "subtype": "int",
                        "min": 0,
                        "max": 100,
                        "step": 1,
                        "title": "",
                        "section": "Advanced Settings"
                    },
                    "advanced_contrast": {
                        "type": "range",
                        "required": false,
                        "default": 50,
                        "api_field": "advanced_settings.contrast",
                        "label": "Contrast",
                        "subtype": "int",
                        "min": 0,
                        "max": 100,
                        "step": 1,
                        "title": "",
                        "section": "Advanced Settings"
                    },
                    "advanced_saturation": {
                        "type": "range",
                        "required": false,
                        "default": 50,
                        "api_field": "advanced_settings.saturation",
                        "label": "Saturation",
                        "subtype": "int",
                        "min": 0,
                        "max": 100,
                        "step": 1,
                        "title": "",
                        "section": "Advanced Settings"
                    },
                    "engine": {
                        "type": "enum",
                        "required": false,
                        "default": "automatic",
                        "api_field": "advanced_settings.engine",
                        "label": "Engine",
                        "title": "AUTOMATIC: Let the system determine the style\n\nBALANCED: Well-rounded, general-purpose option\n\nCOOL: Brighter with cooler tones\n\nREAL: Aims to enhance photographic quality. Experimental\n\nILLUSIO: Optimized for illustrations and drawings\n\nFAIRY: Suited for fantasy-themed images\n\nCOLORFUL ANIME: Ideal for anime, cartoons, and vibrant colors\n\nHARD TRANSFORM: Significantly alters the original image\n\nSOFTY: Slightly softer effect, suitable for graphic designs",
                        "options": [
                            "automatic",
                            "balanced",
                            "colorful_anime",
                            "cool",
                            "fairy",
                            "hard_transform",
                            "illusio",
                            "real",
                            "softy"
                        ],
                        "option_labels": {
                            "automatic": "Auto",
                            "balanced": "Balanced",
                            "colorful_anime": "Colorful Anime",
                            "cool": "Cool",
                            "fairy": "Fairy",
                            "hard_transform": "Hard Transform",
                            "illusio": "Illusio",
                            "real": "Real",
                            "softy": "Softy"
                        },
                        "section": "Advanced Settings"
                    },
                    "transfer_light_a": {
                        "type": "enum",
                        "required": false,
                        "default": "automatic",
                        "api_field": "advanced_settings.transfer_light_a",
                        "label": "Light Transfer A",
                        "title": "Adjusts the intensity of light transfer. Advanced feature requiring practice to use effectively",
                        "options": [
                            "automatic",
                            "low",
                            "medium",
                            "normal",
                            "high",
                            "high_on_faces"
                        ],
                        "option_labels": {
                            "automatic": "Auto",
                            "low": "Low",
                            "medium": "Medium",
                            "normal": "Normal",
                            "high": "High",
                            "high_on_faces": "High on Faces"
                        },
                        "section": "Advanced Settings"
                    },
                    "transfer_light_b": {
                        "type": "enum",
                        "required": false,
                        "default": "automatic",
                        "api_field": "advanced_settings.transfer_light_b",
                        "label": "Light Transfer B",
                        "title": "Also modifies light transfer intensity. Can be combined with the previous control for varied effects. Complex to master but offers more control",
                        "options": [
                            "automatic",
                            "composition",
                            "reverse_both",
                            "smooth_both",
                            "smooth_in",
                            "smooth_out",
                            "soft_in",
                            "soft_mid",
                            "soft_out",
                            "straight",
                            "strong_mid",
                            "strong_shift",
                            "style_shift"
                        ],
                        "option_labels": {
                            "automatic": "Auto",
                            "composition": "Composition",
                            "reverse_both": "Reverse Both",
                            "smooth_both": "Smooth Both",
                            "smooth_in": "Smooth In",
                            "smooth_out": "Smooth Out",
                            "soft_in": "Soft In",
                            "soft_mid": "Soft Mid",
                            "soft_out": "Soft Out",
                            "straight": "Straight",
                            "strong_mid": "Strong Mid",
                            "strong_shift": "Strong Shift",
                            "style_shift": "Style Shift"
                        },
                        "section": "Advanced Settings"
                    },
                    "fixed_generation": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "api_field": "advanced_settings.fixed_generation",
                        "label": "Fixed Generation",
                        "title": "When this option is enabled, using the same settings will consistently produce the same image.\n\nFixed generations are ideal for fine-tuning, as it allows for incremental changes to parameters (such as the prompt) to see subtle variations in the output.\n\nWhen disabled, expect each generation to introduce a degree of randomness, leading to more diverse outcomes",
                        "section": "Output"
                    }
                },
                "response": {
                    "request_id_path": "data.task_id",
                    "status_path": "data.status",
                    "images_path": "data.generated",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "styletransfer": {
                "io": "image + image + text → image",
                "description": "Transfer style from a reference image to a source image",
                "endpoint": "https://api.freepik.com/v1/ai/image-style-transfer",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": false,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "raw_base64",
                        "api_field": "image",
                        "label": "Source",
                        "title": "",
                        "section": "Inputs"
                    },
                    "style_reference": {
                        "type": "image",
                        "required": true,
                        "upload_as": "raw_base64",
                        "api_field": "reference_image",
                        "label": "Style Reference Image",
                        "title": "Supports these formats as inputs: JPEG, PNG, WEBP",
                        "section": "Inputs"
                    },
                    "style_strength": {
                        "type": "range",
                        "required": false,
                        "default": 100,
                        "min": 0,
                        "max": 100,
                        "api_field": "style_strength",
                        "label": "Style Strength",
                        "subtype": "int",
                        "step": 1,
                        "title": "Determines the degree of overall style intensity as taken from the style reference. Higher values means higher reference style influence",
                        "section": "Settings"
                    },
                    "structure_strength": {
                        "type": "range",
                        "required": false,
                        "default": 50,
                        "min": 0,
                        "max": 100,
                        "api_field": "structure_strength",
                        "label": "Structure Strength",
                        "subtype": "int",
                        "step": 1,
                        "title": "How much to maintain the structure of the original image",
                        "section": "Settings"
                    },
                    "flavor": {
                        "type": "enum",
                        "required": false,
                        "default": "faithful",
                        "api_field": "flavor",
                        "label": "Flavor",
                        "title": "Flavor of the transferring style",
                        "options": [
                            "clear",
                            "detaily",
                            "donotstyle",
                            "donotstyle_sharp",
                            "faithful",
                            "gen_z",
                            "psychedelia"
                        ],
                        "option_labels": {
                            "clear": "Clear",
                            "detaily": "Detaily",
                            "donotstyle": "Do Not Style",
                            "donotstyle_sharp": "Do Not Style Sharp",
                            "faithful": "Faithful",
                            "gen_z": "Gen Z",
                            "psychedelia": "Psychedelia"
                        },
                        "section": "Settings"
                    },
                    "engine": {
                        "type": "enum",
                        "required": false,
                        "default": "balanced",
                        "api_field": "engine",
                        "label": "Engine",
                        "title": "Engine used to transfer the style",
                        "options": [
                            "3d_cartoon",
                            "balanced",
                            "caricature",
                            "colorful_anime",
                            "definio",
                            "illusio",
                            "real",
                            "softy",
                            "super_real"
                        ],
                        "option_labels": {
                            "3d_cartoon": "3D Cartoon",
                            "balanced": "Balanced",
                            "caricature": "Caricature",
                            "colorful_anime": "Colorful Anime",
                            "definio": "Definio",
                            "illusio": "Illusio",
                            "real": "Real",
                            "softy": "Softy",
                            "super_real": "Super Real"
                        },
                        "section": "Settings"
                    },
                    "is_portrait": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "api_field": "is_portrait",
                        "label": "Is Portrait",
                        "title": "Indicates whether the image should be processed as a portrait. When checked, portrait-specific enhancements will be applied",
                        "section": "Settings"
                    },
                    "portrait_style": {
                        "type": "enum",
                        "required": false,
                        "default": "standard",
                        "api_field": "portrait_style",
                        "label": "Portrait Style",
                        "visible_when": {
                            "is_portrait": true
                        },
                        "title": "Portrait rendering style\n\nStandard produces neutral, realistic results\n\nPop adds vibrant, dynamic energy\n\nSuper Pop produces the most vibrant and dynamic effects",
                        "options": [
                            "pop",
                            "standard",
                            "super_pop"
                        ],
                        "option_labels": {
                            "pop": "Pop",
                            "standard": "Standard",
                            "super_pop": "Super Pop"
                        },
                        "section": "Settings"
                    },
                    "portrait_beautifier": {
                        "type": "enum",
                        "required": false,
                        "default": "beautify_face",
                        "api_field": "portrait_beautifier",
                        "label": "Portrait Beautifier",
                        "visible_when": {
                            "is_portrait": true
                        },
                        "title": "Optional setting to enable facial beautification on portrait images. Control the intensity or type of beautification applied",
                        "options": [
                            "beautify_face",
                            "beautify_face_max"
                        ],
                        "option_labels": {
                            "beautify_face": "Beautify Face",
                            "beautify_face_max": "Beautify Face Max"
                        },
                        "section": "Settings"
                    },
                    "fixed_gen": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "api_field": "fixed_generation",
                        "label": "Fixed Generation",
                        "note": "JS shows it but Python does NOT send it  — see corrections log",
                        "title": "When this option is enabled, using the same settings will consistently produce the same image\n\nFixed generations are ideal for fine-tuning, as it allows for incremental changes to parameters (such as the prompt) to see subtle variations in the output\n\nWhen disabled, expect each generation to introduce a degree of randomness, leading to more diverse outcomes",
                        "section": "Output"
                    }
                },
                "response": {
                    "request_id_path": "task_id",
                    "status_path": "task_status",
                    "images_path": "generated",
                    "response_format": "url"
                },
                "deprecated": true
            }
        }
    },
    "maiimage2": {
        "name": "MAI-Image-2",
        "shortname": "MAI-Image-2",
        "vendor": "Microsoft",
        "family": "MAI",
        "deprecated": false,
        "docs_url": "https://ai.azure.com/explore/models/MAI-Image-2/version/2026-02-20/registry/azure-mai",
        "platforms": {
            "azure": {
                "name": "Azure AI Foundry",
                "type": "byok",
                "dispatch": "http_json",
                "secret_id": "azure_mai",
                "env_var": "AZURE_MAI_API_KEY",
                "auth_header": "authorization",
                "auth_prefix": "api-key",
                "endpoints": {
                    "texttoimage": "https://jhhar-mnoor1ve-eastus.openai.azure.com/openai/deployments/dreamfeed-tyto/images/generations?api-version=2025-04-01-preview"
                },
                "api_field_map": {},
                "hidden_api_fields": {
                    "model": "MAI-Image-2"
                },
                "response": {
                    "images_path": "data",
                    "image_url_key": "b64_json",
                    "response_format": "base64"
                }
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text \u2192 image",
                "description": "Generate images from text using Microsoft MAI-Image-2",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "size": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "1024x1024",
                        "options": [
                            "1024x1024",
                            "1024x1536",
                            "1536x1024"
                        ],
                        "option_labels": {
                            "1024x1024": "1024 \u00d7 1024",
                            "1024x1536": "1024 \u00d7 1536",
                            "1536x1024": "1536 \u00d7 1024"
                        },
                        "api_field": "size",
                        "label": "Size",
                        "title": ""
                    },
                    "quality": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "high",
                        "options": [
                            "auto",
                            "high",
                            "low",
                            "medium"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "high": "High",
                            "low": "Low",
                            "medium": "Medium"
                        },
                        "api_field": "quality",
                        "label": "Quality",
                        "title": ""
                    },
                    "num_outputs": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 10,
                        "step": 1,
                        "api_field": "n",
                        "label": "Count",
                        "subtype": "int",
                        "title": "Number of output images to generate"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Output file format"
                    },
                    "output_compression": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 100,
                        "min": 0,
                        "max": 100,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "output_compression",
                        "label": "Compression",
                        "title": "Compression quality for JPEG output. 100 is lossless",
                        "visible_when": {
                            "output_format": {
                                "not_equals": "png"
                            }
                        }
                    }
                },
                "response": {
                    "images_path": "data",
                    "image_url_key": "b64_json",
                    "response_format": "base64"
                },
                "deprecated": false
            }
        }
    },
    "minimax": {
        "name": "MiniMax Image-01",
        "shortname": "MiniMax",
        "vendor": "MiniMax",
        "family": "MiniMax",
        "deprecated": false,
        "docs_url": "https://platform.minimax.io/docs/api-reference/image-generation-t2i",
        "platforms": {
            "minimax": {
                "name": "MiniMax",
                "type": "direct",
                "sdk": null,
                "dispatch": "http_json",
                "secret_id": "minimax",
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            },
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/minimax/image-01"
                },
                "api_field_map": {
                    "height": null,
                    "prompt_upsampling": "prompt_optimizer",
                    "seed": null,
                    "width": null
                },
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            },
            "replicate": {
                "name": "Replicate",
                "type": "byok",
                "dispatch": "replicate_run",
                "secret_id": "replicate",
                "env_var": "REPLICATE_API_TOKEN",
                "model_id": "minimax/image-01",
                "api_field_map": {
                    "height": null,
                    "seed": null,
                    "width": null
                },
                "hidden_api_fields": {},
                "response": {
                    "response_format": "url"
                }
            },
            "wavespeed": {
                "name": "WaveSpeedAI",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "wavespeed",
                "env_var": "WAVESPEED_API_KEY",
                "poll_url_template": "https://api.wavespeed.ai/api/v3/predictions/{request_id}/result",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60,
                "endpoints": {
                    "texttoimage": "https://api.wavespeed.ai/api/v3/minimax/image-01/text-to-image"
                },
                "api_field_map": {
                    "aspect_ratio": null,
                    "height": null,
                    "width": null
                },
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "response_format": "url"
                },
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text",
                "endpoint": "https://api.minimax.io/v1/image_generation",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 1500,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "prompt_upsampling": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "api_field": "prompt_optimizer",
                        "label": "Enhance Prompt",
                        "note": "Python wraps in bool(): bool(params['prompt_upsampling'])",
                        "title": "Automatically modifies the prompt for more creative generation",
                        "section": "Prompts"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "1:1": "",
                            "2:3": "",
                            "3:2": "",
                            "3:4": "",
                            "4:3": "",
                            "9:16": "",
                            "16:9": "",
                            "21:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "note": "Mutually exclusive with width/height",
                        "title": "Ratio of width to height, followed by pixel dimensions",
                        "section": "Output"
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 512,
                        "max": 2048,
                        "step": 8,
                        "api_field": "width",
                        "label": "Width",
                        "note": "Only sent when aspect_ratio is not selected",
                        "title": "",
                        "section": "Output"
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 512,
                        "max": 2048,
                        "step": 8,
                        "api_field": "height",
                        "label": "Height",
                        "note": "Only sent when aspect_ratio is not selected",
                        "title": "",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "max": 9007199254740991,
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image",
                        "section": "Output"
                    }
                },
                "hidden_api_fields": {
                    "model": "image-01",
                    "n": 1,
                    "response_format": "url"
                },
                "validation_rules": [
                    {
                        "rule": "mutually_exclusive",
                        "fields": [
                            "aspect_ratio",
                            [
                                "width",
                                "height"
                            ]
                        ],
                        "note": "Either aspect_ratio OR width+height, not both"
                    }
                ],
                "response": {
                    "images_path": "data.image_urls",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "mystic": {
        "name": "Mystic",
        "shortname": "Mystic",
        "vendor": "Freepik",
        "family": "Mystic",
        "deprecated": false,
        "docs_url": "https://docs.freepik.com/api-reference/mystic/post-mystic",
        "platforms": {
            "freepik": {
                "name": "Freepik",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "freepik",
                "env_var": "FREEPIK_API_KEY",
                "auth_header": "x-freepik-api-key",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 120,
                "poll_url_pattern": "append_task_id",
                "endpoints": {
                    "texttoimage": "https://api.freepik.com/v1/ai/mystic"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.task_id",
                    "status_path": "data.status",
                    "images_path": "data.generated",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text with optional structure/style references",
                "endpoint": "https://api.freepik.com/v1/ai/mystic",
                "poll_url_template": "https://api.freepik.com/v1/ai/mystic/{task_id}",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "style_reference": {
                        "type": "image",
                        "required": false,
                        "upload_as": "raw_base64",
                        "api_field": "style_reference",
                        "label": "Style reference",
                        "title": "Supports these formats as inputs: JPEG, PNG, WEBP",
                        "section": "Inputs"
                    },
                    "adherence": {
                        "type": "range",
                        "required": false,
                        "default": 50,
                        "min": 0,
                        "max": 100,
                        "step": 1,
                        "api_field": "adherence",
                        "label": "Adherence",
                        "note": "Only sent when style_reference is provided",
                        "subtype": "int",
                        "title": "Increasing this will make your generation more faithful to the prompt, but it may transfer the style less accurately. Higher values can help fix small artifacts, anatomical errors and text readability. Lower values will give you more creative images and closer to the style reference\n\nNote: this parameter only takes effect when a style reference image is provided",
                        "section": "Settings"
                    },
                    "model_style": {
                        "type": "enum",
                        "required": false,
                        "default": "realism",
                        "options": [
                            "editorial_portraits",
                            "flexible",
                            "fluid",
                            "realism",
                            "super_real",
                            "zen"
                        ],
                        "option_labels": {
                            "editorial_portraits": "Editorial Portraits",
                            "flexible": "Flexible",
                            "fluid": "Fluid",
                            "realism": "Realism",
                            "super_real": "Super Real",
                            "zen": "Zen"
                        },
                        "api_field": "model",
                        "label": "Model Style",
                        "title": "ZEN: For smoother, basic, and cleaner results. Fewer objects in the scene and less intricate details\n\nFLEXIBLE: Good prompt adherence. Results are a bit more HDR and saturated than REALISM or FLUID. Especially good with illustrations, fantastical prompts, and for diving into the latent space in search of very specific visual styles\n\nFLUID: Adheres best to prompts, with great quality for all kinds of images. Supports only 1:1, 9:16, 16:9, 3:4, and 4:3 aspect ratios\n\nREALISM: Uses a realistic color palette, attempting to provide a 'less AI look.' Works especially well with photographs, but also magically works with illustrations, too\n\nSUPER REAL: If realism is your priority, this is your model. Nearly as versatile as FLEXIBLE, it excels in realism - outperforming EDITORIAL PORTRAITS in medium shots, though not as strong for close-ups\n\nEDITORIAL PORTRAITS: State-of-the-art for editorial portraits; perfect for hyper-realistic close-up or medium shots. Unfortunately, in wide or distant shots, it generates anatomical problems and artifacts.\n\nTip: use the longest and most explanatory prompts possible",
                        "section": "Settings"
                    },
                    "creative_detailing": {
                        "type": "range",
                        "required": false,
                        "default": 33,
                        "min": 0,
                        "max": 100,
                        "step": 1,
                        "api_field": "creative_detailing",
                        "label": "Creative Detailing",
                        "subtype": "int",
                        "title": "Higher values can achieve greater detail per pixel at higher resolutions at the cost of giving a somewhat more 'HDR' or artificial look. Very high values can generate unusual things like eyes where they shouldn't appear, etc.",
                        "section": "Settings"
                    },
                    "engine": {
                        "type": "enum",
                        "required": false,
                        "default": "automatic",
                        "options": [
                            "automatic",
                            "magnific_illusio",
                            "magnific_sharpy",
                            "magnific_sparkle"
                        ],
                        "option_labels": {
                            "automatic": "Auto",
                            "magnific_illusio": "Illusio",
                            "magnific_sharpy": "Sharpy",
                            "magnific_sparkle": "Sparkle"
                        },
                        "api_field": "engine",
                        "label": "Engine",
                        "title": "Engine used by the Mystic model",
                        "section": "Settings"
                    },
                    "structure_reference": {
                        "type": "image",
                        "required": false,
                        "upload_as": "raw_base64",
                        "api_field": "structure_reference",
                        "label": "Structure Reference",
                        "title": "Using structure references allows you to influence the shape of your final image, enabling applications such as coloring sketches, transforming cartoons into realistic images, texturing basic 3D models, or converting real images into cartoons. The outcome is entirely controlled by your prompt, offering limitless creative possibilities",
                        "section": "Settings"
                    },
                    "structure_strength": {
                        "type": "range",
                        "required": false,
                        "default": 50,
                        "min": 0,
                        "max": 100,
                        "step": 1,
                        "api_field": "structure_strength",
                        "label": "Structure Strength",
                        "note": "Only sent when structure_reference is provided",
                        "subtype": "int",
                        "title": "How much to maintain the structure of the original image",
                        "section": "Settings"
                    },
                    "hdr": {
                        "type": "range",
                        "required": false,
                        "default": 50,
                        "min": 0,
                        "max": 100,
                        "step": 1,
                        "api_field": "hdr",
                        "label": "HDR",
                        "note": "Only sent when style_reference is provided",
                        "subtype": "int",
                        "title": "Increasing this can give you a more detailed image, but at the cost of a more 'AI look' and slightly worse style transfer. Lower values have a more natural and artistic look but may increase artifacts\n\nNote: this parameter only takes effect when a style reference image is provided",
                        "section": "Settings"
                    },
                    "fixed_generation": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "api_field": "fixed_generation",
                        "label": "Fixed Generation",
                        "note": "PHP sends string 'true'/'false'; Python passes raw  — type mismatch",
                        "title": "When this option is enabled, using the same settings will consistently produce the same image\n\nFixed generations are ideal for fine-tuning, as it allows for incremental changes to parameters (such as the prompt) to see subtle variations in the output\n\nWhen disabled, expect each generation to introduce a degree of randomness, leading to more diverse outcomes",
                        "section": "Output"
                    },
                    "resolution": {
                        "type": "enum",
                        "required": false,
                        "default": "2k",
                        "options": [
                            "1k",
                            "2k",
                            "4k"
                        ],
                        "option_labels": {
                            "1k": "",
                            "2k": "",
                            "4k": ""
                        },
                        "api_field": "resolution",
                        "label": "Resolution",
                        "note": "Lowercase values (1k/2k/4k)",
                        "title": "Output image dimensions",
                        "section": "Output"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "default": "square_1_1",
                        "options": [
                            "classic_4_3",
                            "horizontal_2_1",
                            "portrait_2_3",
                            "smartphone_horizontal_20_9",
                            "smartphone_vertical_9_20",
                            "social_5_4",
                            "social_post_4_5",
                            "social_story_9_16",
                            "square_1_1",
                            "standard_3_2",
                            "traditional_3_4",
                            "vertical_1_2",
                            "widescreen_16_9"
                        ],
                        "option_labels": {
                            "classic_4_3": "Classic 4:3",
                            "horizontal_2_1": "Horizontal 2:1",
                            "portrait_2_3": "Portrait 2:3",
                            "smartphone_horizontal_20_9": "Smartphone Horizontal 20:9",
                            "smartphone_vertical_9_20": "Smartphone Vertical 9:20",
                            "social_5_4": "Social 5:4",
                            "social_post_4_5": "Social Post 4:5",
                            "social_story_9_16": "Social Story 9:16",
                            "square_1_1": "Square 1:1",
                            "standard_3_2": "Standard 3:2",
                            "traditional_3_4": "Traditional 3:4",
                            "vertical_1_2": "Vertical 1:2",
                            "widescreen_16_9": "Widescreen 16:9"
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "note": "Named enum values, not colon-separated ratios",
                        "title": "Ratio of width to height; note that the FLUID model supports only 1:1, 9:16, 16:9, 3:4, and 4:3 aspect ratios",
                        "section": "Output"
                    }
                },
                "response": {
                    "request_id_path": "data.task_id",
                    "status_path": "data.status",
                    "images_path": "data.generated",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "nanobanana2": {
        "name": "Nano Banana 2",
        "shortname": "Nano Banana 2",
        "vendor": "Google",
        "family": "Gemini",
        "deprecated": false,
        "prompt_guide_url": "https://cloud.google.com/blog/products/ai-machine-learning/ultimate-prompting-guide-for-nano-banana",
        "docs_url": "https://fal.ai/models/fal-ai/nano-banana-2/api",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/nano-banana-2",
                    "edit": "fal-ai/nano-banana-2/edit"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text using Nano Banana 2",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 393216,
                        "structured_template": "basic",
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "enable_web_search": {
                        "type": "bool",
                        "required": false,
                        "section": "Settings",
                        "default": false,
                        "api_field": "enable_web_search",
                        "web_search_flag": [
                            true
                        ],
                        "label": "Enable Web Search",
                        "title": "Allow the model to use the latest information from the web to generate the image"
                    },
                    "thinking_level": {
                        "type": "enum",
                        "required": false,
                        "section": "Settings",
                        "default": "",
                        "options": [
                            "minimal",
                            "high"
                        ],
                        "no_value_label": "Off",
                        "option_labels": {
                            "minimal": "Minimal",
                            "high": "High"
                        },
                        "api_field": "thinking_level",
                        "reasoning_flag": [
                            "high",
                            "minimal"
                        ],
                        "label": "Thinking Level",
                        "title": "Enables thinking at the selected level to guide image generation"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "auto",
                        "options": [
                            "auto",
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "4:5",
                            "5:4",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "1:1": "",
                            "2:3": "",
                            "3:2": "",
                            "3:4": "",
                            "4:3": "",
                            "4:5": "",
                            "5:4": "",
                            "9:16": "",
                            "16:9": "",
                            "21:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": "Ratio of width to height\n\nUse Auto to let the model decide based on the prompt"
                    },
                    "resolution": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "1K",
                        "options": [
                            "0.5K",
                            "1K",
                            "2K",
                            "4K"
                        ],
                        "option_labels": {
                            "0.5K": "512 px",
                            "1K": "1K",
                            "2K": "2K",
                            "4K": "4K"
                        },
                        "api_field": "resolution",
                        "label": "Resolution",
                        "title": "Output image dimensions"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of output images to generate"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    },
                    "safety_tolerance": {
                        "type": "enum",
                        "required": false,
                        "section": "Safety",
                        "default": "4",
                        "options": [
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "6"
                        ],
                        "option_labels": {
                            "1": "1 (Most strict)",
                            "2": "2",
                            "3": "3",
                            "4": "4",
                            "5": "5",
                            "6": "6 (Least strict)"
                        },
                        "api_field": "safety_tolerance",
                        "warning_values": [
                            6
                        ],
                        "label": "Tolerance",
                        "title": "Content moderation strictness\n\n1 is the most strict (blocks most content), 6 is the least strict"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "edit": {
                "io": "image + text → image",
                "description": "Edit images with text instructions using Nano Banana 2",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 393216,
                        "structured_template": "basic",
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "min_items": 1,
                        "max_items": 14,
                        "upload_as": "s3_public_url",
                        "api_field": "image_urls",
                        "label": "",
                        "alt_label": "Input Images",
                        "title": ""
                    },
                    "enable_web_search": {
                        "type": "bool",
                        "required": false,
                        "section": "Settings",
                        "default": false,
                        "api_field": "enable_web_search",
                        "web_search_flag": [
                            true
                        ],
                        "label": "Enable Web Search",
                        "title": "Allow the model to use the latest information from the web to generate the image"
                    },
                    "thinking_level": {
                        "type": "enum",
                        "required": false,
                        "section": "Settings",
                        "default": "",
                        "options": [
                            "minimal",
                            "high"
                        ],
                        "no_value_label": "Off",
                        "option_labels": {
                            "minimal": "Minimal",
                            "high": "High"
                        },
                        "api_field": "thinking_level",
                        "reasoning_flag": [
                            "high",
                            "minimal"
                        ],
                        "label": "Thinking Level",
                        "title": "Enables thinking at the selected level to guide image generation"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "auto",
                        "crop_override_value": "1:1",
                        "options": [
                            "auto",
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "4:5",
                            "5:4",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "1:1": "",
                            "2:3": "",
                            "3:2": "",
                            "3:4": "",
                            "4:3": "",
                            "4:5": "",
                            "5:4": "",
                            "9:16": "",
                            "16:9": "",
                            "21:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": "Ratio of width to height"
                    },
                    "resolution": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "1K",
                        "options": [
                            "0.5K",
                            "1K",
                            "2K",
                            "4K"
                        ],
                        "option_labels": {
                            "0.5K": "512 px",
                            "1K": "1K",
                            "2K": "2K",
                            "4K": "4K"
                        },
                        "api_field": "resolution",
                        "label": "Resolution",
                        "title": "Output image dimensions"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of output images to generate"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    },
                    "safety_tolerance": {
                        "type": "enum",
                        "required": false,
                        "section": "Safety",
                        "default": "4",
                        "options": [
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "6"
                        ],
                        "option_labels": {
                            "1": "1 (Most strict)",
                            "2": "2",
                            "3": "3",
                            "4": "4",
                            "5": "5",
                            "6": "6 (Least strict)"
                        },
                        "api_field": "safety_tolerance",
                        "warning_values": [
                            "6"
                        ],
                        "label": "Tolerance",
                        "title": "Content moderation strictness\n\n1 is the most strict (blocks most content), 6 is the least strict"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "nanobanana_pro": {
        "name": "Nano Banana Pro",
        "shortname": "Nano Banana Pro",
        "vendor": "Google",
        "family": "Gemini",
        "deprecated": false,
        "docs_url": "https://fal.ai/models/fal-ai/nano-banana-pro/api",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/nano-banana-pro",
                    "edit": "fal-ai/nano-banana-pro/edit"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text using Nano Banana Pro",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 50000,
                        "structured_template": "basic",
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "enable_web_search": {
                        "type": "bool",
                        "required": false,
                        "section": "Settings",
                        "default": false,
                        "api_field": "enable_web_search",
                        "web_search_flag": [
                            true
                        ],
                        "label": "Enable Web Search",
                        "title": "Allow the model to use the latest information from the web to generate the image"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "1:1",
                        "options": [
                            "auto",
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "4:5",
                            "5:4",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "1:1": "",
                            "2:3": "",
                            "3:2": "",
                            "3:4": "",
                            "4:3": "",
                            "4:5": "",
                            "5:4": "",
                            "9:16": "",
                            "16:9": "",
                            "21:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": "Ratio of width to height\n\nUse Auto to let the model decide based on the prompt"
                    },
                    "resolution": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "1K",
                        "options": [
                            "1K",
                            "2K",
                            "4K"
                        ],
                        "option_labels": {
                            "1K": "1K",
                            "2K": "2K",
                            "4K": "4K"
                        },
                        "api_field": "resolution",
                        "label": "Resolution",
                        "title": "Output image dimensions"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of output images to generate"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    },
                    "safety_tolerance": {
                        "type": "enum",
                        "required": false,
                        "section": "Safety",
                        "default": "4",
                        "options": [
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "6"
                        ],
                        "option_labels": {
                            "1": "1 (Most strict)",
                            "2": "2",
                            "3": "3",
                            "4": "4",
                            "5": "5",
                            "6": "6 (Least strict)"
                        },
                        "api_field": "safety_tolerance",
                        "warning_values": [
                            "6"
                        ],
                        "label": "Tolerance",
                        "title": "Content moderation strictness\n\n1 is the most strict (blocks most content), 6 is the least strict"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "edit": {
                "io": "image + text → image",
                "description": "Edit images with text instructions using Nano Banana Pro",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 50000,
                        "structured_template": "basic",
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "min_items": 1,
                        "max_items": 14,
                        "upload_as": "s3_public_url",
                        "api_field": "image_urls",
                        "label": "",
                        "alt_label": "Input Images",
                        "title": ""
                    },
                    "enable_web_search": {
                        "type": "bool",
                        "required": false,
                        "section": "Settings",
                        "default": false,
                        "api_field": "enable_web_search",
                        "web_search_flag": [
                            true
                        ],
                        "label": "Enable Web Search",
                        "title": "Allow the model to use the latest information from the web to generate the image"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "auto",
                        "crop_override_value": "1:1",
                        "options": [
                            "auto",
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "4:5",
                            "5:4",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "1:1": "",
                            "2:3": "",
                            "3:2": "",
                            "3:4": "",
                            "4:3": "",
                            "4:5": "",
                            "5:4": "",
                            "9:16": "",
                            "16:9": "",
                            "21:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": "Ratio of width to height"
                    },
                    "resolution": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "1K",
                        "options": [
                            "1K",
                            "2K",
                            "4K"
                        ],
                        "option_labels": {
                            "1K": "1K",
                            "2K": "2K",
                            "4K": "4K"
                        },
                        "api_field": "resolution",
                        "label": "Resolution",
                        "title": "Output image dimensions"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of output images to generate"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    },
                    "safety_tolerance": {
                        "type": "enum",
                        "required": false,
                        "section": "Safety",
                        "default": "4",
                        "options": [
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "6"
                        ],
                        "option_labels": {
                            "1": "1 (Most strict)",
                            "2": "2",
                            "3": "3",
                            "4": "4",
                            "5": "5",
                            "6": "6 (Least strict)"
                        },
                        "api_field": "safety_tolerance",
                        "warning_values": [
                            "6"
                        ],
                        "label": "Tolerance",
                        "title": "Content moderation strictness\n\n1 is the most strict (blocks most content), 6 is the least strict"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "openrouter": {
        "name": "OpenRouter",
        "shortname": "OpenRouter",
        "vendor": "OpenRouter",
        "family": "OpenRouter",
        "category": "llm",
        "workflow_only": true,
        "deprecated": false,
        "docs_url": "https://fal.ai/models/openrouter/router/api",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 120,
                "poll_interval_seconds": 1,
                "endpoints": {
                    "llm": "openrouter/router",
                    "vlm": "openrouter/router/vision"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "output_path": "output",
                    "reasoning_path": "reasoning",
                    "usage_path": "usage",
                    "response_format": "text"
                }
            }
        },
        "constraints": {},
        "modes": {
            "llm": {
                "io": "text → text",
                "description": "Text generation via OpenRouter. Routes to any supported LLM (Claude, GPT, Gemini, Llama, etc.)",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "The input prompt for the language model"
                    },
                    "system_prompt": {
                        "type": "text",
                        "required": false,
                        "section": "Prompts",
                        "default": null,
                        "api_field": "system_prompt",
                        "label": "System Prompt",
                        "title": "System-level instructions that set the behavior and context for the model"
                    },
                    "model": {
                        "type": "enum",
                        "required": true,
                        "section": "Settings",
                        "default": "anthropic/claude-opus-4.6",
                        "api_field": "model",
                        "label": "Model",
                        "title": "OpenRouter model identifier. Charged based on actual token usage",
                        "options": [
                            "anthropic/claude-opus-4.7",
                            "anthropic/claude-opus-4.6",
                            "anthropic/claude-opus-4.6-fast",
                            "anthropic/claude-sonnet-4.6",
                            "google/gemini-3.1-pro-preview",
                            "google/gemini-3.1-flash-lite-preview",
                            "meta-llama/llama-4-maverick",
                            "openai/gpt-5.4-nano",
                            "openai/gpt-5.5",
                            "openai/gpt-5.5-pro"
                        ],
                        "option_labels": {
                            "anthropic/claude-opus-4.7": "Anthropic : Claude Opus 4.7",
                            "anthropic/claude-opus-4.6": "Anthropic : Claude Opus 4.6",
                            "anthropic/claude-opus-4.6-fast": "Anthropic : Claude Opus 4.6 [Fast]",
                            "anthropic/claude-sonnet-4.6": "Anthropic : Claude Sonnet 4.6",
                            "google/gemini-3.1-pro-preview": "Google : Gemini 3.1 Pro Preview",
                            "google/gemini-3.1-flash-lite-preview": "Google : Gemini 3.1 Flash Preview",
                            "meta-llama/llama-4-maverick": "Meta : Llama 4 Maverick",
                            "openai/gpt-5.4-nano": "OpenAI : GPT-5.4 Nano",
                            "openai/gpt-5.5": "OpenAI : GPT-5.5",
                            "openai/gpt-5.5-pro": "OpenAI : GPT-5.5 Pro"
                        }
                    },
                    "reasoning": {
                        "type": "bool",
                        "required": false,
                        "section": "Settings",
                        "default": false,
                        "api_field": "reasoning",
                        "reasoning_flag": [
                            true
                        ],
                        "label": "Include Reasoning",
                        "title": "Include the model's chain-of-thought reasoning in the response"
                    },
                    "temperature": {
                        "type": "range",
                        "required": false,
                        "section": "Settings",
                        "default": 1,
                        "min": 0,
                        "max": 2,
                        "step": 0.1,
                        "subtype": "float",
                        "api_field": "temperature",
                        "label": "Temperature",
                        "title": "Controls response variety. Lower values produce more predictable output, higher values encourage more diverse responses. At 0, the model always gives the same response for a given input"
                    },
                    "max_tokens": {
                        "type": "int",
                        "required": false,
                        "section": "Settings",
                        "default": null,
                        "min": 1,
                        "api_field": "max_tokens",
                        "label": "Max Tokens",
                        "title": "Upper limit for generated tokens. The maximum value is the model's context length minus the prompt length"
                    }
                },
                "response": {
                    "output_path": "output",
                    "reasoning_path": "reasoning",
                    "usage_path": "usage",
                    "response_format": "text"
                },
                "deprecated": false
            },
            "vlm": {
                "io": "image + text → text",
                "description": "Vision-language model via OpenRouter. Analyze images with any supported VLM (Claude, GPT-5.4, Gemini, Qwen-VL, etc.)",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Instructions for how to analyze or describe the images"
                    },
                    "system_prompt": {
                        "type": "text",
                        "required": false,
                        "section": "Prompts",
                        "default": null,
                        "api_field": "system_prompt",
                        "label": "System Prompt",
                        "title": "System-level instructions that set the behavior and context for the model"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "min_items": 1,
                        "upload_as": "s3_url",
                        "api_field": "image_urls",
                        "label": "",
                        "alt_label": "Input Images",
                        "title": "Images to analyze or process"
                    },
                    "model": {
                        "type": "enum",
                        "required": true,
                        "section": "Settings",
                        "default": "anthropic/claude-sonnet-4.6",
                        "api_field": "model",
                        "label": "Model",
                        "title": "OpenRouter model identifier. Must support vision input. Charged based on actual token usage",
                        "options": [
                            "qwen/qwen3-vl-235-a22b-instruct",
                            "anthropic/claude-sonnet-4.5",
                            "anthropic/claude-sonnet-4.6",
                            "google/gemini-2.5-flash",
                            "openai/gpt-4o",
                            "x-ai/grok-4-fast"
                        ],
                        "option_labels": {
                            "qwen/qwen3-vl-235-a22b-instruct": "Alibaba : Qwen 3 VL Instruct",
                            "anthropic/claude-sonnet-4.5": "Anthropic : Claude Sonnet 4.5",
                            "anthropic/claude-sonnet-4.6": "Anthropic : Claude Sonnet 4.6",
                            "google/gemini-2.5-flash": "Google : Gemini 2.5 Flash",
                            "openai/gpt-4o": "OpenAI : GPT-4o",
                            "x-ai/grok-4-fast": "xAI : Grok 4 Fast"
                        }
                    },
                    "reasoning": {
                        "type": "bool",
                        "required": false,
                        "section": "Settings",
                        "default": false,
                        "api_field": "reasoning",
                        "reasoning_flag": [
                            true
                        ],
                        "label": "Include Reasoning",
                        "title": "Include the model's chain-of-thought reasoning in the response"
                    },
                    "temperature": {
                        "type": "range",
                        "required": false,
                        "section": "Settings",
                        "default": 1,
                        "min": 0,
                        "max": 2,
                        "step": 0.1,
                        "subtype": "float",
                        "api_field": "temperature",
                        "label": "Temperature",
                        "title": "Controls response variety. Lower values produce more predictable output, higher values encourage more diverse responses"
                    },
                    "max_tokens": {
                        "type": "int",
                        "required": false,
                        "section": "Settings",
                        "default": null,
                        "min": 1,
                        "api_field": "max_tokens",
                        "label": "Max Tokens",
                        "title": "Upper limit for generated tokens"
                    }
                },
                "response": {
                    "output_path": "output",
                    "usage_path": "usage",
                    "response_format": "text"
                },
                "deprecated": false
            }
        }
    },
    "openrouter_openai": {
        "name": "OpenRouter [OpenAI-compatible]",
        "shortname": "OpenRouter OAI",
        "vendor": "OpenRouter",
        "family": "OpenRouter",
        "category": "llm",
        "workflow_only": true,
        "deprecated": false,
        "docs_url": "https://fal.ai/models/openrouter/router/openai/v1/chat/completions/api",
        "note": "OpenAI-compatible passthrough endpoints. Input/output follows the OpenAI API schema. The request body is forwarded as-is to OpenRouter",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 120,
                "poll_interval_seconds": 1,
                "endpoints": {
                    "chat": "openrouter/router/openai/v1/chat/completions",
                    "embeddings": "openrouter/router/openai/v1/embeddings",
                    "responses": "openrouter/router/openai/v1/responses"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "response_format": "passthrough"
                }
            }
        },
        "constraints": {},
        "modes": {
            "chat": {
                "io": "text → text",
                "description": "OpenAI-compatible chat completions. Accepts the standard OpenAI chat completions request format",
                "passthrough": true,
                "fields": {
                    "body": {
                        "type": "json",
                        "required": true,
                        "section": "Request",
                        "api_field": "__passthrough",
                        "label": "Request Body",
                        "title": "Full OpenAI-compatible chat completions request body (model, messages, temperature, etc.)"
                    }
                },
                "response": {
                    "response_format": "passthrough"
                },
                "deprecated": false
            },
            "responses": {
                "io": "text → text",
                "description": "OpenAI-compatible responses API. Accepts the standard OpenAI responses request format",
                "passthrough": true,
                "fields": {
                    "body": {
                        "type": "json",
                        "required": true,
                        "section": "Request",
                        "api_field": "__passthrough",
                        "label": "Request Body",
                        "title": "Full OpenAI-compatible responses request body"
                    }
                },
                "response": {
                    "response_format": "passthrough"
                },
                "deprecated": false
            },
            "embeddings": {
                "io": "text → vector",
                "description": "OpenAI-compatible embeddings. Accepts the standard OpenAI embeddings request format",
                "passthrough": true,
                "fields": {
                    "body": {
                        "type": "json",
                        "required": true,
                        "section": "Request",
                        "api_field": "__passthrough",
                        "label": "Request Body",
                        "title": "Full OpenAI-compatible embeddings request body (model, input, encoding_format, etc.)"
                    }
                },
                "response": {
                    "response_format": "passthrough"
                },
                "deprecated": false
            }
        }
    },
    "phoenix": {
        "name": "Phoenix 1.0",
        "shortname": "Phoenix",
        "vendor": "Leonardo AI",
        "family": "Leonardo",
        "deprecated": true,
        "docs_url": "https://docs.leonardo.ai/",
        "platforms": {
            "leonardo": {
                "model_uuid": "de7d3faf-762f-48e0-b3b7-9d0ac3a3fcf3"
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text",
                "endpoint": "https://cloud.leonardo.ai/api/rest/v1/generations",
                "poll_url_template": "https://cloud.leonardo.ai/api/rest/v1/generations/{generationId}",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "prompt_upsampling": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "api_field": "enhancePrompt",
                        "label": "Enhance Prompt",
                        "title": "Automatically modifies the prompt for more creative generation",
                        "section": "Prompts"
                    },
                    "structured_prompt": {
                        "type": "json",
                        "required": false,
                        "label": "Structured Prompt",
                        "template": "basic",
                        "note": "Shown in JS but Python does NOT send it",
                        "title": "Advanced formatted prompt for detailed scene control; you can use a structured prompt from a previous generation's response",
                        "section": "Prompts"
                    },
                    "contrast": {
                        "type": "enum",
                        "required": false,
                        "default": "3.5",
                        "options": [
                            "1",
                            "1.3",
                            "1.8",
                            "2.5",
                            "3",
                            "3.5",
                            "4",
                            "4.5"
                        ],
                        "option_labels": {
                            "1": "",
                            "1.3": "",
                            "1.8": "",
                            "2.5": "",
                            "3": "",
                            "3.5": "",
                            "4": "",
                            "4.5": ""
                        },
                        "api_field": "contrast",
                        "label": "Contrast",
                        "note": "Sent as float. Optional for Phoenix, defaults to 3.5 for Lucid models.",
                        "title": "",
                        "section": "Settings"
                    },
                    "style_preset": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "debdf72a-91a4-467b-bf61-cc02bdeb69c6",
                            "9fdc5e8c-4d13-49b4-9ce6-5a74cbb19177",
                            "a5632c7c-ddbb-4e2f-ba34-8456ab3ac436",
                            "33abbb99-03b9-4dd7-9761-ee98650b2c88",
                            "6fedbf1f-4a17-45ec-84fb-92fe524a29ef",
                            "111dc692-d470-4eec-b791-3475abac4c46",
                            "594c4a08-a522-4e0e-b7ff-e4dac4b6b622",
                            "2e74ec31-f3a4-4825-b08b-2894f6d13941",
                            "1fbb6a68-9319-44d2-8d56-2957ca0ece6a",
                            "97c20e5c-1af6-4d42-b227-54d03d8f0727",
                            "645e4195-f63d-4715-a3f2-3fb1e6eb8c70",
                            "30c1d34f-e3a9-479a-b56f-c018bbc9c02a",
                            "cadc8cd6-7838-4c99-b645-df76be8ba8d8",
                            "621e1c9a-6319-4bee-a12d-ae40659162fa",
                            "556c1ee5-ec38-42e8-955a-1e82dad0ffa1",
                            "8e2bc543-6ee2-45f9-bcd9-594b6ce84dcd",
                            "22a9a7d2-2166-4d86-80ff-22e2643adbcf",
                            "7c3f932b-a572-47cb-9b9b-f20211e63b5b",
                            "581ba6d6-5aac-4492-bebe-54c424a0d46e",
                            "0d34f8e1-46d4-428f-8ddd-4b11811fa7c9",
                            "b504f83c-3326-4947-82e1-7fe9e839ec0f",
                            "be8c6b58-739c-4d44-b9c1-b032ed308b61",
                            "093accc3-7633-4ffd-82da-d34000dfc0d6",
                            "5bdc3f2a-1be6-4d1c-8e77-992a30824a2c",
                            "dee282d3-891f-4f73-ba02-7f8131e5541b"
                        ],
                        "option_labels": {
                            "093accc3-7633-4ffd-82da-d34000dfc0d6": "Sketch (Color)",
                            "0d34f8e1-46d4-428f-8ddd-4b11811fa7c9": "Portrait Fashion",
                            "111dc692-d470-4eec-b791-3475abac4c46": "Dynamic",
                            "1fbb6a68-9319-44d2-8d56-2957ca0ece6a": "Graphic Design (Vector)",
                            "22a9a7d2-2166-4d86-80ff-22e2643adbcf": "Pro Black & White Photography",
                            "2e74ec31-f3a4-4825-b08b-2894f6d13941": "Graphic Design (Pop Art)",
                            "30c1d34f-e3a9-479a-b56f-c018bbc9c02a": "Macro",
                            "33abbb99-03b9-4dd7-9761-ee98650b2c88": "Cinematic Concept",
                            "556c1ee5-ec38-42e8-955a-1e82dad0ffa1": "None",
                            "581ba6d6-5aac-4492-bebe-54c424a0d46e": "Pro Film Photography",
                            "594c4a08-a522-4e0e-b7ff-e4dac4b6b622": "Fashion",
                            "5bdc3f2a-1be6-4d1c-8e77-992a30824a2c": "Stock Photo",
                            "621e1c9a-6319-4bee-a12d-ae40659162fa": "Moody",
                            "645e4195-f63d-4715-a3f2-3fb1e6eb8c70": "Illustration",
                            "6fedbf1f-4a17-45ec-84fb-92fe524a29ef": "Creative",
                            "7c3f932b-a572-47cb-9b9b-f20211e63b5b": "Pro Color Photography",
                            "97c20e5c-1af6-4d42-b227-54d03d8f0727": "HDR",
                            "9fdc5e8c-4d13-49b4-9ce6-5a74cbb19177": "Bokeh",
                            "a5632c7c-ddbb-4e2f-ba34-8456ab3ac436": "Cinematic",
                            "b504f83c-3326-4947-82e1-7fe9e839ec0f": "Ray Traced",
                            "be8c6b58-739c-4d44-b9c1-b032ed308b61": "Sketch (Black & White)",
                            "cadc8cd6-7838-4c99-b645-df76be8ba8d8": "Minimalist",
                            "debdf72a-91a4-467b-bf61-cc02bdeb69c6": "3D Render",
                            "dee282d3-891f-4f73-ba02-7f8131e5541b": "Vibrant"
                        },
                        "api_field": "styleUUID",
                        "legacy_key": "style_preset_phoenix",
                        "label": "Style Preset",
                        "note": "Values are UUIDs, e.g. 'debdf72a-91a4-467b-bf61-cc02bdeb69c6' for 3D Render",
                        "title": "",
                        "section": "Settings"
                    },
                    "ultra": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "api_field": "ultra",
                        "label": "Ultra",
                        "note": "Checkbox sends string 'true'; Python checks params['ultra'] == 'true'",
                        "title": "Ultra upscaling will override any specified width and height but will retain their aspect ratio",
                        "section": "Settings"
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 512,
                        "max": 1536,
                        "step": 8,
                        "api_field": "width",
                        "legacy_key": "output_width_1",
                        "label": "Width",
                        "title": "",
                        "section": "Output"
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 512,
                        "max": 1536,
                        "step": 8,
                        "api_field": "height",
                        "legacy_key": "output_height_1",
                        "label": "Height",
                        "title": "",
                        "section": "Output"
                    }
                },
                "hidden_api_fields": {
                    "modelId": "de7d3faf-762f-48e0-b3b7-9d0ac3a3fcf3",
                    "num_images": 1
                },
                "response": {
                    "request_id_path": "sdGenerationJob.generationId",
                    "status_path": "generations_by_pk.status",
                    "images_path": "generations_by_pk.generated_images",
                    "image_url_path": "url",
                    "enhanced_prompt_path": "generations_by_pk.prompt",
                    "response_format": "url"
                }
            },
            "upscale": {
                "io": "image → image",
                "description": "Universal Upscaler via Leonardo API",
                "endpoint": "https://cloud.leonardo.ai/api/rest/v1/variations/universal-upscaler",
                "poll_url_template": "https://cloud.leonardo.ai/api/rest/v1/variations/{variationId}",
                "http_method": "POST",
                "content_type": "application/json",
                "upload_workflow": "presigned_url",
                "init_upload_url": "https://cloud.leonardo.ai/api/rest/v1/init-image",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "presigned_url",
                        "api_field": "initImageId",
                        "legacy_key": "image_source_4_file_base64",
                        "label": "Source",
                        "note": "Uploaded via presigned URL flow: init-image → get presigned URL → upload → use returned ID",
                        "title": "",
                        "section": "Inputs"
                    },
                    "ultra_upscale_style": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "ARTISTIC",
                            "REALISTIC"
                        ],
                        "option_labels": {
                            "ARTISTIC": "Artistic",
                            "REALISTIC": "Realistic"
                        },
                        "api_field": "ultraUpscaleStyle",
                        "label": "Upscale style",
                        "title": "Using Ultra mode. This setting will greatly affect the result. It is highly recommended to use Artistic when using with 2D style imagery",
                        "section": "Settings"
                    },
                    "creativity_strength": {
                        "type": "range",
                        "required": false,
                        "default": 5,
                        "min": 1,
                        "max": 10,
                        "step": 1,
                        "api_field": "creativityStrength",
                        "label": "Creativity Strength",
                        "subtype": "int",
                        "title": "Determines how much creative deviation occurs when adding additional detail to the image. Note that higher strengths will greatly change the image from the original",
                        "section": "Settings"
                    },
                    "details_contrast": {
                        "type": "range",
                        "required": false,
                        "default": 5,
                        "min": 1,
                        "max": 10,
                        "step": 1,
                        "api_field": "detailContrast",
                        "label": "Details / Contrast",
                        "subtype": "int",
                        "title": "Similar to the HDR options on other upscale services, this affects the contrast levels of details within the image. This effect can be very pronounced on the edges of objects and may look unrealistic if set to extremely high levels. (Similar to an extreme Unsharp Mask effect in Photoshop or Structure / Sharpness in photo editors)",
                        "section": "Settings"
                    },
                    "similarity": {
                        "type": "range",
                        "required": false,
                        "default": 5,
                        "min": 1,
                        "max": 10,
                        "step": 1,
                        "api_field": "similarity",
                        "label": "Similarity",
                        "subtype": "int",
                        "title": "This determines how far the overall image structure will retain similarity or diverge from the original\n\nUseful when using with Creativity Strength to preserve some semblance of the original image",
                        "section": "Settings"
                    },
                    "upscale_multiplier": {
                        "type": "range",
                        "required": false,
                        "default": 2,
                        "min": 1,
                        "max": 2,
                        "step": 0.25,
                        "api_field": "upscaleMultiplier",
                        "label": "Upscale Multiplier",
                        "subtype": "float",
                        "title": "Determines how large the image will be upscaled to",
                        "section": "Settings"
                    }
                },
                "response": {
                    "request_id_path": "universalUpscaler.id",
                    "status_path": "generated_image_variation_generic[0].status",
                    "images_path": "generated_image_variation_generic",
                    "image_url_path": "url",
                    "response_format": "url"
                }
            }
        }
    },
    "physicedit": {
        "name": "PhysicEdit",
        "shortname": "PhysicEdit",
        "vendor": "Zhao et al.",
        "family": "PhysicEdit",
        "deprecated": false,
        "docs_url": "https://fal.ai/models/fal-ai/physic-edit/api",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "edit": "fal-ai/physic-edit"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "edit": {
                "io": "image + text → image",
                "description": "Physics-aware image editing — melt, shatter, burn, freeze, and other physical transformations",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Editing instruction describing the physical transformation to apply"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "section": "Prompts",
                        "default": "",
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Description of unwanted elements in the output"
                    },
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "section": "Inputs",
                        "upload_as": "s3_url",
                        "api_field": "image_url",
                        "label": "Source",
                        "title": "Image to edit with physics-aware transformations"
                    },
                    "guidance_scale": {
                        "type": "range",
                        "required": false,
                        "section": "Settings",
                        "default": 4,
                        "min": 1,
                        "max": 20,
                        "step": 0.5,
                        "subtype": "float",
                        "api_field": "guidance_scale",
                        "label": "Guidance Scale",
                        "title": "How closely the model follows the prompt (higher = stricter adherence)"
                    },
                    "num_inference_steps": {
                        "type": "range",
                        "required": false,
                        "section": "Settings",
                        "default": 40,
                        "min": 1,
                        "max": 50,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_inference_steps",
                        "label": "Inference Steps",
                        "title": "Number of denoising steps (higher = better quality but slower)"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "jpeg",
                        "options": [
                            "jpeg",
                            "png"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    },
                    "disable_safety_checker": {
                        "type": "bool",
                        "required": false,
                        "section": "Safety",
                        "default": false,
                        "api_field": "enable_safety_checker",
                        "api_invert": true,
                        "warning_values": [
                            true
                        ],
                        "label": "Disable Safety Checker",
                        "title": "Disable safety checker for generated images"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "seed_path": "seed",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "qwenimg": {
        "name": "Qwen Image 2.0 Pro",
        "shortname": "Qwen Image 2",
        "vendor": "Alibaba",
        "family": "Qwen",
        "deprecated": false,
        "prompt_guide_url": "https://fal.ai/learn/tools/how-to-use-qwen-image-2",
        "docs_url": "https://fal.ai/models/fal-ai/qwen-image-2/pro/text-to-image",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/qwen-image-2/pro/text-to-image"
                },
                "api_field_map": {
                    "aspect_ratio": null,
                    "prompt_extend": null,
                    "rw_height": null,
                    "rw_width": null
                },
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "api_value_map": {
                    "image_size": {
                        "custom": "custom",
                        "landscape_16_9": "landscape_16_9",
                        "landscape_4_3": "landscape_4_3",
                        "portrait_16_9": "portrait_16_9",
                        "portrait_4_3": "portrait_4_3",
                        "square": "square",
                        "square_hd": "square_hd"
                    }
                }
            },
            "runware": {
                "type": "byok",
                "dispatch": "runware_http",
                "secret_id": "runware",
                "env_var": "RUNWARE_API_KEY",
                "auth_header": "authorization",
                "auth_prefix": "Bearer",
                "submit_url": "https://api.runware.ai/v1",
                "default_task_type": "imageInference",
                "endpoints": {
                    "texttoimage": "https://api.runware.ai/v1"
                },
                "api_field_map": {
                    "disable_safety_checker": null,
                    "enable_prompt_expansion": null,
                    "height": null,
                    "image_size": null,
                    "negative_prompt": "negativePrompt",
                    "num_outputs": "numberResults",
                    "output_format": "outputFormat",
                    "prompt": "positivePrompt",
                    "width": null
                },
                "hidden_api_fields": {
                    "includeCost": true,
                    "model": "alibaba:qwen-image@2.0-pro"
                },
                "response": {
                    "images_path": "data",
                    "image_url_key": "imageURL",
                    "response_format": "url"
                },
                "api_value_map": {
                    "output_format": {
                        "jpeg": "JPG",
                        "png": "PNG",
                        "webp": "WEBP"
                    }
                }
            },
            "wavespeed": {
                "name": "WaveSpeedAI",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "wavespeed",
                "env_var": "WAVESPEED_API_KEY",
                "auth_header": "Authorization",
                "auth_prefix": "Bearer",
                "poll_url_template": "https://api.wavespeed.ai/api/v3/predictions/{request_id}/result",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60,
                "endpoints": {
                    "texttoimage": "https://api.wavespeed.ai/api/v3/wavespeed-ai/qwen-image-2.0-pro/text-to-image"
                },
                "api_field_map": {
                    "aspect_ratio": null,
                    "disable_safety_checker": null,
                    "enable_prompt_expansion": null,
                    "height": null,
                    "image_size": "size",
                    "negative_prompt": null,
                    "num_outputs": null,
                    "output_format": null,
                    "prompt_extend": null,
                    "rw_height": null,
                    "rw_width": null,
                    "width": null
                },
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "response_format": "url"
                },
                "api_value_map": {
                    "image_size": {
                        "landscape_16_9": "1024*576",
                        "landscape_4_3": "1024*768",
                        "portrait_16_9": "576*1024",
                        "portrait_4_3": "768*1024",
                        "square": "512*512",
                        "square_hd": "1024*1024"
                    }
                }
            }
        },
        "constraints": {
            "negative_prompt_max_length": 500,
            "seed": {
                "min": 0,
                "hint": "Requires a positive integer"
            }
        },
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text prompts",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 4000,
                        "structured_template": "basic",
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "enable_prompt_expansion": {
                        "type": "bool",
                        "required": false,
                        "section": "Prompts",
                        "default": true,
                        "api_field": "enable_prompt_expansion",
                        "label": "Enable Prompt Expansion",
                        "title": "fal.ai prompt expansion"
                    },
                    "prompt_extend": {
                        "type": "bool",
                        "required": false,
                        "section": "Prompts",
                        "default": true,
                        "api_field": "settings.promptExtend",
                        "label": "Enable Prompt Extend",
                        "title": "Runware prompt extension"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "section": "Prompts",
                        "default": "",
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from an image"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "landscape_4_3",
                        "options": [
                            "custom",
                            "landscape_16_9",
                            "landscape_4_3",
                            "portrait_16_9",
                            "portrait_4_3",
                            "square",
                            "square_hd"
                        ],
                        "option_labels": {
                            "custom": "Custom",
                            "landscape_16_9": "Landscape 16:9",
                            "landscape_4_3": "Landscape 4:3",
                            "portrait_16_9": "Portrait 9:16",
                            "portrait_4_3": "Portrait 3:4",
                            "square": "Square",
                            "square_hd": "Square HD"
                        },
                        "exclude_api_values": [
                            "custom"
                        ],
                        "api_field": "image_size",
                        "label": "Image Size",
                        "title": "fal.ai / WaveSpeed preset sizes"
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": 1024,
                        "min": 256,
                        "max": 2048,
                        "step": 8,
                        "api_field": "image_size.width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "fal.ai custom width (step 8)"
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": 1024,
                        "min": 256,
                        "max": 2048,
                        "step": 8,
                        "api_field": "image_size.height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "fal.ai custom height (step 8)"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "1024x1024",
                        "options": [
                            "1024x1024",
                            "1536x640",
                            "1344x768",
                            "1152x896",
                            "1280x832",
                            "832x1280",
                            "896x1152",
                            "768x1344",
                            "640x1536",
                            "custom"
                        ],
                        "option_labels": {
                            "1024x1024": "1:1 (Square)",
                            "1152x896": "4:3 (Standard / Landscape)",
                            "1280x832": "3:2 (Classic / Landscape)",
                            "1344x768": "16:9 (Wide / Landscape)",
                            "1536x640": "21:9 (Ultra-Wide / Landscape)",
                            "640x1536": "9:21 (Ultra-Tall / Portrait)",
                            "768x1344": "9:16 (Tall / Portrait)",
                            "832x1280": "2:3 (Classic / Portrait)",
                            "896x1152": "3:4 (Standard / Portrait)",
                            "custom": "Custom"
                        },
                        "exclude_api_values": [
                            "custom"
                        ],
                        "api_field": "__dimensions",
                        "api_transform": "split_dimensions",
                        "label": "Aspect Ratio",
                        "title": "Runware dimension presets"
                    },
                    "rw_width": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": 1024,
                        "min": 512,
                        "max": 2048,
                        "step": 64,
                        "api_field": "width",
                        "label": "Width",
                        "visible_when": {
                            "aspect_ratio": "custom"
                        },
                        "title": "Must be a multiple of 64"
                    },
                    "rw_height": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": 1024,
                        "min": 512,
                        "max": 2048,
                        "step": 64,
                        "api_field": "height",
                        "label": "Height",
                        "visible_when": {
                            "aspect_ratio": "custom"
                        },
                        "title": "Must be a multiple of 64"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "webp",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WEBP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "num_outputs": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "api_field": "num_images",
                        "label": "Count",
                        "subtype": "int",
                        "title": "Number of output images to generate"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "max": 2147483647,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    },
                    "disable_safety_checker": {
                        "type": "bool",
                        "required": false,
                        "section": "Safety",
                        "default": false,
                        "api_field": "enable_safety_checker",
                        "api_invert": true,
                        "warning_values": [
                            true
                        ],
                        "label": "Disable Safety Checker",
                        "note": "The API field is 'enable_safety_checker' with inverted logic",
                        "title": "Disable safety checker for generated images"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "seed_path": "seed",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "qwenimgedit": {
        "name": "Qwen Image 2.0 Edit Pro",
        "shortname": "Qwen Image 2 Edit",
        "vendor": "Alibaba",
        "family": "Qwen",
        "deprecated": false,
        "prompt_guide_url": "https://fal.ai/learn/tools/how-to-use-qwen-image-2",
        "docs_url": "https://fal.ai/models/fal-ai/qwen-image-2/pro/edit",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "edit": "fal-ai/qwen-image-2/pro/edit"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "base64"
                },
                "api_value_map": {
                    "image_size": {
                        "landscape_16_9": "landscape_16_9",
                        "landscape_4_3": "landscape_4_3",
                        "portrait_16_9": "portrait_16_9",
                        "portrait_4_3": "portrait_4_3",
                        "square": "square",
                        "square_hd": "square_hd",
                        "custom": "custom"
                    }
                }
            },
            "wavespeed": {
                "name": "WaveSpeedAI",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "wavespeed",
                "env_var": "WAVESPEED_API_KEY",
                "poll_url_template": "https://api.wavespeed.ai/api/v3/predictions/{request_id}/result",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60,
                "endpoints": {
                    "edit": "https://api.wavespeed.ai/api/v3/wavespeed-ai/qwen-image-2.0-pro/edit"
                },
                "api_field_map": {
                    "enable_prompt_expansion": null,
                    "enable_safety_checker": null,
                    "image_size": "size",
                    "input_images": "images",
                    "negative_prompt": null,
                    "num_images": null,
                    "output_format": null
                },
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "response_format": "url"
                },
                "api_value_map": {
                    "image_size": {
                        "landscape_16_9": "1024*576",
                        "landscape_4_3": "1024*768",
                        "portrait_16_9": "576*1024",
                        "portrait_4_3": "768*1024",
                        "square": "512*512",
                        "square_hd": "1024*1024"
                    }
                },
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            }
        },
        "constraints": {},
        "modes": {
            "edit": {
                "io": "image + text → image",
                "description": "Edit one or more images with a text prompt",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 4000,
                        "structured_template": "basic",
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "enable_prompt_expansion": {
                        "type": "bool",
                        "required": false,
                        "section": "Prompts",
                        "default": true,
                        "api_field": "enable_prompt_expansion",
                        "label": "Enable Prompt Expansion",
                        "title": "Enable LLM prompt optimization for better results"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "section": "Prompts",
                        "default": "",
                        "max_length": 500,
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from an image"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "min_items": 1,
                        "max_items": 6,
                        "upload_as": "s3_url",
                        "api_field": "image_urls",
                        "label": "",
                        "alt_label": "Input Images",
                        "note": "",
                        "title": ""
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WEBP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "",
                        "crop_override_value": "square_hd",
                        "options": [
                            "custom",
                            "landscape_16_9",
                            "landscape_4_3",
                            "portrait_16_9",
                            "portrait_4_3",
                            "square",
                            "square_hd"
                        ],
                        "option_labels": {
                            "custom": "Custom",
                            "landscape_16_9": "Landscape 16:9",
                            "landscape_4_3": "Landscape 4:3",
                            "portrait_16_9": "Portrait 16:9",
                            "portrait_4_3": "Portrait 4:3",
                            "square": "Square",
                            "square_hd": "Square HD"
                        },
                        "no_value_label": "Match Input Image",
                        "api_field": "image_size",
                        "label": "Image Size",
                        "title": "",
                        "exclude_api_values": [
                            "custom"
                        ]
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "default": 1024,
                        "min": 256,
                        "max": 2048,
                        "step": 8,
                        "api_field": "image_size.width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "",
                        "section": "Output"
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "default": 1024,
                        "min": 256,
                        "max": 2048,
                        "step": 8,
                        "api_field": "image_size.height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "",
                        "section": "Output"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 6,
                        "api_field": "num_images",
                        "label": "Count",
                        "subtype": "int",
                        "title": ""
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "max": 2147483647,
                        "section": "Output",
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image"
                    },
                    "disable_safety_checker": {
                        "type": "bool",
                        "required": false,
                        "section": "Safety",
                        "default": false,
                        "api_field": "enable_safety_checker",
                        "api_invert": true,
                        "warning_values": [
                            true
                        ],
                        "label": "Disable Safety Checker",
                        "note": "The API field is 'enable_safety_checker' with inverted logic",
                        "title": "Disable safety checker for generated images"
                    }
                },
                "ui_extras": [
                    "pose_editor"
                ],
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "response_format": "base64"
                },
                "deprecated": false
            }
        }
    },
    "qwenmultiangle2": {
        "name": "Qwen Image Edit Multiangles [2511]",
        "shortname": "Qwen Multiangles",
        "vendor": "Alibaba",
        "family": "Qwen",
        "deprecated": false,
        "docs_url": "https://fal.ai/models/fal-ai/qwen-image-edit-2511-multiple-angles",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "vcam": "fal-ai/qwen-image-edit-2511-multiple-angles"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "api_value_map": {
                    "acceleration": {
                        "none": "none",
                        "regular": "regular"
                    },
                    "image_size": {
                        "landscape_16_9": "landscape_16_9",
                        "landscape_4_3": "landscape_4_3",
                        "portrait_16_9": "portrait_16_9",
                        "portrait_4_3": "portrait_4_3",
                        "square": "square",
                        "square_hd": "square_hd",
                        "custom": "custom"
                    }
                }
            }
        },
        "constraints": {
            "negative_prompt_max_length": 10000,
            "seed": {
                "min": 0,
                "hint": "Requires a positive integer"
            }
        },
        "modes": {
            "vcam": {
                "io": "image → image",
                "description": "Generate new camera angles of an image",
                "fields": {
                    "additional_prompt": {
                        "type": "text",
                        "required": false,
                        "default": "",
                        "api_field": "additional_prompt",
                        "label": "Additional Prompt",
                        "title": "Additional text to append to the automatically generated prompt",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "default": "",
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from an image",
                        "section": "Prompts"
                    },
                    "guidance_scale": {
                        "type": "range",
                        "required": false,
                        "default": 4.5,
                        "min": 0,
                        "max": 20,
                        "step": 0.5,
                        "api_field": "guidance_scale",
                        "label": "Guidance Scale",
                        "subtype": "float",
                        "title": "Guidance scale for generation",
                        "section": "Prompts"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "min_items": 1,
                        "max_items": 1,
                        "upload_as": "s3_url",
                        "api_field": "image_urls",
                        "label": "Source",
                        "note": "",
                        "title": "",
                        "section": "Inputs"
                    },
                    "horizontal_angle": {
                        "type": "range",
                        "required": false,
                        "default": 0,
                        "min": 0,
                        "max": 360,
                        "step": 1,
                        "api_field": "horizontal_angle",
                        "label": "Horizontal Angle",
                        "subtype": "float",
                        "title": "Horizontal rotation angle around the object in degrees\n\n0°   = Front view\n90°  = Right side\n180° = Back view\n270° = Left side\n360° = Front view again",
                        "section": "Settings"
                    },
                    "vertical_angle": {
                        "type": "range",
                        "required": false,
                        "default": 0,
                        "min": -30,
                        "max": 90,
                        "step": 1,
                        "api_field": "vertical_angle",
                        "label": "Vertical Angle",
                        "subtype": "float",
                        "title": "Vertical camera angle in degrees\n\n-30° = Low-angle shot (looking up)\n0°   = Eye-level\n30°  = Elevated\n60°  = High-angle\n90°  = Bird's-eye view (looking down)",
                        "section": "Settings"
                    },
                    "zoom": {
                        "type": "range",
                        "required": false,
                        "default": 5,
                        "min": 0,
                        "max": 10,
                        "step": 0.1,
                        "api_field": "zoom",
                        "label": "Zoom Distance",
                        "subtype": "float",
                        "title": "Camera zoom/distance\n\n0  = Wide shot (far away)\n5  = Medium shot (normal)\n10 = Close-up (very close)",
                        "section": "Settings"
                    },
                    "camera_move_strength": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "min": 0,
                        "max": 4,
                        "step": 0.01,
                        "api_field": "lora_scale",
                        "label": "Camera Move Strength",
                        "subtype": "float",
                        "title": "Fine-tune how strongly the camera adjustment is applied",
                        "section": "Settings"
                    },
                    "inference_steps": {
                        "type": "range",
                        "required": false,
                        "default": 28,
                        "min": 1,
                        "max": 50,
                        "api_field": "num_inference_steps",
                        "label": "Inference Steps",
                        "subtype": "int",
                        "step": 1,
                        "title": "Number of inference steps to perform",
                        "section": "Settings"
                    },
                    "acceleration": {
                        "type": "enum",
                        "required": false,
                        "default": "regular",
                        "options": [
                            "high",
                            "none",
                            "regular"
                        ],
                        "option_labels": {
                            "high": "High",
                            "none": "None",
                            "regular": "Regular"
                        },
                        "api_field": "acceleration",
                        "label": "Acceleration",
                        "title": "",
                        "section": "Settings"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "default": "",
                        "crop_override_value": "square_hd",
                        "options": [
                            "custom",
                            "landscape_16_9",
                            "landscape_4_3",
                            "portrait_16_9",
                            "portrait_4_3",
                            "square",
                            "square_hd"
                        ],
                        "option_labels": {
                            "custom": "Custom",
                            "landscape_16_9": "Landscape 16:9",
                            "landscape_4_3": "Landscape 4:3",
                            "portrait_16_9": "Portrait 9:16",
                            "portrait_4_3": "Portrait 3:4",
                            "square": "Square",
                            "square_hd": "Square HD"
                        },
                        "no_value_label": "Match Input Image",
                        "api_field": "image_size",
                        "label": "Image Size",
                        "note": "Default null (empty string in legacy) means match input image dimensions",
                        "title": "",
                        "section": "Output",
                        "exclude_api_values": [
                            "custom"
                        ]
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "default": 1024,
                        "min": 256,
                        "max": 2048,
                        "step": 8,
                        "api_field": "image_size.width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "",
                        "section": "Output"
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "default": 1024,
                        "min": 256,
                        "max": 2048,
                        "step": 8,
                        "api_field": "image_size.height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "webp",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WEBP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Desired file format of the resulting image",
                        "section": "Output"
                    },
                    "num_outputs": {
                        "type": "range",
                        "required": false,
                        "default": 1,
                        "min": 1,
                        "max": 4,
                        "api_field": "num_images",
                        "label": "Count",
                        "subtype": "int",
                        "title": "Number of output images to generate",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image",
                        "section": "Output"
                    },
                    "disable_safety_checker": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "api_field": "enable_safety_checker",
                        "api_invert": true,
                        "warning_values": [
                            true
                        ],
                        "label": "Disable Safety Checker",
                        "title": "Disable safety checker for generated images",
                        "section": "Safety"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "seed_path": "seed",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "recraft": {
        "name": "Recraft",
        "shortname": "Recraft",
        "vendor": "Recraft",
        "family": "Recraft",
        "deprecated": false,
        "prompt_guide_url": "https://www.recraft.ai/docs/prompt-engineering-guide/introduction",
        "docs_url": "https://www.recraft.ai/docs",
        "platforms": {
            "recraft": {
                "name": "Recraft",
                "type": "direct",
                "sdk": null,
                "dispatch": "http_json_or_multipart",
                "secret_id": "recraft",
                "auth_header": "authorization",
                "auth_prefix": "Bearer"
            },
            "falai": {
                "name": "features and labels",
                "type": "partner",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "vectorize": "fal-ai/recraft/vectorize",
                    "upscale": {
                        "sub_types": {
                            "creative": "fal-ai/recraft/upscale/creative",
                            "crisp": "fal-ai/recraft/upscale/crisp"
                        }
                    }
                },
                "api_field_map": {
                    "source_image": "image_url",
                    "upscale_type": null
                },
                "upload_as_map": {
                    "source_image": "s3_url"
                },
                "hidden_api_fields": {},
                "response": {
                    "image_url_path": "image.url",
                    "response_format": "base64"
                }
            }
        },
        "constraints": {},
        "_style_version_parsing": "style_recraft values end in _V2 or _V3 suffix. Python strips it to determine recraft_model (recraftv2/recraftv3) and the clean style name. V3 unlocks negative_prompt, no_text, and controls.",
        "_style_vs_style_id": "style + substyle and style_id are mutually exclusive. If style_id is set, it goes in extra_body.style_id; otherwise style goes in payload.style and substyle in extra_body.substyle.",
        "modes": {
            "bgremove": {
                "io": "image → image",
                "description": "Remove background from an image",
                "endpoint": "https://external.api.recraft.ai/v1/images/removeBackground",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "multipart_file",
                        "api_field": "file",
                        "label": "Source",
                        "title": "",
                        "section": "Inputs"
                    }
                },
                "hidden_api_fields": {
                    "response_format": "url"
                },
                "response": {
                    "image_url_path": "image.url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "bggen": {
                "io": "image + text → image",
                "description": "Replace background with AI-generated content",
                "endpoint": "https://external.api.recraft.ai/v1/images/replaceBackground",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "note": "Only sent for V3 styles",
                        "title": "Description of what to exclude from an image",
                        "section": "Prompts"
                    },
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "multipart_file",
                        "api_field": "file",
                        "label": "Source",
                        "title": "",
                        "section": "Inputs"
                    },
                    "style": {
                        "type": "enum",
                        "required": false,
                        "api_field": "style",
                        "label": "Style",
                        "note": "Parsed to extract _V2/_V3 suffix for model version",
                        "title": "If creating a custom style, this will provide the base from which the new style will be built\n\nWhen generating images, this is not compatible with Style ID, which will override Style and Substyle if entered",
                        "options": [
                            "digital_illustration_V2",
                            "digital_illustration_V3",
                            "icon_V2",
                            "logo_raster_V3",
                            "realistic_image_V2",
                            "realistic_image_V3",
                            "vector_illustration_V2",
                            "vector_illustration_V3"
                        ],
                        "option_labels": {
                            "digital_illustration_V2": "Illustration (V2)",
                            "digital_illustration_V3": "Illustration (V3)",
                            "icon_V2": "Vector Icon (V2)",
                            "logo_raster_V3": "Graphic Design (V3)",
                            "realistic_image_V2": "Photorealism (V2)",
                            "realistic_image_V3": "Photorealism (V3)",
                            "vector_illustration_V2": "Vector Art (V2)",
                            "vector_illustration_V3": "Vector Art (V3)"
                        },
                        "section": "Settings"
                    },
                    "substyle": {
                        "type": "enum",
                        "required": false,
                        "api_field": "extra_body.substyle",
                        "label": "Substyle",
                        "note": "Only sent when style_id is not set",
                        "title": "Visual substyle within the selected base style\n\nAvailable substyles change based on which base style is selected",
                        "options": [
                            "2d_art_poster",
                            "2d_art_poster_2",
                            "3d",
                            "80s",
                            "antiquarian",
                            "b_and_w",
                            "bold_fantasy",
                            "bold_stroke",
                            "broken_line",
                            "cartoon",
                            "chemistry",
                            "child_book",
                            "child_books",
                            "colored_outline",
                            "colored_shapes",
                            "colored_shapes_gradient",
                            "colored_stencil",
                            "contour_pop_art",
                            "cosmics",
                            "cover",
                            "crosshatch",
                            "cutout",
                            "depressive",
                            "digital_engraving",
                            "doodle_fill",
                            "doodle_line_art",
                            "doodle_offset_fill",
                            "editorial",
                            "emblem_graffiti",
                            "emblem_pop_art",
                            "emblem_punk",
                            "emblem_stamp",
                            "emblem_vintage",
                            "emotional_flat",
                            "engraving",
                            "engraving_color",
                            "enterprise",
                            "evening_light",
                            "expressionism",
                            "faded_nostalgia",
                            "flat_2_0",
                            "forest_life",
                            "freehand_details",
                            "glow",
                            "grain",
                            "grain_20",
                            "graphic_intensity",
                            "hand_drawn",
                            "hand_drawn_outline",
                            "handmade_3d",
                            "hard_comics",
                            "hard_flash",
                            "hdr",
                            "infantile_sketch",
                            "infographical",
                            "kawaii",
                            "line_art",
                            "line_circuit",
                            "linocut",
                            "long_shadow",
                            "marker_outline",
                            "modern_folk",
                            "mosaic",
                            "motion_blur",
                            "multicolor",
                            "mystic_naturalism",
                            "naivector",
                            "natural_light",
                            "natural_tones",
                            "neon_calm",
                            "noir",
                            "nostalgic_pastel",
                            "offset_fill",
                            "organic_calm",
                            "outline",
                            "outline_details",
                            "outline_gradient",
                            "pastel_gradient",
                            "pastel_sketch",
                            "pictogram",
                            "pixel_art",
                            "plastic",
                            "pop_art",
                            "pop_renaissance",
                            "psychedelic",
                            "real_life_glow",
                            "retro_realism",
                            "retro_snapshot",
                            "roundish_flat",
                            "seamless",
                            "segmented_colors",
                            "sharp_contrast",
                            "street_art",
                            "studio_portrait",
                            "tablet_sketch",
                            "thin",
                            "urban_drama",
                            "urban_glow",
                            "urban_sketching",
                            "vanilla_dreams",
                            "vector_photo",
                            "village_realism",
                            "vivid_shapes",
                            "voxel",
                            "warm_folk",
                            "watercolor",
                            "young_adult_book",
                            "young_adult_book_2"
                        ],
                        "option_labels": {
                            "b_and_w": "Black & White",
                            "enterprise": "Enterprise",
                            "evening_light": "Evening Light",
                            "faded_nostalgia": "Faded Nostalgia",
                            "forest_life": "Forest Life",
                            "hard_flash": "Hard Flash",
                            "hdr": "HDR",
                            "motion_blur": "Motion Blur",
                            "mystic_naturalism": "Mystic Naturalism",
                            "natural_light": "Natural Light",
                            "natural_tones": "Natural Tones",
                            "organic_calm": "Organic Calm",
                            "real_life_glow": "Real-Life Glow",
                            "retro_realism": "Retro Realism",
                            "retro_snapshot": "Retro Snapshot",
                            "studio_portrait": "Studio Portrait",
                            "urban_drama": "Urban Drama",
                            "village_realism": "Village Realism",
                            "warm_folk": "Warm Folk",
                            "2d_art_poster": "2D Art Poster",
                            "2d_art_poster_2": "2D Art Poster 2",
                            "antiquarian": "Antiquarian",
                            "bold_fantasy": "Bold Fantasy",
                            "child_book": "Child Book",
                            "child_books": "Child Books",
                            "cover": "Cover",
                            "crosshatch": "Crosshatch",
                            "digital_engraving": "Digital Engraving",
                            "engraving_color": "Engraving Color",
                            "expressionism": "Expressionism",
                            "freehand_details": "Freehand Details",
                            "grain": "Grain",
                            "grain_20": "Grain 2.0",
                            "graphic_intensity": "Graphic Intensity",
                            "hand_drawn": "Hand-drawn",
                            "hand_drawn_outline": "Hand-drawn Outline",
                            "handmade_3d": "Handmade 3D",
                            "hard_comics": "Hard Comics",
                            "infantile_sketch": "Infantile Sketch",
                            "long_shadow": "Long Shadow",
                            "modern_folk": "Modern Folk",
                            "multicolor": "Multicolor",
                            "neon_calm": "Neon Calm",
                            "noir": "Noir",
                            "nostalgic_pastel": "Nostalgic Pastel",
                            "outline_details": "Outline Details",
                            "pastel_gradient": "Pastel Gradient",
                            "pastel_sketch": "Pastel Sketch",
                            "pixel_art": "Pixel Art",
                            "plastic": "Plastic",
                            "pop_art": "Pop Art",
                            "pop_renaissance": "Pop Renaissance",
                            "seamless": "Seamless",
                            "street_art": "Street Art",
                            "tablet_sketch": "Tablet Sketch",
                            "urban_glow": "Urban Glow",
                            "urban_sketching": "Urban Sketching",
                            "vanilla_dreams": "Vanilla Dreams",
                            "young_adult_book": "Young Adult Book",
                            "young_adult_book_2": "Young Adult Book 2",
                            "3d": "3D",
                            "80s": "80s",
                            "glow": "Glow",
                            "kawaii": "Kawaii",
                            "psychedelic": "Psychedelic",
                            "voxel": "Voxel",
                            "watercolor": "Watercolor",
                            "bold_stroke": "Bold Stroke",
                            "chemistry": "Chemistry",
                            "colored_stencil": "Colored Stencil",
                            "contour_pop_art": "Contour Pop Art",
                            "cosmics": "Cosmics",
                            "cutout": "Cutout",
                            "depressive": "Depressive",
                            "editorial": "Editorial",
                            "emotional_flat": "Emotional Flat",
                            "engraving": "Engraving",
                            "infographical": "Infographical",
                            "line_art": "Line Art",
                            "line_circuit": "Line Circuit",
                            "linocut": "Linocut",
                            "marker_outline": "Marker Outline",
                            "mosaic": "Mosaic",
                            "naivector": "Naivector",
                            "roundish_flat": "Roundish Flat",
                            "segmented_colors": "Segmented Colors",
                            "sharp_contrast": "Sharp Contrast",
                            "thin": "Thin",
                            "vector_photo": "Vector Photo",
                            "vivid_shapes": "Vivid Shapes",
                            "cartoon": "Cartoon",
                            "doodle_line_art": "Doodle Line Art",
                            "flat_2_0": "Flat 2.0",
                            "emblem_graffiti": "Graffiti",
                            "emblem_pop_art": "Pop Art",
                            "emblem_punk": "Punk",
                            "emblem_stamp": "Stamp",
                            "emblem_vintage": "Vintage Emblem",
                            "broken_line": "Broken Line",
                            "colored_outline": "Colored Outline",
                            "colored_shapes": "Colored Shape",
                            "colored_shapes_gradient": "Gradient Shape",
                            "doodle_fill": "Doodle",
                            "doodle_offset_fill": "Offset Doodle",
                            "offset_fill": "Offset Fill",
                            "outline": "Outline",
                            "outline_gradient": "Gradient Outline",
                            "pictogram": "Pictogram"
                        },
                        "custom_fields": {
                            "style_substyles": {
                                "realistic_image_V3": [
                                    "b_and_w",
                                    "enterprise",
                                    "evening_light",
                                    "faded_nostalgia",
                                    "forest_life",
                                    "hard_flash",
                                    "hdr",
                                    "motion_blur",
                                    "mystic_naturalism",
                                    "natural_light",
                                    "natural_tones",
                                    "organic_calm",
                                    "real_life_glow",
                                    "retro_realism",
                                    "retro_snapshot",
                                    "studio_portrait",
                                    "urban_drama",
                                    "village_realism",
                                    "warm_folk"
                                ],
                                "realistic_image_V2": [
                                    "b_and_w",
                                    "enterprise",
                                    "hard_flash",
                                    "hdr",
                                    "motion_blur",
                                    "natural_light",
                                    "studio_portrait"
                                ],
                                "digital_illustration_V3": [
                                    "2d_art_poster",
                                    "2d_art_poster_2",
                                    "antiquarian",
                                    "bold_fantasy",
                                    "child_book",
                                    "child_books",
                                    "cover",
                                    "crosshatch",
                                    "digital_engraving",
                                    "engraving_color",
                                    "expressionism",
                                    "freehand_details",
                                    "grain",
                                    "grain_20",
                                    "graphic_intensity",
                                    "hand_drawn",
                                    "hand_drawn_outline",
                                    "handmade_3d",
                                    "hard_comics",
                                    "infantile_sketch",
                                    "long_shadow",
                                    "modern_folk",
                                    "multicolor",
                                    "neon_calm",
                                    "noir",
                                    "nostalgic_pastel",
                                    "outline_details",
                                    "pastel_gradient",
                                    "pastel_sketch",
                                    "pixel_art",
                                    "plastic",
                                    "pop_art",
                                    "pop_renaissance",
                                    "seamless",
                                    "street_art",
                                    "tablet_sketch",
                                    "urban_glow",
                                    "urban_sketching",
                                    "vanilla_dreams",
                                    "young_adult_book",
                                    "young_adult_book_2"
                                ],
                                "digital_illustration_V2": [
                                    "2d_art_poster",
                                    "2d_art_poster_2",
                                    "3d",
                                    "80s",
                                    "engraving_color",
                                    "glow",
                                    "grain",
                                    "hand_drawn",
                                    "hand_drawn_outline",
                                    "handmade_3d",
                                    "infantile_sketch",
                                    "kawaii",
                                    "pixel_art",
                                    "plastic",
                                    "psychedelic",
                                    "seamless",
                                    "voxel",
                                    "watercolor"
                                ],
                                "vector_illustration_V3": [
                                    "bold_stroke",
                                    "chemistry",
                                    "colored_stencil",
                                    "contour_pop_art",
                                    "cosmics",
                                    "cutout",
                                    "depressive",
                                    "editorial",
                                    "emotional_flat",
                                    "engraving",
                                    "infographical",
                                    "line_art",
                                    "line_circuit",
                                    "linocut",
                                    "marker_outline",
                                    "mosaic",
                                    "naivector",
                                    "roundish_flat",
                                    "seamless",
                                    "segmented_colors",
                                    "sharp_contrast",
                                    "thin",
                                    "vector_photo",
                                    "vivid_shapes"
                                ],
                                "vector_illustration_V2": [
                                    "cartoon",
                                    "doodle_line_art",
                                    "engraving",
                                    "flat_2_0",
                                    "kawaii",
                                    "line_art",
                                    "line_circuit",
                                    "linocut",
                                    "seamless"
                                ],
                                "logo_raster_V3": [
                                    "emblem_graffiti",
                                    "emblem_pop_art",
                                    "emblem_punk",
                                    "emblem_stamp",
                                    "emblem_vintage"
                                ],
                                "icon_V2": [
                                    "broken_line",
                                    "colored_outline",
                                    "colored_shapes",
                                    "colored_shapes_gradient",
                                    "doodle_fill",
                                    "doodle_offset_fill",
                                    "offset_fill",
                                    "outline",
                                    "outline_gradient",
                                    "pictogram"
                                ]
                            }
                        },
                        "section": "Settings"
                    },
                    "style_id": {
                        "type": "text",
                        "required": false,
                        "api_field": "extra_body.style_id",
                        "label": "Custom Style ID",
                        "note": "Mutually exclusive with style+substyle",
                        "title": "Use a previously uploaded style as a reference; not compatible with Style and Substyle, which will be ignored if entered",
                        "section": "Settings"
                    }
                },
                "hidden_api_fields": {
                    "n": 1,
                    "response_format": "url"
                },
                "response": {
                    "images_path": "data",
                    "image_url_path": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "createstyle": {
                "io": "images → style_id",
                "description": "Create a custom style from 1-5 reference images",
                "endpoint": "https://external.api.recraft.ai/v1/styles",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "_js_mode_name": "styletransfer",
                "fields": {
                    "style_images": {
                        "type": "image[]",
                        "required": true,
                        "upload_as": "multipart_files",
                        "api_field": "images",
                        "label": "Style Reference Images (1-5)",
                        "min_count": 1,
                        "max_count": 5,
                        "title": "",
                        "section": "Inputs"
                    },
                    "base_style": {
                        "type": "enum",
                        "required": false,
                        "api_field": "style",
                        "label": "Base Style",
                        "note": "_V3 suffix stripped before sending",
                        "title": "Provides the base from which the new style will be built",
                        "options": [
                            "digital_illustration_V3",
                            "logo_raster_V3",
                            "realistic_image_V3",
                            "vector_illustration_V3"
                        ],
                        "option_labels": {
                            "digital_illustration_V3": "Illustration",
                            "logo_raster_V3": "Graphic Design",
                            "realistic_image_V3": "Photorealism",
                            "vector_illustration_V3": "Vector Art"
                        },
                        "section": "Settings"
                    }
                },
                "response": {
                    "style_id_path": "id",
                    "response_format": "style_id"
                },
                "deprecated": false
            },
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text with style controls",
                "endpoint": "https://external.api.recraft.ai/v1/images/generations",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "note": "V3 only",
                        "title": "Description of what to exclude from an image",
                        "section": "Prompts"
                    },
                    "no_text": {
                        "type": "bool",
                        "required": false,
                        "api_field": "no_text",
                        "label": "No Text in Image",
                        "note": "V3 only",
                        "title": "Do not embed text layouts",
                        "section": "Settings"
                    },
                    "style": {
                        "type": "enum",
                        "required": false,
                        "api_field": "style",
                        "label": "Style",
                        "title": "If creating a custom style, this will provide the base from which the new style will be built\n\nWhen generating images, this is not compatible with Style ID, which will override Style and Substyle if entered",
                        "options": [
                            "digital_illustration_V2",
                            "digital_illustration_V3",
                            "icon_V2",
                            "logo_raster_V3",
                            "realistic_image_V2",
                            "realistic_image_V3",
                            "vector_illustration_V2",
                            "vector_illustration_V3"
                        ],
                        "option_labels": {
                            "digital_illustration_V2": "Illustration (V2)",
                            "digital_illustration_V3": "Illustration (V3)",
                            "icon_V2": "Vector Icon (V2)",
                            "logo_raster_V3": "Graphic Design (V3)",
                            "realistic_image_V2": "Photorealism (V2)",
                            "realistic_image_V3": "Photorealism (V3)",
                            "vector_illustration_V2": "Vector Art (V2)",
                            "vector_illustration_V3": "Vector Art (V3)"
                        },
                        "section": "Settings"
                    },
                    "substyle": {
                        "type": "enum",
                        "required": false,
                        "api_field": "extra_body.substyle",
                        "label": "Substyle",
                        "title": "Visual substyle within the selected base style\n\nAvailable substyles change based on which base style is selected",
                        "options": [
                            "2d_art_poster",
                            "2d_art_poster_2",
                            "3d",
                            "80s",
                            "antiquarian",
                            "b_and_w",
                            "bold_fantasy",
                            "bold_stroke",
                            "broken_line",
                            "cartoon",
                            "chemistry",
                            "child_book",
                            "child_books",
                            "colored_outline",
                            "colored_shapes",
                            "colored_shapes_gradient",
                            "colored_stencil",
                            "contour_pop_art",
                            "cosmics",
                            "cover",
                            "crosshatch",
                            "cutout",
                            "depressive",
                            "digital_engraving",
                            "doodle_fill",
                            "doodle_line_art",
                            "doodle_offset_fill",
                            "editorial",
                            "emblem_graffiti",
                            "emblem_pop_art",
                            "emblem_punk",
                            "emblem_stamp",
                            "emblem_vintage",
                            "emotional_flat",
                            "engraving",
                            "engraving_color",
                            "enterprise",
                            "evening_light",
                            "expressionism",
                            "faded_nostalgia",
                            "flat_2_0",
                            "forest_life",
                            "freehand_details",
                            "glow",
                            "grain",
                            "grain_20",
                            "graphic_intensity",
                            "hand_drawn",
                            "hand_drawn_outline",
                            "handmade_3d",
                            "hard_comics",
                            "hard_flash",
                            "hdr",
                            "infantile_sketch",
                            "infographical",
                            "kawaii",
                            "line_art",
                            "line_circuit",
                            "linocut",
                            "long_shadow",
                            "marker_outline",
                            "modern_folk",
                            "mosaic",
                            "motion_blur",
                            "multicolor",
                            "mystic_naturalism",
                            "naivector",
                            "natural_light",
                            "natural_tones",
                            "neon_calm",
                            "noir",
                            "nostalgic_pastel",
                            "offset_fill",
                            "organic_calm",
                            "outline",
                            "outline_details",
                            "outline_gradient",
                            "pastel_gradient",
                            "pastel_sketch",
                            "pictogram",
                            "pixel_art",
                            "plastic",
                            "pop_art",
                            "pop_renaissance",
                            "psychedelic",
                            "real_life_glow",
                            "retro_realism",
                            "retro_snapshot",
                            "roundish_flat",
                            "seamless",
                            "segmented_colors",
                            "sharp_contrast",
                            "street_art",
                            "studio_portrait",
                            "tablet_sketch",
                            "thin",
                            "urban_drama",
                            "urban_glow",
                            "urban_sketching",
                            "vanilla_dreams",
                            "vector_photo",
                            "village_realism",
                            "vivid_shapes",
                            "voxel",
                            "warm_folk",
                            "watercolor",
                            "young_adult_book",
                            "young_adult_book_2"
                        ],
                        "option_labels": {
                            "b_and_w": "Black & White",
                            "enterprise": "Enterprise",
                            "evening_light": "Evening Light",
                            "faded_nostalgia": "Faded Nostalgia",
                            "forest_life": "Forest Life",
                            "hard_flash": "Hard Flash",
                            "hdr": "HDR",
                            "motion_blur": "Motion Blur",
                            "mystic_naturalism": "Mystic Naturalism",
                            "natural_light": "Natural Light",
                            "natural_tones": "Natural Tones",
                            "organic_calm": "Organic Calm",
                            "real_life_glow": "Real-Life Glow",
                            "retro_realism": "Retro Realism",
                            "retro_snapshot": "Retro Snapshot",
                            "studio_portrait": "Studio Portrait",
                            "urban_drama": "Urban Drama",
                            "village_realism": "Village Realism",
                            "warm_folk": "Warm Folk",
                            "2d_art_poster": "2D Art Poster",
                            "2d_art_poster_2": "2D Art Poster 2",
                            "antiquarian": "Antiquarian",
                            "bold_fantasy": "Bold Fantasy",
                            "child_book": "Child Book",
                            "child_books": "Child Books",
                            "cover": "Cover",
                            "crosshatch": "Crosshatch",
                            "digital_engraving": "Digital Engraving",
                            "engraving_color": "Engraving Color",
                            "expressionism": "Expressionism",
                            "freehand_details": "Freehand Details",
                            "grain": "Grain",
                            "grain_20": "Grain 2.0",
                            "graphic_intensity": "Graphic Intensity",
                            "hand_drawn": "Hand-drawn",
                            "hand_drawn_outline": "Hand-drawn Outline",
                            "handmade_3d": "Handmade 3D",
                            "hard_comics": "Hard Comics",
                            "infantile_sketch": "Infantile Sketch",
                            "long_shadow": "Long Shadow",
                            "modern_folk": "Modern Folk",
                            "multicolor": "Multicolor",
                            "neon_calm": "Neon Calm",
                            "noir": "Noir",
                            "nostalgic_pastel": "Nostalgic Pastel",
                            "outline_details": "Outline Details",
                            "pastel_gradient": "Pastel Gradient",
                            "pastel_sketch": "Pastel Sketch",
                            "pixel_art": "Pixel Art",
                            "plastic": "Plastic",
                            "pop_art": "Pop Art",
                            "pop_renaissance": "Pop Renaissance",
                            "seamless": "Seamless",
                            "street_art": "Street Art",
                            "tablet_sketch": "Tablet Sketch",
                            "urban_glow": "Urban Glow",
                            "urban_sketching": "Urban Sketching",
                            "vanilla_dreams": "Vanilla Dreams",
                            "young_adult_book": "Young Adult Book",
                            "young_adult_book_2": "Young Adult Book 2",
                            "3d": "3D",
                            "80s": "80s",
                            "glow": "Glow",
                            "kawaii": "Kawaii",
                            "psychedelic": "Psychedelic",
                            "voxel": "Voxel",
                            "watercolor": "Watercolor",
                            "bold_stroke": "Bold Stroke",
                            "chemistry": "Chemistry",
                            "colored_stencil": "Colored Stencil",
                            "contour_pop_art": "Contour Pop Art",
                            "cosmics": "Cosmics",
                            "cutout": "Cutout",
                            "depressive": "Depressive",
                            "editorial": "Editorial",
                            "emotional_flat": "Emotional Flat",
                            "engraving": "Engraving",
                            "infographical": "Infographical",
                            "line_art": "Line Art",
                            "line_circuit": "Line Circuit",
                            "linocut": "Linocut",
                            "marker_outline": "Marker Outline",
                            "mosaic": "Mosaic",
                            "naivector": "Naivector",
                            "roundish_flat": "Roundish Flat",
                            "segmented_colors": "Segmented Colors",
                            "sharp_contrast": "Sharp Contrast",
                            "thin": "Thin",
                            "vector_photo": "Vector Photo",
                            "vivid_shapes": "Vivid Shapes",
                            "cartoon": "Cartoon",
                            "doodle_line_art": "Doodle Line Art",
                            "flat_2_0": "Flat 2.0",
                            "emblem_graffiti": "Graffiti",
                            "emblem_pop_art": "Pop Art",
                            "emblem_punk": "Punk",
                            "emblem_stamp": "Stamp",
                            "emblem_vintage": "Vintage Emblem",
                            "broken_line": "Broken Line",
                            "colored_outline": "Colored Outline",
                            "colored_shapes": "Colored Shape",
                            "colored_shapes_gradient": "Gradient Shape",
                            "doodle_fill": "Doodle",
                            "doodle_offset_fill": "Offset Doodle",
                            "offset_fill": "Offset Fill",
                            "outline": "Outline",
                            "outline_gradient": "Gradient Outline",
                            "pictogram": "Pictogram"
                        },
                        "custom_fields": {
                            "style_substyles": {
                                "realistic_image_V3": [
                                    "b_and_w",
                                    "enterprise",
                                    "evening_light",
                                    "faded_nostalgia",
                                    "forest_life",
                                    "hard_flash",
                                    "hdr",
                                    "motion_blur",
                                    "mystic_naturalism",
                                    "natural_light",
                                    "natural_tones",
                                    "organic_calm",
                                    "real_life_glow",
                                    "retro_realism",
                                    "retro_snapshot",
                                    "studio_portrait",
                                    "urban_drama",
                                    "village_realism",
                                    "warm_folk"
                                ],
                                "realistic_image_V2": [
                                    "b_and_w",
                                    "enterprise",
                                    "hard_flash",
                                    "hdr",
                                    "motion_blur",
                                    "natural_light",
                                    "studio_portrait"
                                ],
                                "digital_illustration_V3": [
                                    "2d_art_poster",
                                    "2d_art_poster_2",
                                    "antiquarian",
                                    "bold_fantasy",
                                    "child_book",
                                    "child_books",
                                    "cover",
                                    "crosshatch",
                                    "digital_engraving",
                                    "engraving_color",
                                    "expressionism",
                                    "freehand_details",
                                    "grain",
                                    "grain_20",
                                    "graphic_intensity",
                                    "hand_drawn",
                                    "hand_drawn_outline",
                                    "handmade_3d",
                                    "hard_comics",
                                    "infantile_sketch",
                                    "long_shadow",
                                    "modern_folk",
                                    "multicolor",
                                    "neon_calm",
                                    "noir",
                                    "nostalgic_pastel",
                                    "outline_details",
                                    "pastel_gradient",
                                    "pastel_sketch",
                                    "pixel_art",
                                    "plastic",
                                    "pop_art",
                                    "pop_renaissance",
                                    "seamless",
                                    "street_art",
                                    "tablet_sketch",
                                    "urban_glow",
                                    "urban_sketching",
                                    "vanilla_dreams",
                                    "young_adult_book",
                                    "young_adult_book_2"
                                ],
                                "digital_illustration_V2": [
                                    "2d_art_poster",
                                    "2d_art_poster_2",
                                    "3d",
                                    "80s",
                                    "engraving_color",
                                    "glow",
                                    "grain",
                                    "hand_drawn",
                                    "hand_drawn_outline",
                                    "handmade_3d",
                                    "infantile_sketch",
                                    "kawaii",
                                    "pixel_art",
                                    "plastic",
                                    "psychedelic",
                                    "seamless",
                                    "voxel",
                                    "watercolor"
                                ],
                                "vector_illustration_V3": [
                                    "bold_stroke",
                                    "chemistry",
                                    "colored_stencil",
                                    "contour_pop_art",
                                    "cosmics",
                                    "cutout",
                                    "depressive",
                                    "editorial",
                                    "emotional_flat",
                                    "engraving",
                                    "infographical",
                                    "line_art",
                                    "line_circuit",
                                    "linocut",
                                    "marker_outline",
                                    "mosaic",
                                    "naivector",
                                    "roundish_flat",
                                    "seamless",
                                    "segmented_colors",
                                    "sharp_contrast",
                                    "thin",
                                    "vector_photo",
                                    "vivid_shapes"
                                ],
                                "vector_illustration_V2": [
                                    "cartoon",
                                    "doodle_line_art",
                                    "engraving",
                                    "flat_2_0",
                                    "kawaii",
                                    "line_art",
                                    "line_circuit",
                                    "linocut",
                                    "seamless"
                                ],
                                "logo_raster_V3": [
                                    "emblem_graffiti",
                                    "emblem_pop_art",
                                    "emblem_punk",
                                    "emblem_stamp",
                                    "emblem_vintage"
                                ],
                                "icon_V2": [
                                    "broken_line",
                                    "colored_outline",
                                    "colored_shapes",
                                    "colored_shapes_gradient",
                                    "doodle_fill",
                                    "doodle_offset_fill",
                                    "offset_fill",
                                    "outline",
                                    "outline_gradient",
                                    "pictogram"
                                ]
                            }
                        },
                        "section": "Settings"
                    },
                    "style_id": {
                        "type": "text",
                        "required": false,
                        "api_field": "extra_body.style_id",
                        "label": "Custom Style ID",
                        "title": "Use a previously uploaded style as a reference; not compatible with Style and Substyle, which will be ignored if entered",
                        "section": "Settings"
                    },
                    "artistic_level": {
                        "type": "range",
                        "required": false,
                        "default": 0,
                        "api_field": "extra_body.controls.artistic_level",
                        "label": "Artistic Level",
                        "note": "V3 only",
                        "subtype": "int",
                        "min": 0,
                        "max": 5,
                        "step": 1,
                        "title": "Defines artistic tone of the output. At a lower level, for example, a person looks straight at the camera in a static and clean style. Higher, more dynamic and eccentric levels introduce movement and creativity Not compatible with Recraft V2 styles",
                        "section": "Settings"
                    },
                    "background_color": {
                        "type": "color",
                        "required": false,
                        "default": 0,
                        "api_field": "extra_body.controls.background_color",
                        "label": "Background Color",
                        "note": "V3 only",
                        "title": "Use given color as a desired background color",
                        "section": "Settings"
                    },
                    "colors": {
                        "type": "color_list",
                        "required": false,
                        "api_field": "extra_body.controls.colors",
                        "api_transform": "rgb_object_array",
                        "label": "Color Scheme",
                        "note": "V3 only. Array of {r,g,b} → [{rgb: [r,g,b]}, ...]",
                        "title": "",
                        "section": "Settings"
                    },
                    "size": {
                        "type": "enum",
                        "required": true,
                        "options": [
                            "1024x1024",
                            "1024x1280",
                            "1024x1365",
                            "1024x1434",
                            "1024x1536",
                            "1024x1707",
                            "1024x1820",
                            "1024x2048",
                            "1280x1024",
                            "1365x1024",
                            "1434x1024",
                            "1536x1024",
                            "1707x1024",
                            "1820x1024",
                            "2048x1024"
                        ],
                        "option_labels": {
                            "1024x1024": "1024 × 1024",
                            "1024x1280": "1024 × 1280",
                            "1024x1365": "1024 × 1365",
                            "1024x1434": "1024 × 1434",
                            "1024x1536": "1024 × 1536",
                            "1024x1707": "1024 × 1707",
                            "1024x1820": "1024 × 1820",
                            "1024x2048": "1024 × 2048",
                            "1280x1024": "1280 × 1024",
                            "1365x1024": "1365 × 1024",
                            "1434x1024": "1434 × 1024",
                            "1536x1024": "1536 × 1024",
                            "1707x1024": "1707 × 1024",
                            "1820x1024": "1820 × 1024",
                            "2048x1024": "2048 × 1024"
                        },
                        "api_field": "size",
                        "label": "Size",
                        "title": "Exact pixel dimensions for the generated image",
                        "section": "Output"
                    }
                },
                "hidden_api_fields": {
                    "n": 1,
                    "response_format": "url"
                },
                "response": {
                    "images_path": "data",
                    "image_url_path": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "fill": {
                "io": "image + mask + text → image",
                "description": "Inpaint masked region of an image",
                "endpoint": "https://external.api.recraft.ai/v1/images/inpaint",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "note": "V3 only. JS intentionally hides this (TODO comment: 'doesn't work')",
                        "title": "Description of what to exclude from an image",
                        "section": "Prompts"
                    },
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "multipart_file",
                        "api_field": "image",
                        "label": "Source",
                        "title": "",
                        "section": "Inputs"
                    },
                    "mask": {
                        "type": "image",
                        "required": true,
                        "principal_mask": true,
                        "mask_padding": "#000000",
                        "upload_as": "multipart_file",
                        "api_field": "mask",
                        "api_transform": "prepare_1bit_mask_file",
                        "label": "Mask",
                        "title": "Must consist of pure black and white pixels only, with white (typically) defining the area to be changed\n\nNot compatible with a mask prompt",
                        "section": "Inputs"
                    },
                    "style": {
                        "type": "enum",
                        "required": false,
                        "api_field": "style",
                        "label": "Style",
                        "title": "If creating a custom style, this will provide the base from which the new style will be built\n\nWhen generating images, this is not compatible with Style ID, which will override Style and Substyle if entered",
                        "options": [
                            "digital_illustration_V2",
                            "digital_illustration_V3",
                            "icon_V2",
                            "logo_raster_V3",
                            "realistic_image_V2",
                            "realistic_image_V3",
                            "vector_illustration_V2",
                            "vector_illustration_V3"
                        ],
                        "option_labels": {
                            "digital_illustration_V2": "Illustration (V2)",
                            "digital_illustration_V3": "Illustration (V3)",
                            "icon_V2": "Vector Icon (V2)",
                            "logo_raster_V3": "Graphic Design (V3)",
                            "realistic_image_V2": "Photorealism (V2)",
                            "realistic_image_V3": "Photorealism (V3)",
                            "vector_illustration_V2": "Vector Art (V2)",
                            "vector_illustration_V3": "Vector Art (V3)"
                        },
                        "section": "Settings"
                    },
                    "substyle": {
                        "type": "enum",
                        "required": false,
                        "api_field": "extra_body.substyle",
                        "label": "Substyle",
                        "title": "Visual substyle within the selected base style\n\nAvailable substyles change based on which base style is selected",
                        "options": [
                            "2d_art_poster",
                            "2d_art_poster_2",
                            "3d",
                            "80s",
                            "antiquarian",
                            "b_and_w",
                            "bold_fantasy",
                            "bold_stroke",
                            "broken_line",
                            "cartoon",
                            "chemistry",
                            "child_book",
                            "child_books",
                            "colored_outline",
                            "colored_shapes",
                            "colored_shapes_gradient",
                            "colored_stencil",
                            "contour_pop_art",
                            "cosmics",
                            "cover",
                            "crosshatch",
                            "cutout",
                            "depressive",
                            "digital_engraving",
                            "doodle_fill",
                            "doodle_line_art",
                            "doodle_offset_fill",
                            "editorial",
                            "emblem_graffiti",
                            "emblem_pop_art",
                            "emblem_punk",
                            "emblem_stamp",
                            "emblem_vintage",
                            "emotional_flat",
                            "engraving",
                            "engraving_color",
                            "enterprise",
                            "evening_light",
                            "expressionism",
                            "faded_nostalgia",
                            "flat_2_0",
                            "forest_life",
                            "freehand_details",
                            "glow",
                            "grain",
                            "grain_20",
                            "graphic_intensity",
                            "hand_drawn",
                            "hand_drawn_outline",
                            "handmade_3d",
                            "hard_comics",
                            "hard_flash",
                            "hdr",
                            "infantile_sketch",
                            "infographical",
                            "kawaii",
                            "line_art",
                            "line_circuit",
                            "linocut",
                            "long_shadow",
                            "marker_outline",
                            "modern_folk",
                            "mosaic",
                            "motion_blur",
                            "multicolor",
                            "mystic_naturalism",
                            "naivector",
                            "natural_light",
                            "natural_tones",
                            "neon_calm",
                            "noir",
                            "nostalgic_pastel",
                            "offset_fill",
                            "organic_calm",
                            "outline",
                            "outline_details",
                            "outline_gradient",
                            "pastel_gradient",
                            "pastel_sketch",
                            "pictogram",
                            "pixel_art",
                            "plastic",
                            "pop_art",
                            "pop_renaissance",
                            "psychedelic",
                            "real_life_glow",
                            "retro_realism",
                            "retro_snapshot",
                            "roundish_flat",
                            "seamless",
                            "segmented_colors",
                            "sharp_contrast",
                            "street_art",
                            "studio_portrait",
                            "tablet_sketch",
                            "thin",
                            "urban_drama",
                            "urban_glow",
                            "urban_sketching",
                            "vanilla_dreams",
                            "vector_photo",
                            "village_realism",
                            "vivid_shapes",
                            "voxel",
                            "warm_folk",
                            "watercolor",
                            "young_adult_book",
                            "young_adult_book_2"
                        ],
                        "option_labels": {
                            "b_and_w": "Black & White",
                            "enterprise": "Enterprise",
                            "evening_light": "Evening Light",
                            "faded_nostalgia": "Faded Nostalgia",
                            "forest_life": "Forest Life",
                            "hard_flash": "Hard Flash",
                            "hdr": "HDR",
                            "motion_blur": "Motion Blur",
                            "mystic_naturalism": "Mystic Naturalism",
                            "natural_light": "Natural Light",
                            "natural_tones": "Natural Tones",
                            "organic_calm": "Organic Calm",
                            "real_life_glow": "Real-Life Glow",
                            "retro_realism": "Retro Realism",
                            "retro_snapshot": "Retro Snapshot",
                            "studio_portrait": "Studio Portrait",
                            "urban_drama": "Urban Drama",
                            "village_realism": "Village Realism",
                            "warm_folk": "Warm Folk",
                            "2d_art_poster": "2D Art Poster",
                            "2d_art_poster_2": "2D Art Poster 2",
                            "antiquarian": "Antiquarian",
                            "bold_fantasy": "Bold Fantasy",
                            "child_book": "Child Book",
                            "child_books": "Child Books",
                            "cover": "Cover",
                            "crosshatch": "Crosshatch",
                            "digital_engraving": "Digital Engraving",
                            "engraving_color": "Engraving Color",
                            "expressionism": "Expressionism",
                            "freehand_details": "Freehand Details",
                            "grain": "Grain",
                            "grain_20": "Grain 2.0",
                            "graphic_intensity": "Graphic Intensity",
                            "hand_drawn": "Hand-drawn",
                            "hand_drawn_outline": "Hand-drawn Outline",
                            "handmade_3d": "Handmade 3D",
                            "hard_comics": "Hard Comics",
                            "infantile_sketch": "Infantile Sketch",
                            "long_shadow": "Long Shadow",
                            "modern_folk": "Modern Folk",
                            "multicolor": "Multicolor",
                            "neon_calm": "Neon Calm",
                            "noir": "Noir",
                            "nostalgic_pastel": "Nostalgic Pastel",
                            "outline_details": "Outline Details",
                            "pastel_gradient": "Pastel Gradient",
                            "pastel_sketch": "Pastel Sketch",
                            "pixel_art": "Pixel Art",
                            "plastic": "Plastic",
                            "pop_art": "Pop Art",
                            "pop_renaissance": "Pop Renaissance",
                            "seamless": "Seamless",
                            "street_art": "Street Art",
                            "tablet_sketch": "Tablet Sketch",
                            "urban_glow": "Urban Glow",
                            "urban_sketching": "Urban Sketching",
                            "vanilla_dreams": "Vanilla Dreams",
                            "young_adult_book": "Young Adult Book",
                            "young_adult_book_2": "Young Adult Book 2",
                            "3d": "3D",
                            "80s": "80s",
                            "glow": "Glow",
                            "kawaii": "Kawaii",
                            "psychedelic": "Psychedelic",
                            "voxel": "Voxel",
                            "watercolor": "Watercolor",
                            "bold_stroke": "Bold Stroke",
                            "chemistry": "Chemistry",
                            "colored_stencil": "Colored Stencil",
                            "contour_pop_art": "Contour Pop Art",
                            "cosmics": "Cosmics",
                            "cutout": "Cutout",
                            "depressive": "Depressive",
                            "editorial": "Editorial",
                            "emotional_flat": "Emotional Flat",
                            "engraving": "Engraving",
                            "infographical": "Infographical",
                            "line_art": "Line Art",
                            "line_circuit": "Line Circuit",
                            "linocut": "Linocut",
                            "marker_outline": "Marker Outline",
                            "mosaic": "Mosaic",
                            "naivector": "Naivector",
                            "roundish_flat": "Roundish Flat",
                            "segmented_colors": "Segmented Colors",
                            "sharp_contrast": "Sharp Contrast",
                            "thin": "Thin",
                            "vector_photo": "Vector Photo",
                            "vivid_shapes": "Vivid Shapes",
                            "cartoon": "Cartoon",
                            "doodle_line_art": "Doodle Line Art",
                            "flat_2_0": "Flat 2.0",
                            "emblem_graffiti": "Graffiti",
                            "emblem_pop_art": "Pop Art",
                            "emblem_punk": "Punk",
                            "emblem_stamp": "Stamp",
                            "emblem_vintage": "Vintage Emblem",
                            "broken_line": "Broken Line",
                            "colored_outline": "Colored Outline",
                            "colored_shapes": "Colored Shape",
                            "colored_shapes_gradient": "Gradient Shape",
                            "doodle_fill": "Doodle",
                            "doodle_offset_fill": "Offset Doodle",
                            "offset_fill": "Offset Fill",
                            "outline": "Outline",
                            "outline_gradient": "Gradient Outline",
                            "pictogram": "Pictogram"
                        },
                        "custom_fields": {
                            "style_substyles": {
                                "realistic_image_V3": [
                                    "b_and_w",
                                    "enterprise",
                                    "evening_light",
                                    "faded_nostalgia",
                                    "forest_life",
                                    "hard_flash",
                                    "hdr",
                                    "motion_blur",
                                    "mystic_naturalism",
                                    "natural_light",
                                    "natural_tones",
                                    "organic_calm",
                                    "real_life_glow",
                                    "retro_realism",
                                    "retro_snapshot",
                                    "studio_portrait",
                                    "urban_drama",
                                    "village_realism",
                                    "warm_folk"
                                ],
                                "realistic_image_V2": [
                                    "b_and_w",
                                    "enterprise",
                                    "hard_flash",
                                    "hdr",
                                    "motion_blur",
                                    "natural_light",
                                    "studio_portrait"
                                ],
                                "digital_illustration_V3": [
                                    "2d_art_poster",
                                    "2d_art_poster_2",
                                    "antiquarian",
                                    "bold_fantasy",
                                    "child_book",
                                    "child_books",
                                    "cover",
                                    "crosshatch",
                                    "digital_engraving",
                                    "engraving_color",
                                    "expressionism",
                                    "freehand_details",
                                    "grain",
                                    "grain_20",
                                    "graphic_intensity",
                                    "hand_drawn",
                                    "hand_drawn_outline",
                                    "handmade_3d",
                                    "hard_comics",
                                    "infantile_sketch",
                                    "long_shadow",
                                    "modern_folk",
                                    "multicolor",
                                    "neon_calm",
                                    "noir",
                                    "nostalgic_pastel",
                                    "outline_details",
                                    "pastel_gradient",
                                    "pastel_sketch",
                                    "pixel_art",
                                    "plastic",
                                    "pop_art",
                                    "pop_renaissance",
                                    "seamless",
                                    "street_art",
                                    "tablet_sketch",
                                    "urban_glow",
                                    "urban_sketching",
                                    "vanilla_dreams",
                                    "young_adult_book",
                                    "young_adult_book_2"
                                ],
                                "digital_illustration_V2": [
                                    "2d_art_poster",
                                    "2d_art_poster_2",
                                    "3d",
                                    "80s",
                                    "engraving_color",
                                    "glow",
                                    "grain",
                                    "hand_drawn",
                                    "hand_drawn_outline",
                                    "handmade_3d",
                                    "infantile_sketch",
                                    "kawaii",
                                    "pixel_art",
                                    "plastic",
                                    "psychedelic",
                                    "seamless",
                                    "voxel",
                                    "watercolor"
                                ],
                                "vector_illustration_V3": [
                                    "bold_stroke",
                                    "chemistry",
                                    "colored_stencil",
                                    "contour_pop_art",
                                    "cosmics",
                                    "cutout",
                                    "depressive",
                                    "editorial",
                                    "emotional_flat",
                                    "engraving",
                                    "infographical",
                                    "line_art",
                                    "line_circuit",
                                    "linocut",
                                    "marker_outline",
                                    "mosaic",
                                    "naivector",
                                    "roundish_flat",
                                    "seamless",
                                    "segmented_colors",
                                    "sharp_contrast",
                                    "thin",
                                    "vector_photo",
                                    "vivid_shapes"
                                ],
                                "vector_illustration_V2": [
                                    "cartoon",
                                    "doodle_line_art",
                                    "engraving",
                                    "flat_2_0",
                                    "kawaii",
                                    "line_art",
                                    "line_circuit",
                                    "linocut",
                                    "seamless"
                                ],
                                "logo_raster_V3": [
                                    "emblem_graffiti",
                                    "emblem_pop_art",
                                    "emblem_punk",
                                    "emblem_stamp",
                                    "emblem_vintage"
                                ],
                                "icon_V2": [
                                    "broken_line",
                                    "colored_outline",
                                    "colored_shapes",
                                    "colored_shapes_gradient",
                                    "doodle_fill",
                                    "doodle_offset_fill",
                                    "offset_fill",
                                    "outline",
                                    "outline_gradient",
                                    "pictogram"
                                ]
                            }
                        },
                        "section": "Settings"
                    },
                    "style_id": {
                        "type": "text",
                        "required": false,
                        "api_field": "extra_body.style_id",
                        "label": "Custom Style ID",
                        "title": "Use a previously uploaded style as a reference; not compatible with Style and Substyle, which will be ignored if entered",
                        "section": "Settings"
                    }
                },
                "hidden_api_fields": {
                    "n": 1,
                    "response_format": "url"
                },
                "response": {
                    "images_path": "data",
                    "image_url_path": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "upscale": {
                "io": "image → image",
                "description": "Upscale image (creative or crisp)",
                "sub_types": {
                    "creative": {
                        "endpoint": "https://external.api.recraft.ai/v1/images/creativeUpscale",
                        "label": "Creative",
                        "title": "CREATIVE: boosts resolution with a focus on refining small details and faces\n\nCRISP: increases image resolution, making the image sharper and cleaner"
                    },
                    "crisp": {
                        "endpoint": "https://external.api.recraft.ai/v1/images/crispUpscale",
                        "label": "Crisp",
                        "title": "CREATIVE: boosts resolution with a focus on refining small details and faces\n\nCRISP: increases image resolution, making the image sharper and cleaner"
                    }
                },
                "sub_type_field": "upscale_type_2",
                "sub_type_section": "Mode Subtype",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "shared_fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "multipart_file",
                        "api_field": "file",
                        "label": "Source",
                        "title": "",
                        "section": "Inputs"
                    }
                },
                "hidden_api_fields": {
                    "response_format": "url"
                },
                "response": {
                    "image_url_path": "image.url",
                    "response_format": "url"
                },
                "deprecated": false,
                "sub_type_label": "Type"
            },
            "variations": {
                "io": "image + text → image",
                "description": "Generate variations of an image (image-to-image)",
                "endpoint": "https://external.api.recraft.ai/v1/images/imageToImage",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "note": "V3 only. JS intentionally hides this.",
                        "title": "Description of what to exclude from an image",
                        "section": "Prompts"
                    },
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "multipart_file",
                        "api_field": "file",
                        "label": "Source",
                        "note": "MISMATCH: JS shows imagePromptRecraftFileField, Python reads image_source_4_file_base64",
                        "title": "",
                        "section": "Inputs"
                    },
                    "no_text": {
                        "type": "bool",
                        "required": false,
                        "api_field": "no_text",
                        "label": "No Text",
                        "note": "V3 only. JS hides ('doesn't appear to work').",
                        "title": "Do not embed text layouts",
                        "section": "Settings"
                    },
                    "style": {
                        "type": "enum",
                        "required": false,
                        "api_field": "style",
                        "label": "Style",
                        "title": "If creating a custom style, this will provide the base from which the new style will be built\n\nWhen generating images, this is not compatible with Style ID, which will override Style and Substyle if entered",
                        "options": [
                            "digital_illustration_V2",
                            "digital_illustration_V3",
                            "icon_V2",
                            "logo_raster_V3",
                            "realistic_image_V2",
                            "realistic_image_V3",
                            "vector_illustration_V2",
                            "vector_illustration_V3"
                        ],
                        "option_labels": {
                            "digital_illustration_V2": "Illustration (V2)",
                            "digital_illustration_V3": "Illustration (V3)",
                            "icon_V2": "Vector Icon (V2)",
                            "logo_raster_V3": "Graphic Design (V3)",
                            "realistic_image_V2": "Photorealism (V2)",
                            "realistic_image_V3": "Photorealism (V3)",
                            "vector_illustration_V2": "Vector Art (V2)",
                            "vector_illustration_V3": "Vector Art (V3)"
                        },
                        "section": "Settings"
                    },
                    "substyle": {
                        "type": "enum",
                        "required": false,
                        "api_field": "extra_body.substyle",
                        "label": "Substyle",
                        "title": "Visual substyle within the selected base style\n\nAvailable substyles change based on which base style is selected",
                        "options": [
                            "2d_art_poster",
                            "2d_art_poster_2",
                            "3d",
                            "80s",
                            "antiquarian",
                            "b_and_w",
                            "bold_fantasy",
                            "bold_stroke",
                            "broken_line",
                            "cartoon",
                            "chemistry",
                            "child_book",
                            "child_books",
                            "colored_outline",
                            "colored_shapes",
                            "colored_shapes_gradient",
                            "colored_stencil",
                            "contour_pop_art",
                            "cosmics",
                            "cover",
                            "crosshatch",
                            "cutout",
                            "depressive",
                            "digital_engraving",
                            "doodle_fill",
                            "doodle_line_art",
                            "doodle_offset_fill",
                            "editorial",
                            "emblem_graffiti",
                            "emblem_pop_art",
                            "emblem_punk",
                            "emblem_stamp",
                            "emblem_vintage",
                            "emotional_flat",
                            "engraving",
                            "engraving_color",
                            "enterprise",
                            "evening_light",
                            "expressionism",
                            "faded_nostalgia",
                            "flat_2_0",
                            "forest_life",
                            "freehand_details",
                            "glow",
                            "grain",
                            "grain_20",
                            "graphic_intensity",
                            "hand_drawn",
                            "hand_drawn_outline",
                            "handmade_3d",
                            "hard_comics",
                            "hard_flash",
                            "hdr",
                            "infantile_sketch",
                            "infographical",
                            "kawaii",
                            "line_art",
                            "line_circuit",
                            "linocut",
                            "long_shadow",
                            "marker_outline",
                            "modern_folk",
                            "mosaic",
                            "motion_blur",
                            "multicolor",
                            "mystic_naturalism",
                            "naivector",
                            "natural_light",
                            "natural_tones",
                            "neon_calm",
                            "noir",
                            "nostalgic_pastel",
                            "offset_fill",
                            "organic_calm",
                            "outline",
                            "outline_details",
                            "outline_gradient",
                            "pastel_gradient",
                            "pastel_sketch",
                            "pictogram",
                            "pixel_art",
                            "plastic",
                            "pop_art",
                            "pop_renaissance",
                            "psychedelic",
                            "real_life_glow",
                            "retro_realism",
                            "retro_snapshot",
                            "roundish_flat",
                            "seamless",
                            "segmented_colors",
                            "sharp_contrast",
                            "street_art",
                            "studio_portrait",
                            "tablet_sketch",
                            "thin",
                            "urban_drama",
                            "urban_glow",
                            "urban_sketching",
                            "vanilla_dreams",
                            "vector_photo",
                            "village_realism",
                            "vivid_shapes",
                            "voxel",
                            "warm_folk",
                            "watercolor",
                            "young_adult_book",
                            "young_adult_book_2"
                        ],
                        "option_labels": {
                            "b_and_w": "Black & White",
                            "enterprise": "Enterprise",
                            "evening_light": "Evening Light",
                            "faded_nostalgia": "Faded Nostalgia",
                            "forest_life": "Forest Life",
                            "hard_flash": "Hard Flash",
                            "hdr": "HDR",
                            "motion_blur": "Motion Blur",
                            "mystic_naturalism": "Mystic Naturalism",
                            "natural_light": "Natural Light",
                            "natural_tones": "Natural Tones",
                            "organic_calm": "Organic Calm",
                            "real_life_glow": "Real-Life Glow",
                            "retro_realism": "Retro Realism",
                            "retro_snapshot": "Retro Snapshot",
                            "studio_portrait": "Studio Portrait",
                            "urban_drama": "Urban Drama",
                            "village_realism": "Village Realism",
                            "warm_folk": "Warm Folk",
                            "2d_art_poster": "2D Art Poster",
                            "2d_art_poster_2": "2D Art Poster 2",
                            "antiquarian": "Antiquarian",
                            "bold_fantasy": "Bold Fantasy",
                            "child_book": "Child Book",
                            "child_books": "Child Books",
                            "cover": "Cover",
                            "crosshatch": "Crosshatch",
                            "digital_engraving": "Digital Engraving",
                            "engraving_color": "Engraving Color",
                            "expressionism": "Expressionism",
                            "freehand_details": "Freehand Details",
                            "grain": "Grain",
                            "grain_20": "Grain 2.0",
                            "graphic_intensity": "Graphic Intensity",
                            "hand_drawn": "Hand-drawn",
                            "hand_drawn_outline": "Hand-drawn Outline",
                            "handmade_3d": "Handmade 3D",
                            "hard_comics": "Hard Comics",
                            "infantile_sketch": "Infantile Sketch",
                            "long_shadow": "Long Shadow",
                            "modern_folk": "Modern Folk",
                            "multicolor": "Multicolor",
                            "neon_calm": "Neon Calm",
                            "noir": "Noir",
                            "nostalgic_pastel": "Nostalgic Pastel",
                            "outline_details": "Outline Details",
                            "pastel_gradient": "Pastel Gradient",
                            "pastel_sketch": "Pastel Sketch",
                            "pixel_art": "Pixel Art",
                            "plastic": "Plastic",
                            "pop_art": "Pop Art",
                            "pop_renaissance": "Pop Renaissance",
                            "seamless": "Seamless",
                            "street_art": "Street Art",
                            "tablet_sketch": "Tablet Sketch",
                            "urban_glow": "Urban Glow",
                            "urban_sketching": "Urban Sketching",
                            "vanilla_dreams": "Vanilla Dreams",
                            "young_adult_book": "Young Adult Book",
                            "young_adult_book_2": "Young Adult Book 2",
                            "3d": "3D",
                            "80s": "80s",
                            "glow": "Glow",
                            "kawaii": "Kawaii",
                            "psychedelic": "Psychedelic",
                            "voxel": "Voxel",
                            "watercolor": "Watercolor",
                            "bold_stroke": "Bold Stroke",
                            "chemistry": "Chemistry",
                            "colored_stencil": "Colored Stencil",
                            "contour_pop_art": "Contour Pop Art",
                            "cosmics": "Cosmics",
                            "cutout": "Cutout",
                            "depressive": "Depressive",
                            "editorial": "Editorial",
                            "emotional_flat": "Emotional Flat",
                            "engraving": "Engraving",
                            "infographical": "Infographical",
                            "line_art": "Line Art",
                            "line_circuit": "Line Circuit",
                            "linocut": "Linocut",
                            "marker_outline": "Marker Outline",
                            "mosaic": "Mosaic",
                            "naivector": "Naivector",
                            "roundish_flat": "Roundish Flat",
                            "segmented_colors": "Segmented Colors",
                            "sharp_contrast": "Sharp Contrast",
                            "thin": "Thin",
                            "vector_photo": "Vector Photo",
                            "vivid_shapes": "Vivid Shapes",
                            "cartoon": "Cartoon",
                            "doodle_line_art": "Doodle Line Art",
                            "flat_2_0": "Flat 2.0",
                            "emblem_graffiti": "Graffiti",
                            "emblem_pop_art": "Pop Art",
                            "emblem_punk": "Punk",
                            "emblem_stamp": "Stamp",
                            "emblem_vintage": "Vintage Emblem",
                            "broken_line": "Broken Line",
                            "colored_outline": "Colored Outline",
                            "colored_shapes": "Colored Shape",
                            "colored_shapes_gradient": "Gradient Shape",
                            "doodle_fill": "Doodle",
                            "doodle_offset_fill": "Offset Doodle",
                            "offset_fill": "Offset Fill",
                            "outline": "Outline",
                            "outline_gradient": "Gradient Outline",
                            "pictogram": "Pictogram"
                        },
                        "custom_fields": {
                            "style_substyles": {
                                "realistic_image_V3": [
                                    "b_and_w",
                                    "enterprise",
                                    "evening_light",
                                    "faded_nostalgia",
                                    "forest_life",
                                    "hard_flash",
                                    "hdr",
                                    "motion_blur",
                                    "mystic_naturalism",
                                    "natural_light",
                                    "natural_tones",
                                    "organic_calm",
                                    "real_life_glow",
                                    "retro_realism",
                                    "retro_snapshot",
                                    "studio_portrait",
                                    "urban_drama",
                                    "village_realism",
                                    "warm_folk"
                                ],
                                "realistic_image_V2": [
                                    "b_and_w",
                                    "enterprise",
                                    "hard_flash",
                                    "hdr",
                                    "motion_blur",
                                    "natural_light",
                                    "studio_portrait"
                                ],
                                "digital_illustration_V3": [
                                    "2d_art_poster",
                                    "2d_art_poster_2",
                                    "antiquarian",
                                    "bold_fantasy",
                                    "child_book",
                                    "child_books",
                                    "cover",
                                    "crosshatch",
                                    "digital_engraving",
                                    "engraving_color",
                                    "expressionism",
                                    "freehand_details",
                                    "grain",
                                    "grain_20",
                                    "graphic_intensity",
                                    "hand_drawn",
                                    "hand_drawn_outline",
                                    "handmade_3d",
                                    "hard_comics",
                                    "infantile_sketch",
                                    "long_shadow",
                                    "modern_folk",
                                    "multicolor",
                                    "neon_calm",
                                    "noir",
                                    "nostalgic_pastel",
                                    "outline_details",
                                    "pastel_gradient",
                                    "pastel_sketch",
                                    "pixel_art",
                                    "plastic",
                                    "pop_art",
                                    "pop_renaissance",
                                    "seamless",
                                    "street_art",
                                    "tablet_sketch",
                                    "urban_glow",
                                    "urban_sketching",
                                    "vanilla_dreams",
                                    "young_adult_book",
                                    "young_adult_book_2"
                                ],
                                "digital_illustration_V2": [
                                    "2d_art_poster",
                                    "2d_art_poster_2",
                                    "3d",
                                    "80s",
                                    "engraving_color",
                                    "glow",
                                    "grain",
                                    "hand_drawn",
                                    "hand_drawn_outline",
                                    "handmade_3d",
                                    "infantile_sketch",
                                    "kawaii",
                                    "pixel_art",
                                    "plastic",
                                    "psychedelic",
                                    "seamless",
                                    "voxel",
                                    "watercolor"
                                ],
                                "vector_illustration_V3": [
                                    "bold_stroke",
                                    "chemistry",
                                    "colored_stencil",
                                    "contour_pop_art",
                                    "cosmics",
                                    "cutout",
                                    "depressive",
                                    "editorial",
                                    "emotional_flat",
                                    "engraving",
                                    "infographical",
                                    "line_art",
                                    "line_circuit",
                                    "linocut",
                                    "marker_outline",
                                    "mosaic",
                                    "naivector",
                                    "roundish_flat",
                                    "seamless",
                                    "segmented_colors",
                                    "sharp_contrast",
                                    "thin",
                                    "vector_photo",
                                    "vivid_shapes"
                                ],
                                "vector_illustration_V2": [
                                    "cartoon",
                                    "doodle_line_art",
                                    "engraving",
                                    "flat_2_0",
                                    "kawaii",
                                    "line_art",
                                    "line_circuit",
                                    "linocut",
                                    "seamless"
                                ],
                                "logo_raster_V3": [
                                    "emblem_graffiti",
                                    "emblem_pop_art",
                                    "emblem_punk",
                                    "emblem_stamp",
                                    "emblem_vintage"
                                ],
                                "icon_V2": [
                                    "broken_line",
                                    "colored_outline",
                                    "colored_shapes",
                                    "colored_shapes_gradient",
                                    "doodle_fill",
                                    "doodle_offset_fill",
                                    "offset_fill",
                                    "outline",
                                    "outline_gradient",
                                    "pictogram"
                                ]
                            }
                        },
                        "section": "Settings"
                    },
                    "style_id": {
                        "type": "text",
                        "required": false,
                        "api_field": "extra_body.style_id",
                        "label": "Custom Style ID",
                        "title": "Use a previously uploaded style as a reference; not compatible with Style and Substyle, which will be ignored if entered",
                        "section": "Settings"
                    },
                    "artistic_level": {
                        "type": "range",
                        "required": false,
                        "default": 0,
                        "api_field": "extra_body.controls.artistic_level",
                        "label": "Artistic Level",
                        "note": "V3 only",
                        "subtype": "int",
                        "min": 0,
                        "max": 5,
                        "step": 1,
                        "title": "Defines artistic tone of the output. At a lower level, for example, a person looks straight at the camera in a static and clean style. Higher, more dynamic and eccentric levels introduce movement and creativity Not compatible with Recraft V2 styles",
                        "section": "Settings"
                    },
                    "background_color": {
                        "type": "color",
                        "required": false,
                        "default": 0,
                        "api_field": "extra_body.controls.background_color",
                        "label": "Background Color",
                        "note": "V3 only",
                        "title": "Use given color as a desired background color",
                        "section": "Settings"
                    },
                    "colors": {
                        "type": "color_list",
                        "required": false,
                        "api_field": "extra_body.controls.colors",
                        "api_transform": "rgb_object_array",
                        "label": "Color Scheme",
                        "note": "V3 only",
                        "title": "",
                        "section": "Settings"
                    },
                    "image_prompt_strength": {
                        "type": "range",
                        "required": false,
                        "label": "Image Prompt Strength",
                        "note": "Shown in JS but NOT sent by Python",
                        "subtype": "float",
                        "min": 0,
                        "max": 1,
                        "step": 0.1,
                        "title": "",
                        "section": "Settings"
                    },
                    "size": {
                        "type": "enum",
                        "required": false,
                        "label": "Size",
                        "note": "Shown in JS but NOT sent by Python",
                        "title": "Exact pixel dimensions for the generated image",
                        "options": [
                            "1024x1024",
                            "1024x1280",
                            "1024x1365",
                            "1024x1434",
                            "1024x1536",
                            "1024x1707",
                            "1024x1820",
                            "1024x2048",
                            "1280x1024",
                            "1365x1024",
                            "1434x1024",
                            "1536x1024",
                            "1707x1024",
                            "1820x1024",
                            "2048x1024"
                        ],
                        "option_labels": {
                            "1024x1024": "1024 × 1024 (1:1)",
                            "1024x1280": "1024 × 1280 (4:5)",
                            "1024x1365": "1024 × 1365 (1024:1365)",
                            "1024x1434": "1024 × 1434 (512:717)",
                            "1024x1536": "1024 × 1536 (2:3)",
                            "1024x1707": "1024 × 1707 (1024:1707)",
                            "1024x1820": "1024 × 1820 (256:455)",
                            "1024x2048": "1024 × 2048 (1:2)",
                            "1280x1024": "1280 × 1024 (5:4)",
                            "1365x1024": "1365 × 1024 (1365:1024)",
                            "1434x1024": "1434 × 1024 (717:512)",
                            "1536x1024": "1536 × 1024 (3:2)",
                            "1707x1024": "1707 × 1024 (1707:1024)",
                            "1820x1024": "1820 × 1024 (455:256)",
                            "2048x1024": "2048 × 1024 (2:1)"
                        },
                        "section": "Output"
                    }
                },
                "response": {
                    "image_url_path": "image.url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "vectorize": {
                "io": "image → SVG",
                "description": "Convert raster image to vector SVG",
                "endpoint": "https://external.api.recraft.ai/v1/images/vectorize",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "multipart_file",
                        "api_field": "file",
                        "label": "Source",
                        "title": "",
                        "section": "Inputs"
                    }
                },
                "hidden_api_fields": {
                    "response_format": "url"
                },
                "response": {
                    "image_url_path": "image.url",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "recraftv4": {
        "name": "Recraft V4 Pro",
        "shortname": "Recraft V4",
        "vendor": "Recraft",
        "family": "Recraft",
        "deprecated": false,
        "prompt_guide_url": "https://www.recraft.ai/blog/prompt-engineering-guide",
        "docs_url": "https://fal.ai/models/fal-ai/recraft/v4/pro/text-to-image",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "partner",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/recraft/v4/pro/text-to-image",
                    "texttovector": "fal-ai/recraft/v4/pro/text-to-vector"
                },
                "api_field_map": {
                    "output_format": null,
                    "size": "image_size"
                },
                "api_field_notes": {
                    "colors": "Passthrough  — same RGBColor {r,g,b} object array shape as direct API.",
                    "background_color": "Passthrough  — same RGBColor {r,g,b} shape as direct API.",
                    "size": "Registry WxH enum ('1024x1280' etc.) → fal presets ('portrait_4_3' etc.) or {width, height} object."
                },
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "platform_defaults": {
                    "size": "square_hd"
                },
                "platform_options": {
                    "size": [
                        {
                            "value": "landscape_16_9",
                            "label": "Landscape (16:9)"
                        },
                        {
                            "value": "landscape_4_3",
                            "label": "Landscape (4:3)"
                        },
                        {
                            "value": "portrait_16_9",
                            "label": "Portrait (9:16)"
                        },
                        {
                            "value": "portrait_4_3",
                            "label": "Portrait (3:4)"
                        },
                        {
                            "value": "square",
                            "label": "Square (1:1)"
                        },
                        {
                            "value": "square_hd",
                            "label": "Square HD (1:1)"
                        }
                    ]
                }
            },
            "replicate": {
                "name": "Replicate",
                "type": "byok",
                "dispatch": "replicate_run",
                "secret_id": "replicate",
                "env_var": "REPLICATE_API_TOKEN",
                "endpoints": {
                    "texttoimage": "recraft-ai/recraft-v4-pro",
                    "texttovector": "recraft-ai/recraft-v4-pro-svg"
                },
                "api_field_map": {
                    "background_color": null,
                    "colors": null,
                    "output_format": null,
                    "size": "size",
                    "disable_safety_checker": null
                },
                "platform_options": {
                    "size": [
                        {
                            "value": "1536x2688",
                            "label": "1536 × 2688 (Portrait Tall)"
                        },
                        {
                            "value": "1536x3072",
                            "label": "1536 × 3072 (Portrait Tallest)"
                        },
                        {
                            "value": "1664x2560",
                            "label": "1664 × 2560 (Portrait 2:3)"
                        },
                        {
                            "value": "1664x2688",
                            "label": "1664 × 2688 (Portrait Narrow)"
                        },
                        {
                            "value": "1792x2304",
                            "label": "1792 × 2304 (Portrait 3:4)"
                        },
                        {
                            "value": "1792x2432",
                            "label": "1792 × 2432 (Portrait)"
                        },
                        {
                            "value": "1792x2560",
                            "label": "1792 × 2560 (Portrait 5:7)"
                        },
                        {
                            "value": "2048x2048",
                            "label": "2048 × 2048 (Square)"
                        },
                        {
                            "value": "2304x1792",
                            "label": "2304 × 1792 (Landscape 4:3)"
                        },
                        {
                            "value": "2432x1792",
                            "label": "2432 × 1792 (Landscape)"
                        },
                        {
                            "value": "2560x1664",
                            "label": "2560 × 1664 (Landscape 3:2)"
                        },
                        {
                            "value": "2560x1792",
                            "label": "2560 × 1792 (Landscape 5:7)"
                        },
                        {
                            "value": "2688x1536",
                            "label": "2688 × 1536 (Landscape Wide)"
                        },
                        {
                            "value": "3072x1536",
                            "label": "3072 × 1536 (Landscape Widest)"
                        }
                    ]
                },
                "hidden_api_fields": {},
                "response": {
                    "response_format": "url"
                }
            },
            "wavespeed": {
                "name": "WaveSpeedAI",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "wavespeed",
                "env_var": "WAVESPEED_API_KEY",
                "poll_url_template": "https://api.wavespeed.ai/api/v3/predictions/{request_id}/result",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60,
                "endpoints": {
                    "texttoimage": "https://api.wavespeed.ai/api/v3/recraft-ai/recraft-v4-pro/text-to-image",
                    "texttovector": "https://api.wavespeed.ai/api/v3/recraft-ai/recraft-v4-pro/text-to-vector"
                },
                "api_field_map": {
                    "background_color": null,
                    "colors": null,
                    "output_format": null,
                    "size": "size",
                    "disable_safety_checker": null
                },
                "api_value_map": {
                    "size": {
                        "1024x1024": "1024*1024",
                        "1024x1280": "1024*1280",
                        "1024x1365": "1024*1365",
                        "1024x1536": "1024*1536",
                        "1024x1820": "1024*1820",
                        "1280x1024": "1280*1024",
                        "1365x1024": "1365*1024",
                        "1536x1024": "1536*1024",
                        "1820x1024": "1820*1024"
                    }
                },
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "response_format": "url"
                },
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            }
        },
        "constraints": {
            "prompt_max_length": 10000
        },
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate raster images from text (V4 Pro)",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "max_length": 10000,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "colors": {
                        "type": "color_list",
                        "required": false,
                        "section": "Settings",
                        "api_field": "colors",
                        "label": "Colors",
                        "note": "Array of RGBColor {r, g, b} objects",
                        "title": ""
                    },
                    "background_color": {
                        "type": "color",
                        "required": false,
                        "section": "Settings",
                        "api_field": "background_color",
                        "label": "Background Color",
                        "note": "RGBColor {r, g, b} object",
                        "title": ""
                    },
                    "size": {
                        "type": "enum",
                        "required": true,
                        "section": "Output",
                        "default": "1024x1024",
                        "options": [
                            "1024x1024",
                            "1024x1280",
                            "1024x1365",
                            "1024x1536",
                            "1024x1820",
                            "1280x1024",
                            "1365x1024",
                            "1536x1024",
                            "1820x1024"
                        ],
                        "option_labels": {
                            "1024x1024": "1024 × 1024",
                            "1024x1280": "1024 × 1280",
                            "1024x1365": "1024 × 1365",
                            "1024x1536": "1024 × 1536",
                            "1024x1820": "1024 × 1820",
                            "1280x1024": "1280 × 1024",
                            "1365x1024": "1365 × 1024",
                            "1536x1024": "1536 × 1024",
                            "1820x1024": "1820 × 1024"
                        },
                        "api_field": "image_size",
                        "label": "Size",
                        "title": ""
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WEBP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": ""
                    },
                    "disable_safety_checker": {
                        "type": "bool",
                        "required": false,
                        "section": "Safety",
                        "default": false,
                        "api_field": "enable_safety_checker",
                        "api_invert": true,
                        "warning_values": [
                            true
                        ],
                        "label": "Disable Safety Checker",
                        "note": "The API field is 'enable_safety_checker' with inverted logic",
                        "title": "Disable safety checker for generated images"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "texttovector": {
                "io": "text → SVG",
                "description": "Generate vector (SVG) images from text (V4 Pro)",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "max_length": 10000,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "colors": {
                        "type": "color_list",
                        "required": false,
                        "section": "Settings",
                        "api_field": "colors",
                        "label": "Colors",
                        "note": "Array of RGB Color {r, g, b} objects",
                        "title": ""
                    },
                    "background_color": {
                        "type": "color",
                        "required": false,
                        "section": "Settings",
                        "api_field": "background_color",
                        "label": "Background Color",
                        "note": "RGB Color {r, g, b} object",
                        "title": ""
                    },
                    "size": {
                        "type": "enum",
                        "required": true,
                        "section": "Output",
                        "default": "1024x1024",
                        "options": [
                            "1024x1024",
                            "1024x1280",
                            "1024x1365",
                            "1024x1536",
                            "1024x1820",
                            "1280x1024",
                            "1365x1024",
                            "1536x1024",
                            "1820x1024"
                        ],
                        "option_labels": {
                            "1024x1024": "1024 × 1024",
                            "1024x1280": "1024 × 1280",
                            "1024x1365": "1024 × 1365",
                            "1024x1536": "1024 × 1536",
                            "1024x1820": "1024 × 1820",
                            "1280x1024": "1280 × 1024",
                            "1365x1024": "1365 × 1024",
                            "1536x1024": "1536 × 1024",
                            "1820x1024": "1820 × 1024"
                        },
                        "api_field": "image_size",
                        "label": "Size",
                        "title": ""
                    },
                    "disable_safety_checker": {
                        "type": "bool",
                        "required": false,
                        "section": "Safety",
                        "default": false,
                        "api_field": "enable_safety_checker",
                        "api_invert": true,
                        "warning_values": [
                            true
                        ],
                        "label": "Disable Safety Checker",
                        "note": "The API field is 'enable_safety_checker' with inverted logic",
                        "title": "Disable safety checker for generated images"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_path": "url",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "reve": {
        "name": "Reve 1.5",
        "shortname": "Reve 1.5",
        "vendor": "Reve",
        "family": "Reve",
        "deprecated": false,
        "docs_url": "https://api.reve.com/console/213e6373-2465-470a-8948-8afc441c39e6/docs",
        "platforms": {
            "reve": {
                "name": "Reve",
                "type": "direct",
                "sdk": null,
                "dispatch": "http_json",
                "secret_id": "reve",
                "auth_header": "authorization",
                "auth_prefix": "Bearer"
            },
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "upload_as_map": {
                    "reference_images": "s3_url"
                },
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/reve/text-to-image",
                    "edit": {
                        "sub_types": {
                            "edit": "fal-ai/reve/edit",
                            "remix": "fal-ai/reve/remix"
                        }
                    }
                },
                "api_field_map": {
                    "prompt": "prompt",
                    "reference_images": "image_urls",
                    "source_image": "image_url"
                },
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            },
            "replicate": {
                "name": "Replicate",
                "type": "byok",
                "dispatch": "replicate_run",
                "secret_id": "replicate",
                "env_var": "REPLICATE_API_TOKEN",
                "endpoints": {
                    "texttoimage": "reve/create",
                    "edit": "reve/edit",
                    "remix": "reve/remix"
                },
                "api_field_map": {
                    "prompt": "prompt",
                    "source_image": "image"
                },
                "hidden_api_fields": {},
                "response": {
                    "response_format": "url"
                }
            },
            "wavespeed": {
                "name": "WaveSpeedAI",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "wavespeed",
                "env_var": "WAVESPEED_API_KEY",
                "poll_url_template": "https://api.wavespeed.ai/api/v3/predictions/{request_id}/result",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60,
                "endpoints": {
                    "remix": "https://api.wavespeed.ai/api/v3/reve/remix",
                    "texttoimage": "https://api.wavespeed.ai/api/v3/reve/text-to-image",
                    "edit": "https://api.wavespeed.ai/api/v3/reve/edit"
                },
                "api_field_map": {
                    "prompt": "prompt",
                    "source_image": "image"
                },
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "response_format": "url"
                },
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text",
                "endpoint": "https://api.reve.com/v1/image/create",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 2560,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "test_time_scaling": {
                        "type": "range",
                        "required": false,
                        "section": "Settings",
                        "default": null,
                        "min": 1,
                        "max": 15,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "test_time_scaling",
                        "label": "Test-Time Scaling",
                        "title": "Model spends more effort attempting better results. Does not increase processing time. Values above 5 rarely improve output"
                    },
                    "postprocessing": {
                        "type": "json",
                        "required": false,
                        "section": "Settings",
                        "default": null,
                        "api_field": "postprocessing",
                        "label": "Post-Processing",
                        "title": "Optional array of operations applied after generation\n\nCommon recipes:\n  Upscale 2×:  [{ \"process\": \"upscale\", \"upscale_factor\": 2 }]\n  Upscale 4×:  [{ \"process\": \"upscale\", \"upscale_factor\": 4 }]\n  Remove BG:   [{ \"process\": \"remove_background\" }]\n  Resize:      [{ \"process\": \"fit_image\", \"max_dim\": 512 }]\n  Effect:      [{ \"process\": \"effect\", \"effect_name\": \"cmyk_halftone\" }]\n\nOperations can be combined in one array"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "3:2",
                        "options": [
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "9:16",
                            "16:9"
                        ],
                        "option_labels": {
                            "1:1": "",
                            "2:3": "",
                            "3:2": "",
                            "3:4": "",
                            "4:3": "",
                            "9:16": "",
                            "16:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "note": "",
                        "title": ""
                    }
                },
                "hidden_api_fields": {
                    "version": "latest"
                },
                "response": {
                    "image_data_path": "image",
                    "response_format": "base64",
                    "output_mime": "image/png"
                },
                "deprecated": false
            },
            "edit": {
                "io": "image + text → image",
                "description": "Edit a single image or remix multiple reference images with a text prompt",
                "sub_type_field": "edit_method",
                "sub_type_label": "Method",
                "sub_type_section": "Mode Subtype",
                "shared_fields": {
                    "test_time_scaling": {
                        "type": "range",
                        "required": false,
                        "section": "Settings",
                        "default": null,
                        "min": 1,
                        "max": 15,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "test_time_scaling",
                        "label": "Test-Time Scaling",
                        "title": "Model spends more effort attempting better results. Does not increase processing time. Values above 5 rarely improve output"
                    },
                    "postprocessing": {
                        "type": "json",
                        "required": false,
                        "section": "Settings",
                        "default": null,
                        "api_field": "postprocessing",
                        "label": "Post-Processing",
                        "title": "Optional array of operations applied after generation\n\nCommon recipes:\n  Upscale 2×:  [{ \"process\": \"upscale\", \"upscale_factor\": 2 }]\n  Upscale 4×:  [{ \"process\": \"upscale\", \"upscale_factor\": 4 }]\n  Remove BG:   [{ \"process\": \"remove_background\" }]\n  Resize:      [{ \"process\": \"fit_image\", \"max_dim\": 512 }]\n  Effect:      [{ \"process\": \"effect\", \"effect_name\": \"cmyk_halftone\" }]\n\nOperations can be combined in one array"
                    }
                },
                "sub_types": {
                    "edit": {
                        "label": "Edit",
                        "endpoint": "https://api.reve.com/v1/image/edit",
                        "fields": {
                            "prompt": {
                                "type": "text",
                                "required": true,
                                "max": 2560,
                                "section": "Prompts",
                                "api_field": "edit_instruction",
                                "label": "Edit Instruction",
                                "title": "Description of how to edit the provided image. The maximum length is 2560 characters. This instruction will be automatically enhanced by the model"
                            },
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "principal_image": true,
                                "section": "Inputs",
                                "upload_as": "raw_base64",
                                "api_field": "reference_image",
                                "label": "",
                                "alt_label": "Reference Image",
                                "title": ""
                            }
                        }
                    },
                    "remix": {
                        "label": "Remix",
                        "endpoint": "https://api.reve.com/v1/image/remix",
                        "fields": {
                            "prompt": {
                                "type": "text",
                                "required": true,
                                "max": 2560,
                                "section": "Prompts",
                                "api_field": "prompt",
                                "label": "Prompt",
                                "title": "Description of the desired image. It may include XML img tags to refer to specific images by their index in the list. This prompt will be automatically enhanced by the model"
                            },
                            "reference_images": {
                                "type": "ref_list",
                                "required": true,
                                "max_items": 6,
                                "section": "Inputs",
                                "upload_as": "raw_base64_array",
                                "api_field": "reference_images",
                                "api_transform": "process_ref_list_into_raw_base64",
                                "label": "",
                                "alt_label": "Reference Images",
                                "title": ""
                            },
                            "aspect_ratio": {
                                "type": "enum",
                                "required": false,
                                "section": "Output",
                                "default": "auto",
                                "crop_override_value": "1:1",
                                "options": [
                                    "auto",
                                    "1:1",
                                    "2:3",
                                    "3:2",
                                    "3:4",
                                    "4:3",
                                    "9:16",
                                    "16:9"
                                ],
                                "option_labels": {
                                    "auto": "Auto",
                                    "1:1": "",
                                    "2:3": "",
                                    "3:2": "",
                                    "3:4": "",
                                    "4:3": "",
                                    "9:16": "",
                                    "16:9": ""
                                },
                                "exclude_api_values": ["auto"],
                                "api_field": "aspect_ratio",
                                "label": "Ratio",
                                "title": ""
                            }
                        }
                    }
                },
                "hidden_api_fields": {
                    "version": "latest"
                },
                "response": {
                    "image_data_path": "image",
                    "response_format": "base64",
                    "output_mime": "image/png"
                },
                "deprecated": false
            }
        }
    },
    "riverflow2pro": {
        "name": "Riverflow 2.0 Pro",
        "shortname": "Riverflow 2",
        "vendor": "Sourceful",
        "family": "Riverflow",
        "docs_url": "https://replicate.com/sourceful/riverflow-2.0-pro",
        "platforms": {
            "replicate": {
                "name": "Replicate",
                "type": "byok",
                "dispatch": "replicate_run",
                "secret_id": "replicate",
                "env_var": "REPLICATE_API_TOKEN",
                "endpoints": {
                    "texttoimage": "sourceful/riverflow-2.0-pro",
                    "edit": "sourceful/riverflow-2.0-pro"
                },
                "api_field_map": {
                    "init_images": "init_images[0]",
                    "super_resolution_refs": "super_resolution_refs[0]",
                    "font_url_1": "font_urls[0]",
                    "font_text_1": "font_texts[0]",
                    "font_url_2": "font_urls[1]",
                    "font_text_2": "font_texts[1]"
                },
                "hidden_api_fields": {}
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text with optional font control",
                "fields": {
                    "instruction": {
                        "type": "text",
                        "required": true,
                        "api_field": "instruction",
                        "label": "Instruction",
                        "title": "Generation instruction",
                        "section": "Prompts"
                    },
                    "enhance_prompt": {
                        "type": "bool",
                        "required": false,
                        "api_field": "enhance_prompt",
                        "label": "Enhance Prompt",
                        "title": "Let the model enhance your instruction before generating",
                        "section": "Prompts"
                    },
                    "font_url_1": {
                        "type": "string",
                        "required": false,
                        "api_field": "font_urls[0]",
                        "label": "Font 1 URL",
                        "placeholder": "https://example.com/font.ttf",
                        "title": "URL to a TTF, OTF, WOFF, or WOFF2 font file",
                        "section": "Font Control"
                    },
                    "font_text_1": {
                        "type": "text",
                        "required": false,
                        "max": 300,
                        "api_field": "font_texts[0]",
                        "label": "Font 1 Text",
                        "placeholder": "Text to render in font 1",
                        "title": "Text string to render using font 1 (max 300 characters)",
                        "section": "Font Control",
                        "visible_when": {
                            "font_url_1": "!empty"
                        }
                    },
                    "font_url_2": {
                        "type": "string",
                        "required": false,
                        "api_field": "font_urls[1]",
                        "label": "Font 2 URL",
                        "placeholder": "https://example.com/font2.ttf",
                        "title": "URL to a second font file",
                        "section": "Font Control"
                    },
                    "font_text_2": {
                        "type": "text",
                        "required": false,
                        "max": 300,
                        "api_field": "font_texts[1]",
                        "label": "Font 2 Text",
                        "placeholder": "Text to render in font 2",
                        "title": "Text string to render using font 2 (max 300 characters)",
                        "section": "Font Control",
                        "visible_when": {
                            "font_url_2": "!empty"
                        }
                    },
                    "max_iterations": {
                        "type": "range",
                        "required": false,
                        "default": 3,
                        "min": 1,
                        "max": 3,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "max_iterations",
                        "reasoning_flag": [
                            1,
                            2,
                            3
                        ],
                        "label": "Max Reasoning Iterations",
                        "title": "Number of internal reasoning iterations (higher = better quality, slower)",
                        "section": "Settings"
                    },
                    "resolution": {
                        "type": "enum",
                        "required": false,
                        "default": "1K",
                        "options": [
                            "1K",
                            "2K",
                            "4K"
                        ],
                        "option_labels": {
                            "1K": "1K",
                            "2K": "2K",
                            "4K": "4K"
                        },
                        "api_field": "resolution",
                        "label": "Resolution",
                        "title": "Target output resolution",
                        "section": "Output"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "default": "auto",
                        "options": [
                            "auto",
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "4:5",
                            "5:4",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "auto": "Auto"
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": "Aspect ratio for output",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "webp",
                        "options": [
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "png": "PNG",
                            "webp": "WEBP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Output image format; the model always outputs WEBP, which then is converted to PNG if PNG is selected",
                        "section": "Output"
                    },
                    "transparency": {
                        "type": "bool",
                        "required": false,
                        "api_field": "transparency",
                        "label": "Transparency",
                        "title": "Enable transparent background when supported",
                        "section": "Output"
                    },
                    "safety_checker": {
                        "type": "bool",
                        "required": false,
                        "default": true,
                        "api_field": "safety_checker",
                        "warning_values": [
                            false
                        ],
                        "label": "Safety Checker",
                        "title": "Enable Sourceful safety checker",
                        "section": "Safety"
                    }
                },
                "response": {
                    "images_path": "output",
                    "response_format": "url"
                }
            },
            "edit": {
                "io": "image + text → image",
                "description": "Edit or transform images using a text instruction",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "api_field": "instruction",
                        "label": "Instruction",
                        "title": "Generation instruction",
                        "section": "Prompts"
                    },
                    "enhance_prompt": {
                        "type": "bool",
                        "required": false,
                        "api_field": "enhance_prompt",
                        "label": "Enhance Prompt",
                        "title": "Let the model enhance your instruction before generating",
                        "section": "Prompts"
                    },
                    "init_images": {
                        "type": "image[]",
                        "required": true,
                        "max_items": 10,
                        "upload_as": "s3_public_url",
                        "api_field": "init_images",
                        "label": "",
                        "alt_label": "Input Images",
                        "title": "Images to edit (up to 10)",
                        "section": "Inputs"
                    },
                    "super_resolution_refs": {
                        "type": "image[]",
                        "required": false,
                        "max_items": 4,
                        "upload_as": "s3_public_url",
                        "api_field": "super_resolution_refs",
                        "label": "Detail Reference Images",
                        "title": "Optional reference images for detail restoration (up to 4). The model matches and corrects fine details like text, labels, and product artwork",
                        "section": "Input"
                    },
                    "font_url_1": {
                        "type": "string",
                        "required": false,
                        "api_field": "font_urls[0]",
                        "label": "Font 1 URL",
                        "placeholder": "https://example.com/font.ttf",
                        "title": "URL to a TTF, OTF, WOFF, or WOFF2 font file",
                        "section": "Font Control"
                    },
                    "font_text_1": {
                        "type": "text",
                        "required": false,
                        "max": 300,
                        "api_field": "font_texts[0]",
                        "label": "Font 1 Text",
                        "placeholder": "Text to render in font 1",
                        "title": "Text string to render using font 1 (max 300 characters)",
                        "section": "Font Control",
                        "visible_when": {
                            "font_url_1": "!empty"
                        }
                    },
                    "font_url_2": {
                        "type": "string",
                        "required": false,
                        "api_field": "font_urls[1]",
                        "label": "Font 2 URL",
                        "placeholder": "https://example.com/font2.ttf",
                        "title": "URL to a second font file",
                        "section": "Font Control"
                    },
                    "font_text_2": {
                        "type": "text",
                        "required": false,
                        "max": 300,
                        "api_field": "font_texts[1]",
                        "label": "Font 2 Text",
                        "placeholder": "Text to render in font 2",
                        "title": "Text string to render using font 2 (max 300 characters)",
                        "section": "Font Control",
                        "visible_when": {
                            "font_url_2": "!empty"
                        }
                    },
                    "max_iterations": {
                        "type": "range",
                        "required": false,
                        "default": 3,
                        "min": 1,
                        "max": 3,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "max_iterations",
                        "label": "Max Reasoning Iterations",
                        "title": "Number of internal reasoning iterations (higher = better quality, slower)",
                        "section": "Settings"
                    },
                    "resolution": {
                        "type": "enum",
                        "required": false,
                        "default": "1K",
                        "options": [
                            "1K",
                            "2K",
                            "4K"
                        ],
                        "option_labels": {
                            "1K": "1K",
                            "2K": "2K",
                            "4K": "4K"
                        },
                        "api_field": "resolution",
                        "label": "Resolution",
                        "title": "Target output resolution",
                        "section": "Output"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "default": "auto",
                        "crop_override_value": "1:1",
                        "options": [
                            "auto",
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "4:5",
                            "5:4",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "auto": "Auto"
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": "Aspect ratio for output",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "webp",
                        "options": [
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "png": "PNG",
                            "webp": "WEBP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Output image format; the model always outputs WEBP, which then is converted to PNG if PNG is selected",
                        "section": "Output"
                    },
                    "transparency": {
                        "type": "bool",
                        "required": false,
                        "api_field": "transparency",
                        "label": "Transparency",
                        "title": "Enable transparent background when supported",
                        "section": "Output"
                    }
                },
                "response": {
                    "images_path": "output",
                    "response_format": "url"
                }
            }
        }
    },
    "runwayml": {
        "name": "Runway ML Gen-4 Image",
        "shortname": "Runway ML Gen-4",
        "vendor": "Runway ML",
        "family": "Gen-4",
        "deprecated": false,
        "prompt_guide_url": "https://help.runwayml.com/hc/en-us/articles/35694045317139-Gen-4-Image-Prompting-Guide",
        "docs_url": "https://docs.dev.runwayml.com/api/#tag/Start-generating/paths/~1v1~1text_to_image/post",
        "platforms": {
            "runwayml": {
                "name": "Runway ML",
                "type": "direct",
                "sdk": null,
                "dispatch": "http_poll",
                "secret_id": "runwayml",
                "auth_header": "Authorization",
                "auth_prefix": "Bearer",
                "extra_headers": {
                    "X-Runway-Version": "2024-11-06"
                },
                "poll_interval_seconds": 1,
                "max_poll_attempts": 60
            },
            "wavespeed": {
                "name": "WaveSpeedAI",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "wavespeed",
                "env_var": "WAVESPEED_API_KEY",
                "poll_url_template": "https://api.wavespeed.ai/api/v3/predictions/{request_id}/result",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60,
                "endpoints": {
                    "texttoimage": "https://api.wavespeed.ai/api/v3/runwayml/gen4-image"
                },
                "api_field_map": {
                    "dimensions": "aspect_ratio",
                    "prompt": "prompt",
                    "public_figure_threshold": null,
                    "reference_images": "reference_images"
                },
                "platform_options": {
                    "dimensions": [
                        {
                            "value": "1:1",
                            "label": "Square (1:1)"
                        },
                        {
                            "value": "3:4",
                            "label": "Portrait (3:4)"
                        },
                        {
                            "value": "4:3",
                            "label": "Landscape (4:3)"
                        },
                        {
                            "value": "9:16",
                            "label": "Portrait (9:16)"
                        },
                        {
                            "value": "16:9",
                            "label": "Landscape (16:9)"
                        }
                    ]
                },
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "response_format": "url"
                },
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text with optional reference images",
                "endpoint": "https://api.dev.runwayml.com/v1/text_to_image",
                "poll_url_template": "https://api.dev.runwayml.com/v1/tasks/{id}",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "api_field": "promptText",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "reference_images": {
                        "type": "ref_list",
                        "required": false,
                        "api_field": "referenceImages",
                        "label": "Reference Images",
                        "note": "Passed through directly from params without transform",
                        "title": "To be used as references for the generated image output You can enter a tag used to refer to the image reference, from 3 to 16 characters in length. Tags must be alphanumeric (plus underscores) and start with a letter. You can refer to the reference image's tag in the prompt text with at-mention syntax: '@tag'\n\nTags are case-sensitive",
                        "section": "Inputs"
                    },
                    "dimensions": {
                        "type": "enum",
                        "required": false,
                        "default": "1024:1024",
                        "options": [
                            "720:1280",
                            "1024:1024",
                            "1080:1080",
                            "1080:1440",
                            "1080:1920",
                            "1168:880",
                            "1280:720",
                            "1360:768",
                            "1440:1080",
                            "1808:768",
                            "1920:1080",
                            "2112:912"
                        ],
                        "option_labels": {
                            "720:1280": "",
                            "1024:1024": "",
                            "1080:1080": "",
                            "1080:1440": "",
                            "1080:1920": "",
                            "1168:880": "",
                            "1280:720": "",
                            "1360:768": "",
                            "1440:1080": "",
                            "1808:768": "",
                            "1920:1080": "",
                            "2112:912": ""
                        },
                        "api_field": "ratio",
                        "label": "Output Dimensions",
                        "note": "Colon-separated pixel dimensions, not aspect ratios",
                        "title": "Output dimensions and aspect ratio of the output",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "min": 0,
                        "max": 4294967295,
                        "default": null,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results\n\nUse the same seed number and the same settings as a previous run to create a similar image",
                        "section": "Output"
                    },
                    "public_figure_threshold": {
                        "type": "enum",
                        "required": false,
                        "default": "auto",
                        "options": [
                            "auto",
                            "low"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "low": "Low"
                        },
                        "api_field": "contentModeration.publicFigureThreshold",
                        "warning_values": [
                            "low"
                        ],
                        "label": "Public Figure Threshold",
                        "title": "When set to low, the content moderation system will be less strict about preventing creating images that include recognizable public figures",
                        "section": "Safety"
                    }
                },
                "hidden_api_fields": {
                    "model": "gen4_image"
                },
                "response": {
                    "request_id_path": "id",
                    "status_path": "status",
                    "images_path": "output",
                    "response_format": "url"
                },
                "deprecated": false,
                "ui_extras": [
                    "pose_editor"
                ]
            }
        }
    },
    "seedream": {
        "name": "Seedream 4.5",
        "shortname": "Seedream 4.5",
        "vendor": "ByteDance",
        "family": "Seedream",
        "deprecated": false,
        "prompt_guide_url": "https://fal.ai/learn/devs/seedream-v4-5-prompt-guide",
        "docs_url": "https://replicate.com/bytedance/seedream-4.5",
        "platforms": {
            "replicate": {
                "name": "Replicate",
                "type": "byok",
                "dispatch": "replicate_run",
                "secret_id": "replicate",
                "env_var": "REPLICATE_API_TOKEN",
                "endpoints": {
                    "texttoimage": "bytedance/seedream-4.5",
                    "edit": "bytedance/seedream-4.5"
                },
                "api_field_map": {},
                "hidden_api_fields": {},
                "response": {
                    "response_format": "url"
                }
            },
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/bytedance/seedream/v4.5/text-to-image",
                    "edit": "fal-ai/bytedance/seedream/v4.5/edit"
                },
                "api_field_map": {
                    "aspect_ratio": null,
                    "height": "image_size.height",
                    "image_size": "image_size",
                    "reference_images": "image_urls",
                    "width": "image_size.width"
                },
                "api_field_notes": {
                    "image_size": "Registry enum ('2K'/'4K'/'custom') → fal preset ('auto_2K'/'auto_4K') or {width, height} object.",
                    "reference_images": "Edit mode. Registry sends ref_list via S3 public URLs to Replicate's 'image_input'. fal wants 'image_urls' array of strings. Same data shape, different field name."
                },
                "hidden_api_fields": {
                    "enable_safety_checker": true
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "api_value_map": {
                    "image_size": {
                        "2K": "auto_2K",
                        "4K": "auto_4K"
                    }
                }
            },
            "wavespeed": {
                "name": "WaveSpeedAI",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "wavespeed",
                "env_var": "WAVESPEED_API_KEY",
                "poll_url_template": "https://api.wavespeed.ai/api/v3/predictions/{request_id}/result",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60,
                "endpoints": {
                    "texttoimage": "https://api.wavespeed.ai/api/v3/bytedance/seedream-v4.5",
                    "edit": "https://api.wavespeed.ai/api/v3/bytedance/seedream-v4.5/edit"
                },
                "api_field_map": {
                    "aspect_ratio": null,
                    "height": null,
                    "image_size": "size",
                    "reference_images": "images",
                    "width": null
                },
                "api_value_map": {
                    "image_size": {
                        "2K": "2048*2048",
                        "4K": "4096*4096"
                    }
                },
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "response_format": "url"
                },
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 3000,
                        "structured_template": "basic",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "default": "2K",
                        "options": [
                            "2K",
                            "4K",
                            "custom"
                        ],
                        "option_labels": {
                            "2K": "",
                            "4K": "",
                            "custom": "Custom"
                        },
                        "api_field": "size",
                        "label": "Image Size",
                        "title": "Output image dimensions",
                        "section": "Output"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "1:1": "",
                            "2:3": "",
                            "3:2": "",
                            "3:4": "",
                            "4:3": "",
                            "9:16": "",
                            "16:9": "",
                            "21:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "note": "Only sent when image_size is NOT 'custom'",
                        "title": "Ratio of width to height",
                        "section": "Output"
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "default": 2048,
                        "api_field": "width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "",
                        "section": "Output"
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "default": 2048,
                        "api_field": "height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "",
                        "section": "Output"
                    }
                },
                "hidden_api_fields": {
                    "max_images": 1,
                    "sequential_image_generation": "disabled"
                },
                "response": {
                    "response_format": "url",
                    "note": "Replicate SDK returns iterator of FileOutput objects or URL strings"
                },
                "deprecated": false
            },
            "edit": {
                "io": "images + text → image",
                "description": "Edit images with text instructions",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 3000,
                        "structured_template": "basic",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "reference_images": {
                        "type": "ref_list",
                        "required": false,
                        "principal_image": true,
                        "upload_as": "s3_public_url",
                        "api_field": "image_input",
                        "api_transform": "get_public_url_from_s3",
                        "label": "",
                        "alt_label": "Input Images",
                        "note": "Refs uploaded to S3, public URLs passed to Replicate",
                        "title": "",
                        "section": "Inputs"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "default": "2K",
                        "crop_override_value": "4K",
                        "options": [
                            "2K",
                            "4K",
                            "custom"
                        ],
                        "option_labels": {
                            "2K": "",
                            "4K": "",
                            "custom": "Custom"
                        },
                        "api_field": "size",
                        "label": "Image Size",
                        "title": "Output image dimensions",
                        "section": "Output"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "crop_override_value": "1:1",
                        "options": [
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "9:16",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "1:1": "",
                            "2:3": "",
                            "3:2": "",
                            "3:4": "",
                            "4:3": "",
                            "9:16": "",
                            "16:9": "",
                            "21:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "note": "Only sent when image_size is NOT 'custom'. Empty value (no_value_label) omits field, letting API match input",
                        "title": "Ratio of width to height",
                        "no_value_label": "Match Input Image",
                        "section": "Output"
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "default": 2048,
                        "api_field": "width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "",
                        "section": "Output"
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "default": 2048,
                        "api_field": "height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "",
                        "section": "Output"
                    }
                },
                "hidden_api_fields": {
                    "max_images": 1,
                    "sequential_image_generation": "disabled"
                },
                "response": {
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "seedream5lite": {
        "name": "Seedream 5.0 Lite",
        "shortname": "Seedream 5.0",
        "vendor": "ByteDance",
        "family": "Seedream",
        "deprecated": false,
        "prompt_guide_url": "https://blog.fal.ai/seedream-5-0-lite-prompting-guide/",
        "docs_url": "https://fal.ai/models/fal-ai/bytedance/seedream/v5/lite/text-to-image/api",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/bytedance/seedream/v5/lite/text-to-image",
                    "edit": "fal-ai/bytedance/seedream/v5/lite/edit"
                },
                "api_field_map": {},
                "hidden_api_fields": {
                    "max_images": 1
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text using Seedream 5.0 Lite",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 3000,
                        "structured_template": "basic",
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "auto_2K",
                        "options": [
                            "auto_2K",
                            "auto_3K",
                            "square_hd",
                            "square",
                            "portrait_4_3",
                            "portrait_16_9",
                            "landscape_4_3",
                            "landscape_16_9",
                            "custom"
                        ],
                        "option_labels": {
                            "auto_2K": "Auto 2K",
                            "auto_3K": "Auto 3K",
                            "landscape_4_3": "Landscape 4:3",
                            "landscape_16_9": "Landscape 16:9",
                            "portrait_4_3": "Portrait 4:3",
                            "portrait_16_9": "Portrait 16:9",
                            "square": "Square",
                            "square_hd": "Square HD",
                            "custom": "Custom"
                        },
                        "api_field": "image_size",
                        "label": "Image Size",
                        "title": "The size of the generated image\n\nTotal pixels must be between 2560×1440 and 3072×3072. If the image size does not fall within these parameters, it will be adjusted by scaling"
                    },
                    "custom_width": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": 2048,
                        "min": 1920,
                        "max": 4096,
                        "step": 1,
                        "api_field": "custom_width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "Width and height must be between 1920 and 4096"
                    },
                    "custom_height": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": 2048,
                        "min": 1920,
                        "max": 4096,
                        "step": 1,
                        "api_field": "custom_height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "Width and height must be between 1920 and 4096"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 6,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of separate model generations to be run with the prompt"
                    },
                    "disable_safety_checker": {
                        "type": "bool",
                        "required": false,
                        "section": "Safety",
                        "default": false,
                        "api_field": "enable_safety_checker",
                        "api_invert": true,
                        "warning_values": [
                            true
                        ],
                        "label": "Disable Safety Checker",
                        "note": "The API field is 'enable_safety_checker' with inverted logic",
                        "title": "Disable safety checker for generated images"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            },
            "edit": {
                "io": "images + text → image",
                "description": "Edit images with text instructions using Seedream 5.0 Lite",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 3000,
                        "structured_template": "basic",
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "upload_as": "s3_public_url",
                        "api_field": "image_urls",
                        "label": "",
                        "alt_label": "Input Images",
                        "note": "Up to 10 reference images. If over 10 are sent, only the last 10 will be used.",
                        "title": ""
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "auto_2K",
                        "crop_override_value": "square_hd",
                        "options": [
                            "auto_2K",
                            "auto_3K",
                            "square_hd",
                            "square",
                            "portrait_4_3",
                            "portrait_16_9",
                            "landscape_4_3",
                            "landscape_16_9",
                            "custom"
                        ],
                        "option_labels": {
                            "auto_2K": "Auto 2K",
                            "auto_3K": "Auto 3K",
                            "landscape_4_3": "Landscape 4:3",
                            "landscape_16_9": "Landscape 16:9",
                            "portrait_4_3": "Portrait 4:3",
                            "portrait_16_9": "Portrait 16:9",
                            "square": "Square",
                            "square_hd": "Square HD",
                            "custom": "Custom"
                        },
                        "api_field": "image_size",
                        "label": "Image Size",
                        "title": "The size of the generated image\n\nTotal pixels must be between 2560×1440 and 3072×3072. If the image size does not fall within these parameters, it will be adjusted by scaling"
                    },
                    "custom_width": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": 2048,
                        "min": 1920,
                        "max": 4096,
                        "step": 1,
                        "api_field": "custom_width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "Width and height must be between 1920 and 4096"
                    },
                    "custom_height": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": 2048,
                        "min": 1920,
                        "max": 4096,
                        "step": 1,
                        "api_field": "custom_height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": "Width and height must be between 1920 and 4096"
                    },
                    "num_images": {
                        "type": "range",
                        "required": false,
                        "section": "Output",
                        "default": 1,
                        "min": 1,
                        "max": 6,
                        "step": 1,
                        "subtype": "int",
                        "api_field": "num_images",
                        "label": "Count",
                        "title": "Number of separate model generations to be run with the prompt"
                    },
                    "disable_safety_checker": {
                        "type": "bool",
                        "required": false,
                        "section": "Safety",
                        "default": false,
                        "api_field": "enable_safety_checker",
                        "api_invert": true,
                        "warning_values": [
                            true
                        ],
                        "label": "Disable Safety Checker",
                        "note": "The API field is 'enable_safety_checker' with inverted logic",
                        "title": "Disable safety checker for generated images"
                    }
                },
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "stable_diff": {
        "name": "Stable Image Ultra",
        "shortname": "Stable Image",
        "vendor": "Stability AI",
        "family": "Stable Diffusion",
        "deprecated": false,
        "prompt_guide_url": "https://stability.ai/learning-hub/stable-diffusion-3-5-prompt-guide",
        "docs_url": "https://platform.stability.ai/docs/api-reference",
        "platforms": {
            "stability": {
                "name": "Stability AI",
                "type": "direct",
                "sdk": null,
                "dispatch": "http_multipart",
                "secret_id": "stable_diff",
                "auth_header": "authorization",
                "auth_prefix": "Bearer",
                "_note_async": "Most modes are synchronous (base64 response). creative upscale and relight are async — POST returns an id, poll GET /v2beta/results/{id} or /v2beta/stable-image/upscale/creative/result/{id}.",
                "async_poll_url": "https://api.stability.ai/v2beta/results/{id}",
                "poll_interval_seconds": 10,
                "max_poll_attempts": 30
            }
        },
        "_note_content_type": "All modes use multipart/form-data. Content-Type header is NOT set manually — requests library sets it with boundary automatically.",
        "constraints": {},
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text using Stable Image Ultra. Optionally provide a style reference image to reroute to Style Guide.",
                "endpoint": "https://api.stability.ai/v2beta/stable-image/generate/ultra",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "_conditional_endpoint": {
                    "_comment": "When style_image is populated, dispatch should reroute to the Style Guide endpoint and map style_image → image api_field",
                    "trigger_field": "style_image",
                    "when_present": "https://api.stability.ai/v2beta/stable-image/control/style",
                    "api_field_map": {
                        "style_image": "image"
                    }
                },
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 10000,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "max": 10000,
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from the image",
                        "section": "Prompts"
                    },
                    "style_image": {
                        "type": "image",
                        "required": false,
                        "upload_as": "multipart_file",
                        "api_field": "image",
                        "label": "Style Reference",
                        "title": "Provide a reference image to guide the visual style of the output. When present, generation uses the Style Guide endpoint",
                        "section": "Style Guide"
                    },
                    "fidelity": {
                        "type": "range",
                        "required": false,
                        "default": 0.5,
                        "min": 0,
                        "max": 1,
                        "step": 0.05,
                        "subtype": "float",
                        "api_field": "fidelity",
                        "label": "Style Fidelity",
                        "title": "How closely the output style matches the reference image",
                        "visible_when": {
                            "style_image": "__present__"
                        },
                        "section": "Style"
                    },
                    "style_preset": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "3d-model",
                            "analog-film",
                            "anime",
                            "cinematic",
                            "comic-book",
                            "digital-art",
                            "enhance",
                            "fantasy-art",
                            "isometric",
                            "line-art",
                            "low-poly",
                            "modeling-compound",
                            "neon-punk",
                            "origami",
                            "photographic",
                            "pixel-art",
                            "tile-texture"
                        ],
                        "option_labels": {
                            "3d-model": "3D Model",
                            "analog-film": "Analog Film",
                            "anime": "Anime",
                            "cinematic": "Cinematic",
                            "comic-book": "Comic Book",
                            "digital-art": "Digital Art",
                            "enhance": "Enhance",
                            "fantasy-art": "Fantasy Art",
                            "isometric": "Isometric",
                            "line-art": "Line Art",
                            "low-poly": "Low Poly",
                            "modeling-compound": "Modeling Compound",
                            "neon-punk": "Neon Punk",
                            "origami": "Origami",
                            "photographic": "Photographic",
                            "pixel-art": "Pixel Art",
                            "tile-texture": "Tile Texture"
                        },
                        "api_field": "style_preset",
                        "label": "Style Preset",
                        "title": "Guides the image model towards a particular style",
                        "section": "Settings"
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "default": "1:1",
                        "options": [
                            "1:1",
                            "2:3",
                            "3:2",
                            "4:5",
                            "5:4",
                            "9:16",
                            "9:21",
                            "16:9",
                            "21:9"
                        ],
                        "option_labels": {
                            "1:1": "",
                            "2:3": "",
                            "3:2": "",
                            "4:5": "",
                            "5:4": "",
                            "9:16": "",
                            "9:21": "",
                            "16:9": "",
                            "21:9": ""
                        },
                        "api_field": "aspect_ratio",
                        "label": "Ratio",
                        "title": "Aspect ratio of the generated image",
                        "section": "Output"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 0,
                        "max": 4294967294,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Controls the randomness of the generation. Use 0 or omit for a random seed",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Output file format",
                        "section": "Output"
                    }
                },
                "response": {
                    "response_format": "base64"
                }
            },
            "edit": {
                "io": "image + text → image",
                "description": "Transform an image with a text prompt. Choose a control method: image-to-image with strength, sketch-guided, or structure-preserving",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "sub_type_field": "edit_type",
                "sub_type_label": "Control Method",
                "sub_type_section": "Mode Subtype",
                "shared_fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 10000,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "max": 10000,
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from the image",
                        "section": "Prompts"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 0,
                        "max": 4294967294,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Controls the randomness of the generation. Use 0 or omit for a random seed",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Output file format",
                        "section": "Output"
                    }
                },
                "sub_types": {
                    "sketch": {
                        "label": "Sketch",
                        "endpoint": "https://api.stability.ai/v2beta/stable-image/control/sketch",
                        "fields": {
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "upload_as": "multipart_file",
                                "api_field": "image",
                                "image_constraints": {
                                    "max_pixels": 9437184,
                                    "min_height": 64,
                                    "min_width": 64
                                },
                                "label": "Source",
                                "principal_image": true,
                                "title": "",
                                "section": "Inputs"
                            },
                            "control_strength": {
                                "type": "range",
                                "required": false,
                                "default": 0.7,
                                "min": 0,
                                "max": 1,
                                "step": 0.05,
                                "subtype": "float",
                                "api_field": "control_strength",
                                "label": "Control Strength",
                                "title": "How much the sketch constrains the output. 0 = ignore sketch, 1 = follow sketch closely",
                                "section": "Settings"
                            },
                            "style_preset": {
                                "type": "enum",
                                "required": false,
                                "default": null,
                                "options": [
                                    "3d-model",
                                    "analog-film",
                                    "anime",
                                    "cinematic",
                                    "comic-book",
                                    "digital-art",
                                    "enhance",
                                    "fantasy-art",
                                    "isometric",
                                    "line-art",
                                    "low-poly",
                                    "modeling-compound",
                                    "neon-punk",
                                    "origami",
                                    "photographic",
                                    "pixel-art",
                                    "tile-texture"
                                ],
                                "option_labels": {
                                    "3d-model": "3D Model",
                                    "analog-film": "Analog Film",
                                    "anime": "Anime",
                                    "cinematic": "Cinematic",
                                    "comic-book": "Comic Book",
                                    "digital-art": "Digital Art",
                                    "enhance": "Enhance",
                                    "fantasy-art": "Fantasy Art",
                                    "isometric": "Isometric",
                                    "line-art": "Line Art",
                                    "low-poly": "Low Poly",
                                    "modeling-compound": "Modeling Compound",
                                    "neon-punk": "Neon Punk",
                                    "origami": "Origami",
                                    "photographic": "Photographic",
                                    "pixel-art": "Pixel Art",
                                    "tile-texture": "Tile Texture"
                                },
                                "api_field": "style_preset",
                                "label": "Style Preset",
                                "title": "Guides the image model towards a particular style",
                                "section": "Settings"
                            }
                        }
                    },
                    "structure": {
                        "label": "Structure",
                        "endpoint": "https://api.stability.ai/v2beta/stable-image/control/structure",
                        "fields": {
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "upload_as": "multipart_file",
                                "api_field": "image",
                                "image_constraints": {
                                    "max_pixels": 9437184,
                                    "min_height": 64,
                                    "min_width": 64
                                },
                                "label": "Source",
                                "principal_image": true,
                                "title": "",
                                "section": "Inputs"
                            },
                            "control_strength": {
                                "type": "range",
                                "required": false,
                                "default": 0.7,
                                "min": 0,
                                "max": 1,
                                "step": 0.05,
                                "subtype": "float",
                                "api_field": "control_strength",
                                "label": "Control Strength",
                                "title": "How closely the output preserves the spatial structure of the input. 0 = free generation, 1 = strict structure match",
                                "section": "Settings"
                            },
                            "style_preset": {
                                "type": "enum",
                                "required": false,
                                "default": null,
                                "options": [
                                    "3d-model",
                                    "analog-film",
                                    "anime",
                                    "cinematic",
                                    "comic-book",
                                    "digital-art",
                                    "enhance",
                                    "fantasy-art",
                                    "isometric",
                                    "line-art",
                                    "low-poly",
                                    "modeling-compound",
                                    "neon-punk",
                                    "origami",
                                    "photographic",
                                    "pixel-art",
                                    "tile-texture"
                                ],
                                "option_labels": {
                                    "3d-model": "3D Model",
                                    "analog-film": "Analog Film",
                                    "anime": "Anime",
                                    "cinematic": "Cinematic",
                                    "comic-book": "Comic Book",
                                    "digital-art": "Digital Art",
                                    "enhance": "Enhance",
                                    "fantasy-art": "Fantasy Art",
                                    "isometric": "Isometric",
                                    "line-art": "Line Art",
                                    "low-poly": "Low Poly",
                                    "modeling-compound": "Modeling Compound",
                                    "neon-punk": "Neon Punk",
                                    "origami": "Origami",
                                    "photographic": "Photographic",
                                    "pixel-art": "Pixel Art",
                                    "tile-texture": "Tile Texture"
                                },
                                "api_field": "style_preset",
                                "label": "Style Preset",
                                "title": "Guides the image model towards a particular style",
                                "section": "Settings"
                            }
                        }
                    }
                },
                "response": {
                    "response_format": "base64"
                }
            },
            "fill": {
                "io": "image + mask + text → image",
                "description": "Modify specific regions of an image: inpaint with a mask, erase objects, or use text-guided search to replace or recolor elements.",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "sub_type_field": "fill_type",
                "sub_type_label": "Method",
                "sub_type_section": "Mode Subtype",
                "shared_fields": {
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 0,
                        "max": 4294967294,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Controls the randomness of the generation. Use 0 or omit for a random seed",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Output file format",
                        "section": "Output"
                    }
                },
                "sub_types": {
                    "inpaint": {
                        "label": "Inpaint",
                        "endpoint": "https://api.stability.ai/v2beta/stable-image/edit/inpaint",
                        "fields": {
                            "prompt": {
                                "type": "text",
                                "required": true,
                                "max": 10000,
                                "api_field": "prompt",
                                "label": "Prompt",
                                "title": "Describe in detail what you want to see in the output",
                                "section": "Prompts"
                            },
                            "negative_prompt": {
                                "type": "text",
                                "required": false,
                                "max": 10000,
                                "api_field": "negative_prompt",
                                "label": "Negative Prompt",
                                "title": "Description of what to exclude from the image",
                                "section": "Prompts"
                            },
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "upload_as": "multipart_file",
                                "api_field": "image",
                                "image_constraints": {
                                    "max_pixels": 9437184,
                                    "min_height": 64,
                                    "min_width": 64
                                },
                                "label": "Source",
                                "principal_image": true,
                                "title": "",
                                "section": "Inputs"
                            },
                            "mask": {
                                "type": "image",
                                "required": false,
                                "principal_mask": true,
                                "mask_padding": "#000000",
                                "upload_as": "multipart_file",
                                "api_field": "mask",
                                "label": "Mask",
                                "title": "Black-and-white image controlling per-pixel strength. White = full effect, black = no effect. If omitted, the alpha channel of the source image is used",
                                "section": "Inputs"
                            },
                            "grow_mask": {
                                "type": "range",
                                "required": false,
                                "default": 5,
                                "min": 0,
                                "max": 100,
                                "step": 1,
                                "subtype": "int",
                                "api_field": "grow_mask",
                                "label": "Grow Mask",
                                "title": "Expands mask edges outward by this many pixels, with blur to smooth transitions",
                                "section": "Settings"
                            },
                            "style_preset": {
                                "type": "enum",
                                "required": false,
                                "default": null,
                                "options": [
                                    "3d-model",
                                    "analog-film",
                                    "anime",
                                    "cinematic",
                                    "comic-book",
                                    "digital-art",
                                    "enhance",
                                    "fantasy-art",
                                    "isometric",
                                    "line-art",
                                    "low-poly",
                                    "modeling-compound",
                                    "neon-punk",
                                    "origami",
                                    "photographic",
                                    "pixel-art",
                                    "tile-texture"
                                ],
                                "option_labels": {
                                    "3d-model": "3D Model",
                                    "analog-film": "Analog Film",
                                    "anime": "Anime",
                                    "cinematic": "Cinematic",
                                    "comic-book": "Comic Book",
                                    "digital-art": "Digital Art",
                                    "enhance": "Enhance",
                                    "fantasy-art": "Fantasy Art",
                                    "isometric": "Isometric",
                                    "line-art": "Line Art",
                                    "low-poly": "Low Poly",
                                    "modeling-compound": "Modeling Compound",
                                    "neon-punk": "Neon Punk",
                                    "origami": "Origami",
                                    "photographic": "Photographic",
                                    "pixel-art": "Pixel Art",
                                    "tile-texture": "Tile Texture"
                                },
                                "api_field": "style_preset",
                                "label": "Style Preset",
                                "title": "Guides the image model towards a particular style",
                                "section": "Settings"
                            }
                        }
                    },
                    "erase": {
                        "label": "Erase",
                        "endpoint": "https://api.stability.ai/v2beta/stable-image/edit/erase",
                        "_note": "The OpenAPI spec lists prompt as required but omits it from properties. Erase fills contextually without a prompt.",
                        "fields": {
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "upload_as": "multipart_file",
                                "api_field": "image",
                                "image_constraints": {
                                    "max_pixels": 9437184,
                                    "min_height": 64,
                                    "min_width": 64
                                },
                                "label": "Source",
                                "principal_image": true,
                                "title": "The image you wish to erase from",
                                "section": "Inputs"
                            },
                            "mask": {
                                "type": "image",
                                "required": false,
                                "principal_mask": true,
                                "mask_padding": "#000000",
                                "upload_as": "multipart_file",
                                "api_field": "mask",
                                "label": "Mask",
                                "title": "Black-and-white image controlling per-pixel strength. White = full effect, black = no effect. If omitted, the alpha channel of the source image is used",
                                "section": "Inputs"
                            },
                            "grow_mask": {
                                "type": "range",
                                "required": false,
                                "default": 5,
                                "min": 0,
                                "max": 20,
                                "step": 1,
                                "subtype": "int",
                                "api_field": "grow_mask",
                                "label": "Grow Mask",
                                "title": "Expands mask edges outward by this many pixels, with blur to smooth transitions",
                                "section": "Settings"
                            }
                        }
                    },
                    "search_replace": {
                        "label": "Search and Replace",
                        "endpoint": "https://api.stability.ai/v2beta/stable-image/edit/search-and-replace",
                        "fields": {
                            "search_prompt": {
                                "type": "text",
                                "required": true,
                                "max": 10000,
                                "api_field": "search_prompt",
                                "label": "Search For",
                                "title": "Short description of the object or element to find and replace in the image",
                                "section": "Prompts"
                            },
                            "prompt": {
                                "type": "text",
                                "required": true,
                                "max": 10000,
                                "api_field": "prompt",
                                "label": "Prompt",
                                "title": "What to replace the found element with",
                                "section": "Prompts"
                            },
                            "negative_prompt": {
                                "type": "text",
                                "required": false,
                                "max": 10000,
                                "api_field": "negative_prompt",
                                "label": "Negative Prompt",
                                "title": "Description of what to exclude from the image",
                                "section": "Prompts"
                            },
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "upload_as": "multipart_file",
                                "api_field": "image",
                                "image_constraints": {
                                    "max_pixels": 9437184,
                                    "min_height": 64,
                                    "min_width": 64
                                },
                                "label": "Source",
                                "principal_image": true,
                                "title": "An image containing content you wish to replace",
                                "section": "Inputs"
                            },
                            "grow_mask": {
                                "type": "range",
                                "required": false,
                                "default": 3,
                                "min": 0,
                                "max": 20,
                                "step": 1,
                                "subtype": "int",
                                "api_field": "grow_mask",
                                "label": "Grow Mask",
                                "title": "Expands mask edges outward by this many pixels, with blur to smooth transitions",
                                "section": "Settings"
                            },
                            "style_preset": {
                                "type": "enum",
                                "required": false,
                                "default": null,
                                "options": [
                                    "3d-model",
                                    "analog-film",
                                    "anime",
                                    "cinematic",
                                    "comic-book",
                                    "digital-art",
                                    "enhance",
                                    "fantasy-art",
                                    "isometric",
                                    "line-art",
                                    "low-poly",
                                    "modeling-compound",
                                    "neon-punk",
                                    "origami",
                                    "photographic",
                                    "pixel-art",
                                    "tile-texture"
                                ],
                                "option_labels": {
                                    "3d-model": "3D Model",
                                    "analog-film": "Analog Film",
                                    "anime": "Anime",
                                    "cinematic": "Cinematic",
                                    "comic-book": "Comic Book",
                                    "digital-art": "Digital Art",
                                    "enhance": "Enhance",
                                    "fantasy-art": "Fantasy Art",
                                    "isometric": "Isometric",
                                    "line-art": "Line Art",
                                    "low-poly": "Low Poly",
                                    "modeling-compound": "Modeling Compound",
                                    "neon-punk": "Neon Punk",
                                    "origami": "Origami",
                                    "photographic": "Photographic",
                                    "pixel-art": "Pixel Art",
                                    "tile-texture": "Tile Texture"
                                },
                                "api_field": "style_preset",
                                "label": "Style Preset",
                                "title": "Guides the image model towards a particular style",
                                "section": "Settings"
                            }
                        }
                    },
                    "search_recolor": {
                        "label": "Search and Recolor",
                        "endpoint": "https://api.stability.ai/v2beta/stable-image/edit/search-and-recolor",
                        "fields": {
                            "select_prompt": {
                                "type": "text",
                                "required": true,
                                "max": 10000,
                                "api_field": "select_prompt",
                                "label": "Select Object",
                                "title": "Short description of the object to find and recolor in the image",
                                "section": "Prompts"
                            },
                            "prompt": {
                                "type": "text",
                                "required": true,
                                "max": 10000,
                                "api_field": "prompt",
                                "label": "Prompt",
                                "title": "Describe the desired color or appearance for the selected object",
                                "section": "Prompts"
                            },
                            "negative_prompt": {
                                "type": "text",
                                "required": false,
                                "max": 10000,
                                "api_field": "negative_prompt",
                                "label": "Negative Prompt",
                                "title": "Description of what to exclude from the image",
                                "section": "Prompts"
                            },
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "upload_as": "multipart_file",
                                "api_field": "image",
                                "image_constraints": {
                                    "max_pixels": 9437184,
                                    "min_height": 64,
                                    "min_width": 64
                                },
                                "label": "Source",
                                "principal_image": true,
                                "title": "An image containing content you wish to recolor",
                                "section": "Inputs"
                            },
                            "grow_mask": {
                                "type": "range",
                                "required": false,
                                "default": 3,
                                "min": 0,
                                "max": 20,
                                "step": 1,
                                "subtype": "int",
                                "api_field": "grow_mask",
                                "label": "Grow Mask",
                                "title": "Expands mask edges outward by this many pixels, with blur to smooth transitions",
                                "section": "Settings"
                            },
                            "style_preset": {
                                "type": "enum",
                                "required": false,
                                "default": null,
                                "options": [
                                    "3d-model",
                                    "analog-film",
                                    "anime",
                                    "cinematic",
                                    "comic-book",
                                    "digital-art",
                                    "enhance",
                                    "fantasy-art",
                                    "isometric",
                                    "line-art",
                                    "low-poly",
                                    "modeling-compound",
                                    "neon-punk",
                                    "origami",
                                    "photographic",
                                    "pixel-art",
                                    "tile-texture"
                                ],
                                "option_labels": {
                                    "3d-model": "3D Model",
                                    "analog-film": "Analog Film",
                                    "anime": "Anime",
                                    "cinematic": "Cinematic",
                                    "comic-book": "Comic Book",
                                    "digital-art": "Digital Art",
                                    "enhance": "Enhance",
                                    "fantasy-art": "Fantasy Art",
                                    "isometric": "Isometric",
                                    "line-art": "Line Art",
                                    "low-poly": "Low Poly",
                                    "modeling-compound": "Modeling Compound",
                                    "neon-punk": "Neon Punk",
                                    "origami": "Origami",
                                    "photographic": "Photographic",
                                    "pixel-art": "Pixel Art",
                                    "tile-texture": "Tile Texture"
                                },
                                "api_field": "style_preset",
                                "label": "Style Preset",
                                "title": "Guides the image model towards a particular style",
                                "section": "Settings"
                            }
                        }
                    }
                },
                "response": {
                    "response_format": "base64"
                }
            },
            "expand": {
                "io": "image → image",
                "description": "Extend an image in any direction, filling new areas with contextually appropriate content.",
                "endpoint": "https://api.stability.ai/v2beta/stable-image/edit/outpaint",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": false,
                        "max": 10000,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Optional guidance for the generated content in the expanded areas",
                        "section": "Prompts"
                    },
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "multipart_file",
                        "api_field": "image",
                        "label": "Source",
                        "principal_image": true,
                        "title": "",
                        "section": "Inputs"
                    },
                    "left": {
                        "type": "int",
                        "required": false,
                        "default": 0,
                        "min": 0,
                        "max": 2000,
                        "step": 1,
                        "api_field": "left",
                        "label": "Left",
                        "title": "Pixels to expand on the left. At least one direction must be non-zero",
                        "section": "Expansion"
                    },
                    "right": {
                        "type": "int",
                        "required": false,
                        "default": 0,
                        "min": 0,
                        "max": 2000,
                        "step": 1,
                        "api_field": "right",
                        "label": "Right",
                        "title": "Pixels to expand on the right",
                        "section": "Expansion"
                    },
                    "up": {
                        "type": "int",
                        "required": false,
                        "default": 0,
                        "min": 0,
                        "max": 2000,
                        "step": 1,
                        "api_field": "up",
                        "label": "Up",
                        "title": "Pixels to expand on the top",
                        "section": "Expansion"
                    },
                    "down": {
                        "type": "int",
                        "required": false,
                        "default": 0,
                        "min": 0,
                        "max": 2000,
                        "step": 1,
                        "api_field": "down",
                        "label": "Down",
                        "title": "Pixels to expand on the bottom",
                        "section": "Expansion"
                    },
                    "creativity": {
                        "type": "range",
                        "required": false,
                        "default": 0.5,
                        "min": 0,
                        "max": 1,
                        "step": 0.05,
                        "subtype": "float",
                        "api_field": "creativity",
                        "label": "Creativity",
                        "title": "Higher values produce more creative content in the expanded regions",
                        "section": "Settings"
                    },
                    "style_preset": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "3d-model",
                            "analog-film",
                            "anime",
                            "cinematic",
                            "comic-book",
                            "digital-art",
                            "enhance",
                            "fantasy-art",
                            "isometric",
                            "line-art",
                            "low-poly",
                            "modeling-compound",
                            "neon-punk",
                            "origami",
                            "photographic",
                            "pixel-art",
                            "tile-texture"
                        ],
                        "option_labels": {
                            "3d-model": "3D Model",
                            "analog-film": "Analog Film",
                            "anime": "Anime",
                            "cinematic": "Cinematic",
                            "comic-book": "Comic Book",
                            "digital-art": "Digital Art",
                            "enhance": "Enhance",
                            "fantasy-art": "Fantasy Art",
                            "isometric": "Isometric",
                            "line-art": "Line Art",
                            "low-poly": "Low Poly",
                            "modeling-compound": "Modeling Compound",
                            "neon-punk": "Neon Punk",
                            "origami": "Origami",
                            "photographic": "Photographic",
                            "pixel-art": "Pixel Art",
                            "tile-texture": "Tile Texture"
                        },
                        "api_field": "style_preset",
                        "label": "Style Preset",
                        "title": "Guides the image model towards a particular style",
                        "section": "Settings"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 0,
                        "max": 4294967294,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Controls the randomness of the generation. Use 0 or omit for a random seed",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Output file format",
                        "section": "Output"
                    }
                },
                "response": {
                    "response_format": "base64"
                }
            },
            "bgremove": {
                "io": "image → image",
                "description": "Remove the background from an image, returning the subject on a transparent background",
                "endpoint": "https://api.stability.ai/v2beta/stable-image/edit/remove-background",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "fields": {
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "multipart_file",
                        "api_field": "image",
                        "image_constraints": {
                            "max_pixels": 4194304,
                            "min_height": 64,
                            "min_width": 64
                        },
                        "label": "Source",
                        "principal_image": true,
                        "title": "",
                        "section": "Inputs"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "png",
                        "options": [
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Output file format",
                        "section": "Output"
                    }
                },
                "response": {
                    "response_format": "base64"
                }
            },
            "relight": {
                "io": "image + text → image",
                "description": "Replace the background and relight the subject of an image. Supports light direction, reference images for background style and lighting, and fine control over subject preservation",
                "endpoint": "https://api.stability.ai/v2beta/stable-image/edit/replace-background-and-relight",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "_async": true,
                "_async_note": "Returns generation id. Poll GET /v2beta/results/{id} for the result.",
                "fields": {
                    "background_prompt": {
                        "type": "text",
                        "required": false,
                        "max": 10000,
                        "api_field": "background_prompt",
                        "label": "Background Prompt",
                        "title": "Describe the desired background scene, environment, or setting",
                        "section": "Prompts"
                    },
                    "foreground_prompt": {
                        "type": "text",
                        "required": false,
                        "max": 10000,
                        "api_field": "foreground_prompt",
                        "label": "Subject Description",
                        "title": "Description of the subject. Helps prevent background elements from bleeding into the subject",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "max": 10000,
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from the image",
                        "section": "Prompts"
                    },
                    "subject_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "multipart_file",
                        "api_field": "subject_image",
                        "image_constraints": {
                            "max_pixels": 9437184,
                            "min_height": 64,
                            "min_width": 64
                        },
                        "label": "Subject Image",
                        "principal_image": true,
                        "title": "",
                        "section": "Inputs"
                    },
                    "background_reference": {
                        "type": "image",
                        "required": false,
                        "upload_as": "multipart_file",
                        "api_field": "background_reference",
                        "label": "Background Style Reference",
                        "title": "An image whose style will inform the generated background",
                        "section": "References"
                    },
                    "light_reference": {
                        "type": "image",
                        "required": false,
                        "upload_as": "multipart_file",
                        "api_field": "light_reference",
                        "label": "Lighting Reference",
                        "title": "An image with the desired lighting. Lighter areas correspond to brighter illumination",
                        "section": "References"
                    },
                    "light_source_direction": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "above",
                            "below",
                            "left",
                            "right"
                        ],
                        "option_labels": {
                            "above": "Above",
                            "below": "Below",
                            "left": "Left",
                            "right": "Right"
                        },
                        "api_field": "light_source_direction",
                        "label": "Light Direction",
                        "title": "Direction of the primary light source",
                        "section": "Lighting"
                    },
                    "light_source_strength": {
                        "type": "range",
                        "required": false,
                        "default": 0.3,
                        "min": 0,
                        "max": 1,
                        "step": 0.05,
                        "subtype": "float",
                        "api_field": "light_source_strength",
                        "label": "Light Strength",
                        "title": "Intensity of the directional light or light reference. 1.0 is brightest",
                        "section": "Lighting"
                    },
                    "keep_original_background": {
                        "type": "enum",
                        "required": false,
                        "default": "false",
                        "options": [
                            "false",
                            "true"
                        ],
                        "option_labels": {
                            "false": "Replace Background",
                            "true": "Keep Original Background"
                        },
                        "api_field": "keep_original_background",
                        "label": "Background Mode",
                        "title": "When enabled, keeps the original background but adjusts its lighting to match the new light settings",
                        "section": "Settings"
                    },
                    "preserve_original_subject": {
                        "type": "range",
                        "required": false,
                        "default": 0.6,
                        "min": 0,
                        "max": 1,
                        "step": 0.05,
                        "subtype": "float",
                        "api_field": "preserve_original_subject",
                        "label": "Subject Preservation",
                        "title": "How closely the output subject matches the original. 1.0 = exact pixel match",
                        "section": "Settings"
                    },
                    "original_background_depth": {
                        "type": "range",
                        "required": false,
                        "default": 0.5,
                        "min": 0,
                        "max": 1,
                        "step": 0.05,
                        "subtype": "float",
                        "api_field": "original_background_depth",
                        "label": "Background Depth Match",
                        "title": "Controls how much the generated background matches the depth of the original scene",
                        "section": "Settings"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 0,
                        "max": 4294967294,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Controls the randomness of the generation. Use 0 or omit for a random seed",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Output file format",
                        "section": "Output"
                    }
                },
                "response": {
                    "response_format": "base64",
                    "_async_poll": "GET https://api.stability.ai/v2beta/results/{id}"
                }
            },
            "structure": {
                "io": "image + text → image",
                "description": "Preserve an input image's structure or sketch contours while generating new content from a text prompt. Photo reference mode infers depth/edges internally; outline mode treats the input as a contour/sketch reference",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "sub_type_field": "control_method",
                "sub_type_label": "Method",
                "sub_type_section": "Mode Subtype",
                "shared_fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "max": 10000,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "What you want to see in the output. Supports weighted terms via (word:weight) — e.g. '(blue:0.3)' de-emphasizes, '(green:1.8)' emphasizes",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "max": 10000,
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "What to exclude from the output",
                        "section": "Prompts"
                    },
                    "control_image": {
                        "type": "image",
                        "required": true,
                        "principal_image": true,
                        "upload_as": "multipart_file",
                        "api_field": "image",
                        "image_constraints": {
                            "max_pixels": 9437184,
                            "max_height": 16383,
                            "min_height": 64,
                            "max_width": 16383,
                            "min_width": 64
                        },
                        "label": "Control Image",
                        "title": "Source image whose structure (Structure mode) or contours (Sketch mode) guide the output. Must be at least 64px on every side; aspect ratio between 1:2.5 and 2.5:1",
                        "section": "Inputs"
                    },
                    "control_strength": {
                        "type": "range",
                        "required": false,
                        "default": 0.7,
                        "min": 0,
                        "max": 1,
                        "step": 0.05,
                        "subtype": "float",
                        "api_field": "control_strength",
                        "label": "Control Strength",
                        "title": "How closely the output adheres to the control image. Higher = tighter adherence to input structure; lower = more creative freedom",
                        "section": "Settings"
                    },
                    "style_preset": {
                        "type": "enum",
                        "required": false,
                        "default": null,
                        "options": [
                            "3d-model",
                            "analog-film",
                            "anime",
                            "cinematic",
                            "comic-book",
                            "digital-art",
                            "enhance",
                            "fantasy-art",
                            "isometric",
                            "line-art",
                            "low-poly",
                            "modeling-compound",
                            "neon-punk",
                            "origami",
                            "photographic",
                            "pixel-art",
                            "tile-texture"
                        ],
                        "option_labels": {
                            "3d-model": "3D Model",
                            "analog-film": "Analog Film",
                            "anime": "Anime",
                            "cinematic": "Cinematic",
                            "comic-book": "Comic Book",
                            "digital-art": "Digital Art",
                            "enhance": "Enhance",
                            "fantasy-art": "Fantasy Art",
                            "isometric": "Isometric",
                            "line-art": "Line Art",
                            "low-poly": "Low Poly",
                            "modeling-compound": "Modeling Compound",
                            "neon-punk": "Neon Punk",
                            "origami": "Origami",
                            "photographic": "Photographic",
                            "pixel-art": "Pixel Art",
                            "tile-texture": "Tile Texture"
                        },
                        "api_field": "style_preset",
                        "label": "Style Preset",
                        "title": "Guides the model toward a particular style",
                        "section": "Settings"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 0,
                        "max": 4294967294,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Controls randomness. Use 0 or omit for a random seed",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Output file format",
                        "section": "Output"
                    }
                },
                "sub_types": {
                    "structure": {
                        "label": "Photo Reference",
                        "title": "Preserves the input image's structure (depth and spatial composition) while regenerating content from the prompt. Best for keeping subject position, proportions, and environment layout locked while changing appearance, lighting, or materials",
                        "endpoint": "https://api.stability.ai/v2beta/stable-image/control/structure"
                    },
                    "sketch": {
                        "label": "Outline Reference",
                        "title": "Treats the input image as a sketch or contour reference, generating a photorealistic (or otherwise styled) output that follows those contours. Ideal for rough drawings, wireframes, or line art",
                        "endpoint": "https://api.stability.ai/v2beta/stable-image/control/sketch"
                    }
                },
                "response": {
                    "response_format": "base64"
                },
                "deprecated": false
            },
            "styletransfer": {
                "io": "image + image → image",
                "description": "Apply the visual style of one image onto another, preserving the subject while transforming the aesthetic.",
                "endpoint": "https://api.stability.ai/v2beta/stable-image/control/style-transfer",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": false,
                        "max": 10000,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Optional prompt to guide the stylized output",
                        "section": "Prompts"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "max": 10000,
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Description of what to exclude from the image",
                        "section": "Prompts"
                    },
                    "init_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "multipart_file",
                        "api_field": "init_image",
                        "image_constraints": {
                            "max_pixels": 9437184,
                            "max_height": 16383,
                            "min_height": 64,
                            "max_width": 16383,
                            "min_width": 64
                        },
                        "label": "Content Image",
                        "principal_image": true,
                        "title": "An image containing the subject you wish to restyle",
                        "section": "Inputs"
                    },
                    "style_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "multipart_file",
                        "api_field": "style_image",
                        "image_constraints": {
                            "max_pixels": 9437184,
                            "max_height": 16383,
                            "min_height": 64,
                            "max_width": 16383,
                            "min_width": 64
                        },
                        "label": "Style Image",
                        "title": "The image whose visual style will be applied to the content image",
                        "section": "Inputs"
                    },
                    "style_strength": {
                        "type": "range",
                        "required": false,
                        "default": 1.0,
                        "min": 0,
                        "max": 1,
                        "step": 0.05,
                        "subtype": "float",
                        "api_field": "style_strength",
                        "label": "Style Strength",
                        "title": "How much the style image influences the output",
                        "section": "Settings"
                    },
                    "change_strength": {
                        "type": "range",
                        "required": false,
                        "default": 0.9,
                        "min": 0.1,
                        "max": 1,
                        "step": 0.05,
                        "subtype": "float",
                        "api_field": "change_strength",
                        "label": "Change Strength",
                        "title": "How much the content image is allowed to change overall",
                        "section": "Settings"
                    },
                    "composition_fidelity": {
                        "type": "range",
                        "required": false,
                        "default": 0.9,
                        "min": 0,
                        "max": 1,
                        "step": 0.05,
                        "subtype": "float",
                        "api_field": "composition_fidelity",
                        "label": "Composition Fidelity",
                        "title": "How closely the output preserves the spatial composition of the content image",
                        "section": "Settings"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": 0,
                        "max": 4294967294,
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Controls the randomness of the generation. Use 0 or omit for a random seed",
                        "section": "Output"
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Output file format",
                        "section": "Output"
                    }
                },
                "response": {
                    "response_format": "base64"
                }
            },
            "upscale": {
                "io": "image → image",
                "description": "Upscale an image to higher resolution. Conservative preserves the original faithfully, Creative reimagines details, and Fast is a lightweight 4× enhancement.",
                "http_method": "POST",
                "content_type": "multipart/form-data",
                "sub_type_field": "upscale_type",
                "sub_type_label": "Type",
                "sub_type_section": "Upscale Subtype",
                "shared_fields": {
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "png",
                        "options": [
                            "jpeg",
                            "png",
                            "webp"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "webp": "WebP"
                        },
                        "api_field": "output_format",
                        "label": "Format",
                        "title": "Output file format",
                        "section": "Output"
                    }
                },
                "sub_types": {
                    "conservative": {
                        "label": "Conservative",
                        "endpoint": "https://api.stability.ai/v2beta/stable-image/upscale/conservative",
                        "fields": {
                            "prompt": {
                                "type": "text",
                                "required": true,
                                "max": 10000,
                                "api_field": "prompt",
                                "label": "Prompt",
                                "title": "What you wish to see in the output image. A strong, descriptive prompt that clearly defines elements, colors, and subjects will lead to better results\n\nTo control the weight of a given word use the format (word:weight), where word is the word you'd like to control the weight of and weight is a value between 0 and 1. For example: The sky was a crisp (blue:0.3) and (green:0.8) would convey a sky that was blue and green, but more green than blue",
                                "section": "Prompts"
                            },
                            "negative_prompt": {
                                "type": "text",
                                "required": false,
                                "max": 10000,
                                "api_field": "negative_prompt",
                                "label": "Negative Prompt",
                                "title": "A blurb of text describing what you do not wish to see in the output image",
                                "section": "Prompts"
                            },
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "upload_as": "multipart_file",
                                "api_field": "image",
                                "label": "Source",
                                "principal_image": true,
                                "title": "",
                                "section": "Inputs",
                                "image_constraints": {
                                    "max_pixels": 9437184,
                                    "min_height": 64,
                                    "min_width": 64
                                }
                            },
                            "creativity": {
                                "type": "range",
                                "required": false,
                                "default": 0.35,
                                "min": 0.2,
                                "max": 0.5,
                                "step": 0.05,
                                "subtype": "float",
                                "api_field": "creativity",
                                "label": "Creativity",
                                "title": "Controls how much additional detail is invented. Conservative upscale keeps this low",
                                "section": "Settings"
                            },
                            "seed": {
                                "type": "int",
                                "required": false,
                                "default": null,
                                "min": 0,
                                "max": 4294967294,
                                "api_field": "seed",
                                "label": "Seed",
                                "title": "Controls the randomness of the generation. Use 0 or omit for a random seed",
                                "section": "Output"
                            }
                        }
                    },
                    "creative": {
                        "label": "Creative",
                        "endpoint": "https://api.stability.ai/v2beta/stable-image/upscale/creative",
                        "_async": true,
                        "_async_note": "Returns generation id. Poll GET /v2beta/stable-image/upscale/creative/result/{id} or GET /v2beta/results/{id}.",
                        "fields": {
                            "prompt": {
                                "type": "text",
                                "required": true,
                                "max": 10000,
                                "api_field": "prompt",
                                "label": "Prompt",
                                "title": "What you wish to see in the output image. A strong, descriptive prompt that clearly defines elements, colors, and subjects will lead to better results.\n\nTo control the weight of a given word use the format (word:weight), where word is the word you'd like to control the weight of and weight is a value between 0 and 1. For example: The sky was a crisp (blue:0.3) and (green:0.8) would convey a sky that was blue and green, but more green than blue",
                                "section": "Prompts"
                            },
                            "negative_prompt": {
                                "type": "text",
                                "required": false,
                                "max": 10000,
                                "api_field": "negative_prompt",
                                "label": "Negative Prompt",
                                "title": "Description of what to exclude from the image",
                                "section": "Prompts"
                            },
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "upload_as": "multipart_file",
                                "api_field": "image",
                                "label": "Source",
                                "principal_image": true,
                                "title": "",
                                "section": "Inputs",
                                "image_constraints": {
                                    "max_pixels": 1048576,
                                    "min_height": 64,
                                    "min_width": 64
                                }
                            },
                            "creativity": {
                                "type": "range",
                                "required": false,
                                "default": 0.3,
                                "min": 0.1,
                                "max": 0.5,
                                "step": 0.05,
                                "subtype": "float",
                                "api_field": "creativity",
                                "label": "Creativity",
                                "title": "Higher values add more creative detail during upscale. Best on degraded images",
                                "section": "Settings"
                            },
                            "style_preset": {
                                "type": "enum",
                                "required": false,
                                "default": null,
                                "options": [
                                    "3d-model",
                                    "analog-film",
                                    "anime",
                                    "cinematic",
                                    "comic-book",
                                    "digital-art",
                                    "enhance",
                                    "fantasy-art",
                                    "isometric",
                                    "line-art",
                                    "low-poly",
                                    "modeling-compound",
                                    "neon-punk",
                                    "origami",
                                    "photographic",
                                    "pixel-art",
                                    "tile-texture"
                                ],
                                "option_labels": {
                                    "3d-model": "3D Model",
                                    "analog-film": "Analog Film",
                                    "anime": "Anime",
                                    "cinematic": "Cinematic",
                                    "comic-book": "Comic Book",
                                    "digital-art": "Digital Art",
                                    "enhance": "Enhance",
                                    "fantasy-art": "Fantasy Art",
                                    "isometric": "Isometric",
                                    "line-art": "Line Art",
                                    "low-poly": "Low Poly",
                                    "modeling-compound": "Modeling Compound",
                                    "neon-punk": "Neon Punk",
                                    "origami": "Origami",
                                    "photographic": "Photographic",
                                    "pixel-art": "Pixel Art",
                                    "tile-texture": "Tile Texture"
                                },
                                "api_field": "style_preset",
                                "label": "Style Preset",
                                "title": "Guides the image model towards a particular style",
                                "section": "Settings"
                            },
                            "seed": {
                                "type": "int",
                                "required": false,
                                "default": null,
                                "min": 0,
                                "max": 4294967294,
                                "api_field": "seed",
                                "label": "Seed",
                                "title": "Controls the randomness of the generation. Use 0 or omit for a random seed",
                                "section": "Output"
                            }
                        }
                    },
                    "fast": {
                        "label": "Fast",
                        "endpoint": "https://api.stability.ai/v2beta/stable-image/upscale/fast",
                        "fields": {
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "upload_as": "multipart_file",
                                "api_field": "image",
                                "label": "Source",
                                "principal_image": true,
                                "title": "",
                                "section": "Inputs",
                                "image_constraints": {
                                    "max_height": 1536,
                                    "max_pixels": 1048576,
                                    "max_width": 1536,
                                    "min_height": 32,
                                    "min_width": 32
                                }
                            }
                        }
                    }
                },
                "response": {
                    "response_format": "base64"
                }
            }
        }
    },
    "topaz_labs": {
        "name": "Topaz Labs",
        "shortname": "Topaz",
        "vendor": "Topaz Labs",
        "family": "Topaz Photo AI",
        "deprecated": false,
        "docs_url": "https://developer.topazlabs.com/",
        "platforms": {
            "falai": {
                "name": "features and labels",
                "type": "byok",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "upscale": {
                        "sub_types": {
                            "precision_upscale": "fal-ai/topaz/upscale/image",
                            "generative_upscale": "fal-ai/topaz/upscale/image"
                        }
                    }
                },
                "api_field_map": {
                    "source_image": "image_url",
                    "output_width": null,
                    "output_height": null,
                    "upscale_category": {
                        "precision_upscale": "Precision Upscale [Gigapixel family]",
                        "generative_upscale": "Generative Upscale [Wonder family]",
                        "creative_upscale": null,
                        "tool": null
                    }
                },
                "api_value_map": {
                    "precision_upscale_model": {
                        "CGI": "CGI",
                        "High Fidelity V2": "High Fidelity V2",
                        "Low Resolution V2": "Low Resolution V2",
                        "Standard V2": "Standard V2",
                        "Text Refine": "Text Refine"
                    },
                    "gen_upscale_model": {
                        "Recovery V2": "Recovery V2",
                        "Redefine": "Redefine",
                        "Standard MAX": "Standard MAX",
                        "Wonder": "Wonder"
                    },
                    "output_format": {
                        "jpeg": "jpeg",
                        "png": "png"
                    }
                },
                "upload_as_map": {
                    "source_image": "s3_public_url"
                },
                "hidden_api_fields": {},
                "response": {
                    "image_url_path": "image.url",
                    "response_format": "url"
                }
            },
            "topazlabs": {
                "name": "Topaz Labs",
                "type": "byok",
                "dispatch": "http_multipart",
                "secret_id": "topaz_labs",
                "env_var": "TOPAZ_LABS_API_KEY",
                "auth_header": "X-API-Key",
                "auth_prefix": "",
                "poll_interval_seconds": 3,
                "max_poll_attempts": 200,
                "async_response_id_path": "process_id",
                "async_poll_url": "https://api.topazlabs.com/image/v1/status/{id}",
                "async_status_path": "status",
                "download_url_template": "https://api.topazlabs.com/image/v1/download/{id}",
                "download_url_path": "download_url",
                "api_field_map": {
                    "upscale_factor": null,
                    "texture": null,
                    "detail": null
                }
            }
        },
        "constraints": {},
        "modes": {
            "enhance": {
                "io": "image \u2192 image",
                "description": "Enhance, upscale, sharpen, denoise, restore, adjust lighting, extract mattes, and process images with Topaz Labs AI models",
                "_async": true,
                "sub_type_field": "operation",
                "sub_type_label": "Operation",
                "sub_type_section": "Mode Subtype",
                "shared_fields": {
                    "autopilot": {
                        "type": "bool",
                        "required": false,
                        "default": true,
                        "api_field": "autopilot",
                        "label": "Autopilot",
                        "title": "Just pass in an image and Autopilot will automatically determine the best settings for the highest quality",
                        "section": "Mode Subtype"
                    },
                    "source_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "multipart_file",
                        "principal_image": true,
                        "api_field": "image",
                        "label": "",
                        "alt_label": "Input Image",
                        "title": "The image to process. Supported formats: JPEG, PNG, TIFF",
                        "section": "Inputs"
                    },
                    "subject_detection": {
                        "type": "enum",
                        "required": false,
                        "default": "All",
                        "api_field": "subject_detection",
                        "label": "Subject Detection",
                        "options": [
                            "All",
                            "Background",
                            "Foreground"
                        ],
                        "option_labels": {
                            "All": "All",
                            "Background": "Background Only",
                            "Foreground": "Foreground Only"
                        },
                        "title": "Whether to process all subjects, only the foreground, or only the background",
                        "section": "Settings",
                        "visible_when": {
                            "autopilot": false
                        }
                    },
                    "face_enhancement": {
                        "type": "bool",
                        "required": false,
                        "default": true,
                        "api_field": "face_enhancement",
                        "label": "Face Enhancement",
                        "title": "Enhance faces detected in the image. Disable for non-portrait subjects or when facial features should not be altered",
                        "section": "Settings",
                        "visible_when": {
                            "autopilot": false
                        }
                    },
                    "face_enhancement_creativity": {
                        "type": "range",
                        "required": false,
                        "default": 0,
                        "api_field": "face_enhancement_creativity",
                        "label": "Face Creativity",
                        "subtype": "float",
                        "min": 0,
                        "max": 1,
                        "step": 0.05,
                        "title": "Level of creativity for face enhancement. Higher values allow the AI more freedom to reconstruct facial details. Ignored when Face Enhancement is off",
                        "section": "Settings",
                        "visible_when": {
                            "face_enhancement": true,
                            "autopilot": false
                        }
                    },
                    "face_enhancement_strength": {
                        "type": "range",
                        "required": false,
                        "default": 0.8,
                        "api_field": "face_enhancement_strength",
                        "label": "Face Strength",
                        "subtype": "float",
                        "min": 0,
                        "max": 1,
                        "step": 0.05,
                        "title": "How sharp the enhanced faces are relative to the background. Ignored when Face Enhancement is off",
                        "section": "Settings",
                        "visible_when": {
                            "face_enhancement": true,
                            "autopilot": false
                        }
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "jpeg",
                        "api_field": "output_format",
                        "label": "Format",
                        "options": [
                            "jpeg",
                            "png",
                            "tiff"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "tiff": "TIFF"
                        },
                        "title": "The desired format of the output image",
                        "section": "Output",
                        "visible_when": {
                            "autopilot": false
                        }
                    }
                },
                "exclude_api_values": [
                    "autopilot"
                ],
                "sub_types": {
                    "enhance_standard": {
                        "label": "Enhance (Standard)",
                        "endpoint": "https://api.topazlabs.com/image/v1/enhance/async",
                        "description": "Standard upscaling and enhancement \u2014 fast, detail-preserving, non-generative",
                        "fields": {
                            "enhance_model": {
                                "type": "enum",
                                "required": false,
                                "default": "Standard V2",
                                "api_field": "model",
                                "label": "Model",
                                "options": [
                                    "CGI",
                                    "High Fidelity V2",
                                    "Low Resolution V2",
                                    "Standard V2",
                                    "Text Refine"
                                ],
                                "option_labels": {
                                    "CGI": "Art & CGI",
                                    "High Fidelity V2": "High Fidelity V2",
                                    "Low Resolution V2": "Low Resolution V2",
                                    "Standard V2": "Standard V2",
                                    "Text Refine": "Text & Shapes"
                                },
                                "title": "STANDARD V2: General-purpose, balances detail, sharpness, and noise reduction\n\nHIGH FIDELITY V2: Precision upscaling for already high-resolution sources; preserves fine detail and texture\n\nLOW RESOLUTION V2: Recovery-focused for heavily compressed or low-resolution sources\n\nART & CGI: Precision upscaling for artwork, illustrations, and computer graphics\n\nTEXT & SHAPES: Clean upscaling optimized for graphics and typography",
                                "section": "Specialized Model",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "sharpen": {
                                "type": "range",
                                "required": false,
                                "api_field": "sharpen",
                                "label": "Sharpen",
                                "subtype": "float",
                                "min": 0,
                                "max": 1,
                                "step": 0.05,
                                "title": "Slightly sharpens the image. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "denoise": {
                                "type": "range",
                                "required": false,
                                "api_field": "denoise",
                                "label": "Denoise",
                                "subtype": "float",
                                "min": 0,
                                "max": 1,
                                "step": 0.05,
                                "title": "Reduces noise in the image. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "fix_compression": {
                                "type": "range",
                                "required": false,
                                "api_field": "fix_compression",
                                "label": "Fix Compression",
                                "subtype": "float",
                                "min": 0,
                                "max": 1,
                                "step": 0.05,
                                "title": "Reduces compression artifacts to improve details. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "strength": {
                                "type": "range",
                                "required": false,
                                "api_field": "strength",
                                "label": "Strength",
                                "subtype": "float",
                                "min": 0.01,
                                "max": 1,
                                "step": 0.05,
                                "title": "Controls model strength. Too high can make results look unrealistic. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "output_width": {
                                "type": "int",
                                "required": false,
                                "api_field": "output_width",
                                "label": "Width",
                                "min": 1,
                                "max": 32000,
                                "title": "Desired output width in pixels. If only width or height is set, the other dimension scales proportionally",
                                "section": "Output",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "output_height": {
                                "type": "int",
                                "required": false,
                                "api_field": "output_height",
                                "label": "Height",
                                "min": 1,
                                "max": 32000,
                                "title": "Desired output height in pixels. If only width or height is set, the other dimension scales proportionally",
                                "section": "Output",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "crop_to_fill": {
                                "type": "bool",
                                "required": false,
                                "default": false,
                                "api_field": "crop_to_fill",
                                "label": "Crop to Fill",
                                "title": "When both output dimensions are set and the aspect ratio differs, crop the image to fill instead of letterboxing",
                                "section": "Output",
                                "visible_when": {
                                    "autopilot": false
                                }
                            }
                        }
                    },
                    "enhance_generative": {
                        "label": "Enhance (Generative)",
                        "endpoint": "https://api.topazlabs.com/image/v1/enhance-gen/async",
                        "description": "Generative upscaling \u2014 highest quality, creative detail reconstruction, slower",
                        "fields": {
                            "enhance_gen_model": {
                                "type": "enum",
                                "required": false,
                                "default": "Redefine",
                                "api_field": "model",
                                "label": "Model",
                                "options": [
                                    "Recovery V2",
                                    "Redefine",
                                    "Standard MAX",
                                    "Wonder",
                                    "Wonder 2"
                                ],
                                "option_labels": {
                                    "Bloom Realism": "Bloom Realism",
                                    "Natural Enhance": "Natural Enhance",
                                    "Recovery V2": "Recovery V2",
                                    "Redefine": "Redefine",
                                    "Standard MAX": "Standard Max",
                                    "Wonder": "Wonder",
                                    "Wonder 2": "Wonder 2"
                                },
                                "title": "REDEFINE: Generative diffusion model that adds new detail with prompt-based enhancement\n\nSTANDARD MAX: High-quality precision upscaling with broader accessibility; outstanding on low-resolution photos\n\nRECOVERY V2: Generative diffusion model excelling at recovering rich, natural detail\n\nWONDER: One-click repair and enhancement for low-to-medium resolution images\n\nWONDER 2: Most advanced realism-focused model in the family, designed to handle extremely challenging, low-resolution images and produce outputs that look clean, natural, and professional",
                                "section": "Specialized Model",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "prompt": {
                                "type": "text",
                                "required": false,
                                "api_field": "prompt",
                                "label": "Prompt",
                                "title": "Describe the desired result. The model responds better to descriptive statements (\"girl with red hair\") than directives (\"change hair to red\"). Ignored when Autoprompt is enabled",
                                "section": "Prompts",
                                "max": 1024,
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "autoprompt": {
                                "type": "bool",
                                "required": false,
                                "default": false,
                                "api_field": "autoprompt",
                                "label": "Autoprompt",
                                "title": "Auto-generate a prompt using the model's built-in captioning. When enabled, any manually entered prompt is ignored",
                                "section": "Prompts",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "creativity": {
                                "type": "range",
                                "required": false,
                                "api_field": "creativity",
                                "label": "Creativity",
                                "subtype": "float",
                                "min": 0,
                                "max": 1,
                                "step": 0.05,
                                "title": "Lower values maintain the highest fidelity to the original image. Higher values allow more creative reconstruction. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "enhance_gen_model": {"not_equals": "Bloom Realism"},
                                    "autopilot": false
                                }
                            },
                            "bloom_creativity": {
                                "type": "range",
                                "required": false,
                                "default": 2,
                                "api_field": "creativity",
                                "_undocumented": true,
                                "label": "Creativity",
                                "subtype": "int",
                                "min": 1,
                                "max": 4,
                                "step": 1,
                                "title": "Lower creativity values maintain the highest fidelity to the original image. Higher values take more liberties and provide more creative results for specific details",
                                "section": "Settings",
                                "visible_when": {
                                    "enhance_gen_model": "Bloom Realism",
                                    "autopilot": false
                                }
                            },
                            "pre_downscale": {
                                "type": "range",
                                "required": false,
                                "default": 1,
                                "api_field": "pre_downscale",
                                "_undocumented": true,
                                "label": "Pre-Downscaling",
                                "subtype": "int",
                                "min": 1,
                                "max": 4,
                                "step": 1,
                                "title": "Control pre-downscaling for false resolution images",
                                "section": "Settings",
                                "visible_when": {
                                    "enhance_gen_model": "Wonder 2",
                                    "autopilot": false
                                }
                            },
                            "color_correction": {
                                "type": "bool",
                                "required": false,
                                "default": false,
                                "api_field": "color_correction",
                                "_undocumented": true,
                                "label": "Color Correction",
                                "title": "Whether to use color correction during post-processing",
                                "section": "Settings",
                                "visible_when": {
                                    "enhance_gen_model": "Wonder 2",
                                    "autopilot": false
                                }
                            },
                            "enhancement_strength": {
                                "type": "range",
                                "required": false,
                                "default": 5,
                                "api_field": "enhancement_strength",
                                "_undocumented": true,
                                "label": "Enhancement Strength",
                                "subtype": "float",
                                "min": 0,
                                "max": 10,
                                "step": 0.1,
                                "title": "",
                                "section": "Settings",
                                "visible_when": {
                                    "enhance_gen_model": "Natural Enhance",
                                    "autopilot": false
                                }
                            },
                            "output_width": {
                                "type": "int",
                                "required": false,
                                "api_field": "output_width",
                                "label": "Width",
                                "min": 1,
                                "max": 32000,
                                "title": "Desired output width in pixels. If only width or height is set, the other dimension scales proportionally",
                                "section": "Output",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "output_height": {
                                "type": "int",
                                "required": false,
                                "api_field": "output_height",
                                "label": "Height",
                                "min": 1,
                                "max": 32000,
                                "title": "Desired output height in pixels. If only width or height is set, the other dimension scales proportionally",
                                "section": "Output",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "crop_to_fill": {
                                "type": "bool",
                                "required": false,
                                "default": false,
                                "api_field": "crop_to_fill",
                                "label": "Crop to Fill",
                                "title": "When both output dimensions are set and the aspect ratio differs, crop the image to fill instead of letterboxing",
                                "section": "Output",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "seed": {
                                "type": "int",
                                "required": false,
                                "api_field": "seed",
                                "label": "Seed",
                                "title": "Generation seed for reproducible results. Leave blank for random",
                                "section": "Output",
                                "visible_when": {
                                    "autopilot": false
                                }
                            }
                        }
                    },
                    "sharpen_standard": {
                        "label": "Sharpen (Standard)",
                        "endpoint": "https://api.topazlabs.com/image/v1/sharpen/async",
                        "description": "Standard sharpening \u2014 restore clarity from camera shake, motion blur, or lens softness",
                        "fields": {
                            "sharpen_model": {
                                "type": "enum",
                                "required": false,
                                "default": "Standard",
                                "api_field": "model",
                                "label": "Model",
                                "options": [
                                    "Lens Blur",
                                    "Lens Blur V2",
                                    "Motion Blur",
                                    "Natural",
                                    "Portrait",
                                    "Refocus",
                                    "Standard",
                                    "Strong",
                                    "Wildlife"
                                ],
                                "option_labels": {
                                    "Lens Blur": "Lens Blur",
                                    "Lens Blur V2": "Lens Blur V2",
                                    "Motion Blur": "Motion Blur",
                                    "Natural": "Natural",
                                    "Portrait": "Portrait",
                                    "Refocus": "Refocus",
                                    "Standard": "Standard",
                                    "Strong": "Strong",
                                    "Wildlife": "Wildlife"
                                },
                                "title": "STANDARD: General-purpose sharpening\n\nSTRONG: Severe blur recovery\n\nNATURAL: Texture-preserving sharpening\n\nPORTRAIT: Detail enhancement for people\n\nWILDLIFE: Detail recovery for nature imagery\n\nREFOCUS: Micro-detail enhancement\n\nMOTION BLUR: Motion artifact correction\n\nLENS BLUR / V2: Defocus and lens blur correction",
                                "section": "Specialized Model",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "strength": {
                                "type": "range",
                                "required": false,
                                "api_field": "strength",
                                "label": "Strength",
                                "subtype": "float",
                                "min": 0.01,
                                "max": 1,
                                "step": 0.05,
                                "title": "Sharpening intensity. Too much can create unrealistic results. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "minor_denoise": {
                                "type": "range",
                                "required": false,
                                "api_field": "minor_denoise",
                                "label": "Minor Denoise",
                                "subtype": "float",
                                "min": 0.01,
                                "max": 1,
                                "step": 0.05,
                                "title": "Removes noisy pixels to increase clarity. Can slightly increase image sharpness. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            }
                        }
                    },
                    "sharpen_generative": {
                        "label": "Sharpen (Generative)",
                        "endpoint": "https://api.topazlabs.com/image/v1/sharpen-gen/async",
                        "description": "Generative sharpening \u2014 AI-powered blur recovery with detail reconstruction",
                        "fields": {
                            "sharpen_gen_model": {
                                "type": "enum",
                                "required": false,
                                "default": "Super Focus V2",
                                "api_field": "model",
                                "label": "Model",
                                "options": [
                                    "Super Focus V2"
                                ],
                                "option_labels": {
                                    "Super Focus V2": "Super Focus V2"
                                },
                                "title": "SUPER FOCUS V2: Generative model that fixes blur and reconstructs detail in challenging images where traditional sharpening cannot recover usable results",
                                "section": "Specialized Model",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "detail": {
                                "type": "range",
                                "required": false,
                                "api_field": "detail",
                                "label": "Detail",
                                "subtype": "float",
                                "min": 0,
                                "max": 1,
                                "step": 0.05,
                                "title": "Detail enhancement level. Too much can create unrealistic results. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "focus_boost": {
                                "type": "range",
                                "required": false,
                                "api_field": "focus_boost",
                                "label": "Focus Boost",
                                "subtype": "float",
                                "min": 0.25,
                                "max": 1,
                                "step": 0.05,
                                "title": "Use on very blurry images. Corrects images missing detail by downscaling then upscaling back to the original size. Higher values apply more aggressive correction",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "seed": {
                                "type": "int",
                                "required": false,
                                "api_field": "seed",
                                "label": "Seed",
                                "title": "Generation seed for reproducible results. Leave blank for random",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            }
                        }
                    },
                    "denoise": {
                        "label": "Denoise",
                        "endpoint": "https://api.topazlabs.com/image/v1/denoise/async",
                        "description": "Remove grain, high-ISO noise, and compression artifacts while preserving detail",
                        "fields": {
                            "denoise_model": {
                                "type": "enum",
                                "required": false,
                                "default": "Normal",
                                "api_field": "model",
                                "label": "Model",
                                "options": [
                                    "Extreme",
                                    "Normal",
                                    "Strong"
                                ],
                                "option_labels": {
                                    "Extreme": "Extreme",
                                    "Normal": "Normal",
                                    "Strong": "Strong"
                                },
                                "title": "NORMAL: General-purpose noise reduction\n\nSTRONG: High-noise detail preservation\n\nEXTREME: Maximum noise removal",
                                "section": "Specialized Model",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "strength": {
                                "type": "range",
                                "required": false,
                                "api_field": "strength",
                                "label": "Strength",
                                "subtype": "float",
                                "min": 0.01,
                                "max": 1,
                                "step": 0.05,
                                "title": "Noise reduction strength. Too high can remove detail and slightly blur the image. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "minor_deblur": {
                                "type": "range",
                                "required": false,
                                "api_field": "minor_deblur",
                                "label": "Minor Deblur",
                                "subtype": "float",
                                "min": 0.01,
                                "max": 1,
                                "step": 0.05,
                                "title": "Slightly sharpens the image. Counteracts softness caused by noise reduction. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "original_detail": {
                                "type": "range",
                                "required": false,
                                "api_field": "original_detail",
                                "label": "Original Detail",
                                "subtype": "float",
                                "min": 0,
                                "max": 1,
                                "step": 0.05,
                                "title": "Return texture and fine details lost during noise reduction. Start at low values and slowly increase. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            }
                        }
                    },
                    "restore": {
                        "label": "Restore",
                        "endpoint": "https://api.topazlabs.com/image/v1/restore-gen/async",
                        "description": "Restore older, degraded photos \u2014 remove dust, scratches, and age artifacts",
                        "fields": {
                            "restore_model": {
                                "type": "enum",
                                "required": false,
                                "default": "Dust-Scratch",
                                "api_field": "model",
                                "label": "Model",
                                "options": [
                                    "Dust-Scratch",
                                    "Dust-Scratch V2"
                                ],
                                "option_labels": {
                                    "Dust-Scratch": "Dust & Scratch",
                                    "Dust-Scratch V2": "Dust & Scratch V2"
                                },
                                "title": "DUST & SCRATCH: Automatic blemish cleanup for scanned film and older prints\n\nDUST & SCRATCH V2: Improved blemish removal with better detail preservation",
                                "section": "Specialized Model",
                                "visible_when": {
                                    "autopilot": false
                                }
                            }
                        }
                    },
                    "lighting": {
                        "label": "Lighting",
                        "endpoint": "https://api.topazlabs.com/image/v1/lighting/async",
                        "description": "Adjust exposure, color balance, and lighting to elevate image quality",
                        "fields": {
                            "lighting_model": {
                                "type": "enum",
                                "required": false,
                                "default": "Adjust",
                                "api_field": "model",
                                "label": "Model",
                                "options": [
                                    "Adjust",
                                    "Adjust V2",
                                    "Colorize",
                                    "White Balance"
                                ],
                                "option_labels": {
                                    "Adjust": "Adjust Lighting",
                                    "Adjust V2": "Adjust Lighting V2",
                                    "Colorize": "Colorize",
                                    "White Balance": "White Balance"
                                },
                                "title": "ADJUST: Intelligent exposure correction\n\nADJUST V2: Improved lighting adjustment with highlight, shadow, and color correction\n\nWHITE BALANCE: Automatic color temperature correction\n\nCOLORIZE: Automatic colorization for black-and-white images",
                                "section": "Specialized Model",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "strength": {
                                "type": "range",
                                "required": false,
                                "api_field": "strength",
                                "label": "Strength",
                                "subtype": "float",
                                "min": 0,
                                "max": 1,
                                "step": 0.05,
                                "title": "Controls the extent of AI processing. Does not directly mean brighter or darker. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "exposure": {
                                "type": "range",
                                "required": false,
                                "api_field": "exposure",
                                "label": "Exposure",
                                "subtype": "float",
                                "min": -1,
                                "max": 1,
                                "step": 0.05,
                                "title": "Adjust the overall brightness of the image. Positive to brighten, negative to darken. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "highlight": {
                                "type": "range",
                                "required": false,
                                "api_field": "highlight",
                                "label": "Highlights",
                                "subtype": "float",
                                "min": -1,
                                "max": 1,
                                "step": 0.05,
                                "title": "Adjust brightness of the brightest areas. Lowering recovers lost details, raising enhances brightness and contrast. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "shadow": {
                                "type": "range",
                                "required": false,
                                "api_field": "shadow",
                                "label": "Shadows",
                                "subtype": "float",
                                "min": -1,
                                "max": 1,
                                "step": 0.05,
                                "title": "Control brightness of darker areas. Raising reveals details in dark regions, lowering deepens contrast. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "temperature": {
                                "type": "range",
                                "required": false,
                                "api_field": "temperature",
                                "label": "Temperature",
                                "subtype": "float",
                                "min": -1,
                                "max": 1,
                                "step": 0.05,
                                "title": "Adjust color temperature. Negative for cooler (bluer), positive for warmer (yellower). Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "saturation": {
                                "type": "range",
                                "required": false,
                                "api_field": "saturation",
                                "label": "Saturation",
                                "subtype": "float",
                                "min": -1,
                                "max": 1,
                                "step": 0.05,
                                "title": "Adjust color saturation. Negative to desaturate, positive to increase vibrance. Leave blank for Autopilot",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            }
                        }
                    },
                    "matting": {
                        "label": "Matting",
                        "endpoint": "https://api.topazlabs.com/image/v1/matting/async",
                        "description": "Extract subjects with AI matting \u2014 generate alpha masks or segmentation maps",
                        "fields": {
                            "matting_model": {
                                "type": "enum",
                                "required": false,
                                "default": "Object",
                                "api_field": "model",
                                "label": "Model",
                                "options": [
                                    "Object"
                                ],
                                "option_labels": {
                                    "Object": "Object Matting"
                                },
                                "title": "OBJECT: Extract subjects from backgrounds using advanced AI matting",
                                "section": "Specialized Model",
                                "visible_when": {
                                    "autopilot": false
                                }
                            }
                        },
                        "hidden_api_fields": {
                            "output_format": "png"
                        },
                        "note": "Matting requires PNG for alpha channel. hidden_api_fields forces output_format=png regardless of shared field value"
                    }
                },
                "response": {
                    "request_id_path": "process_id",
                    "status_path": "status",
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            },
            "upscale": {
                "io": "image \u2192 image",
                "description": "Upscale images with Topaz Labs AI models",
                "_async": true,
                "sub_type_field": "upscale_category",
                "sub_type_label": "Category",
                "sub_type_section": "Mode Subtype",
                "shared_fields": {
                    "autopilot": {
                        "type": "bool",
                        "required": false,
                        "default": true,
                        "api_field": "autopilot",
                        "label": "Autopilot",
                        "title": "Just pass in an image and Autopilot will automatically determine the best settings for the highest quality",
                        "section": "Mode Subtype"
                    },
                    "subject_detection": {
                        "type": "enum",
                        "required": false,
                        "default": "All",
                        "api_field": "subject_detection",
                        "label": "Subject Detection",
                        "options": [
                            "All",
                            "Background",
                            "Foreground"
                        ],
                        "option_labels": {
                            "All": "All",
                            "Background": "Background Only",
                            "Foreground": "Foreground Only"
                        },
                        "title": "Whether to process all subjects, only the foreground, or only the background",
                        "section": "Settings",
                        "visible_when": {
                            "autopilot": false
                        }
                    },
                    "face_enhancement": {
                        "type": "bool",
                        "required": false,
                        "default": true,
                        "api_field": "face_enhancement",
                        "label": "Face Enhancement",
                        "title": "Enhance faces detected in the image. Disable for non-portrait subjects or when facial features should not be altered",
                        "section": "Settings",
                        "visible_when": {
                            "autopilot": false
                        }
                    },
                    "face_enhancement_creativity": {
                        "type": "range",
                        "required": false,
                        "default": 0,
                        "api_field": "face_enhancement_creativity",
                        "label": "Face Creativity",
                        "subtype": "float",
                        "min": 0,
                        "max": 1,
                        "step": 0.05,
                        "title": "Level of creativity for face enhancement. Higher values allow the AI more freedom to reconstruct facial details",
                        "section": "Settings",
                        "visible_when": {
                            "face_enhancement": true,
                            "autopilot": false
                        }
                    },
                    "face_enhancement_strength": {
                        "type": "range",
                        "required": false,
                        "default": 0.8,
                        "api_field": "face_enhancement_strength",
                        "label": "Face Strength",
                        "subtype": "float",
                        "min": 0,
                        "max": 1,
                        "step": 0.05,
                        "title": "How sharp the enhanced faces are relative to the background",
                        "section": "Settings",
                        "visible_when": {
                            "face_enhancement": true,
                            "autopilot": false
                        }
                    },
                    "output_format": {
                        "type": "enum",
                        "required": false,
                        "default": "jpeg",
                        "api_field": "output_format",
                        "label": "Format",
                        "options": [
                            "jpeg",
                            "png",
                            "tiff"
                        ],
                        "option_labels": {
                            "jpeg": "JPEG",
                            "png": "PNG",
                            "tiff": "TIFF"
                        },
                        "title": "The desired format of the output image",
                        "section": "Output",
                        "visible_when": {
                            "autopilot": false
                        }
                    },
                    "upscale_factor": {
                        "type": "range",
                        "required": false,
                        "default": 2,
                        "min": 1,
                        "max": 4,
                        "step": 0.1,
                        "subtype": "float",
                        "api_field": "upscale_factor",
                        "label": "Upscale Factor",
                        "title": "Factor to upscale the image by (e.g. 2.0 doubles width and height)",
                        "section": "Output"
                    }
                },
                "exclude_api_values": [
                    "autopilot"
                ],
                "sub_types": {
                    "precision_upscale": {
                        "label": "Precision Upscale [Gigapixel family]",
                        "endpoint": "https://api.topazlabs.com/image/v1/enhance/async",
                        "description": "Standard upscaling and enhancement \u2014 fast, detail-preserving, non-generative",
                        "fields": {
                            "precision_upscale_model": {
                                "type": "enum",
                                "required": false,
                                "default": "Standard V2",
                                "api_field": "model",
                                "label": "Gigapixel Model",
                                "options": [
                                    "CGI",
                                    "High Fidelity V2",
                                    "Low Resolution V2",
                                    "Standard V2",
                                    "Text Refine"
                                ],
                                "option_labels": {
                                    "CGI": "Art & CGI",
                                    "High Fidelity V2": "High Fidelity V2",
                                    "Low Resolution V2": "Low Resolution V2",
                                    "Standard V2": "Standard V2",
                                    "Text Refine": "Text & Shapes"
                                },
                                "title": "STANDARD V2: General-purpose, balances detail, sharpness, and noise reduction\n\nHIGH FIDELITY V2: Precision upscaling for already high-resolution sources; preserves fine detail and texture\n\nLOW RESOLUTION V2: Recovery-focused for heavily compressed or low-resolution sources\n\nART & CGI: Precision upscaling for artwork, illustrations, and computer graphics\n\nTEXT & SHAPES: Clean upscaling optimized for graphics and typography",
                                "section": "Specialized Model",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "upload_as": "multipart_file",
                                "principal_image": true,
                                "api_field": "image",
                                "label": "",
                                "alt_label": "Source Image",
                                "title": "The image to process. Supported formats: JPEG, PNG, TIFF",
                                "section": "Inputs"
                            },
                            "sharpen": {
                                "type": "range",
                                "required": false,
                                "api_field": "sharpen",
                                "label": "Sharpen",
                                "subtype": "float",
                                "min": 0,
                                "max": 1,
                                "step": 0.05,
                                "title": "Slightly sharpens the image",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "denoise": {
                                "type": "range",
                                "required": false,
                                "api_field": "denoise",
                                "label": "Denoise",
                                "subtype": "float",
                                "min": 0,
                                "max": 1,
                                "step": 0.05,
                                "title": "Reduces noise in the image",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "fix_compression": {
                                "type": "range",
                                "required": false,
                                "api_field": "fix_compression",
                                "label": "Fix Compression",
                                "subtype": "float",
                                "min": 0,
                                "max": 1,
                                "step": 0.05,
                                "title": "Reduces compression artifacts to improve details",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "strength": {
                                "type": "range",
                                "required": false,
                                "api_field": "strength",
                                "label": "Strength",
                                "subtype": "float",
                                "min": 0.01,
                                "max": 1,
                                "step": 0.05,
                                "title": "Controls model strength. Too high can make results look unrealistic",
                                "section": "Settings",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "output_width": {
                                "type": "int",
                                "required": false,
                                "api_field": "output_width",
                                "label": "Width",
                                "min": 1,
                                "max": 32000,
                                "title": "Desired output width in pixels. If only width or height is set, the other dimension scales proportionally",
                                "section": "Output"
                            },
                            "output_height": {
                                "type": "int",
                                "required": false,
                                "api_field": "output_height",
                                "label": "Height",
                                "min": 1,
                                "max": 32000,
                                "title": "Desired output height in pixels. If only width or height is set, the other dimension scales proportionally",
                                "section": "Output"
                            },
                            "crop_to_fill": {
                                "type": "bool",
                                "required": false,
                                "default": false,
                                "api_field": "crop_to_fill",
                                "label": "Crop to Fill",
                                "title": "When both output dimensions are set and the aspect ratio differs, crop the image to fill instead of letterboxing",
                                "section": "Output"
                            }
                        }
                    },
                    "generative_upscale": {
                        "label": "Generative Upscale [Wonder family]",
                        "endpoint": "https://api.topazlabs.com/image/v1/enhance-gen/async",
                        "description": "Generative upscaling \u2014 highest quality, creative detail reconstruction, slower",
                        "fields": {
                            "gen_upscale_model": {
                                "type": "enum",
                                "required": false,
                                "default": "Redefine",
                                "api_field": "model",
                                "label": "Wonder Model",
                                "options": [
                                    "Recovery V2",
                                    "Redefine",
                                    "Standard MAX",
                                    "Wonder",
                                    "Wonder 2"
                                ],
                                "option_labels": {
                                    "Recovery V2": "Recovery V2",
                                    "Redefine": "Redefine",
                                    "Standard MAX": "Standard Max",
                                    "Wonder": "Wonder",
                                    "Wonder 2": "Wonder 2"
                                },
                                "title": "REDEFINE: Generative diffusion model that adds new detail with prompt-based enhancement\n\nSTANDARD MAX: High-quality precision upscaling with broader accessibility; outstanding on low-resolution photos\n\nRECOVERY V2: Generative diffusion model excelling at recovering rich, natural detail\n\nWONDER: One-click repair and enhancement for low-to-medium resolution images\n\nWONDER 2: Most advanced realism-focused model in the family, designed to handle extremely challenging, low-resolution images and produce outputs that look clean, natural, and professional",
                                "section": "Specialized Model",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "prompt": {
                                "type": "text",
                                "required": false,
                                "api_field": "prompt",
                                "label": "Prompt",
                                "title": "Describe the desired result. The model responds better to descriptive statements (\"girl with red hair\") than directives (\"change hair to red\"). Ignored when Autoprompt is enabled",
                                "section": "Prompts",
                                "max": 1024,
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "autoprompt": {
                                "type": "bool",
                                "required": false,
                                "default": false,
                                "api_field": "autoprompt",
                                "label": "Autoprompt",
                                "title": "Auto-generate a prompt using the model's built-in captioning. When enabled, any manually entered prompt is ignored",
                                "section": "Prompts",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "upload_as": "multipart_file",
                                "principal_image": true,
                                "api_field": "image",
                                "label": "",
                                "alt_label": "Source Image",
                                "title": "The image to process. Supported formats: JPEG, PNG, TIFF",
                                "section": "Inputs"
                            },
                            "texture": {
                                "type": "range",
                                "required": false,
                                "min": 1,
                                "max": 5,
                                "step": 1,
                                "subtype": "int",
                                "api_field": "texture",
                                "label": "Texture",
                                "title": "Texture detail level for generative upscaling",
                                "section": "Settings",
                                "visible_when": {
                                    "gen_upscale_model": "Redefine",
                                    "autopilot": false
                                }
                            },
                            "detail": {
                                "type": "range",
                                "required": false,
                                "min": 0,
                                "max": 1,
                                "step": 0.05,
                                "subtype": "float",
                                "api_field": "detail",
                                "label": "Detail",
                                "title": "Detail recovery level (0-1)",
                                "section": "Settings",
                                "visible_when": {
                                    "gen_upscale_model": "Recovery V2",
                                    "autopilot": false
                                }
                            },
                            "output_width": {
                                "type": "int",
                                "required": false,
                                "api_field": "output_width",
                                "label": "Width",
                                "min": 1,
                                "max": 32000,
                                "title": "Desired output width in pixels. If only width or height is set, the other dimension scales proportionally",
                                "section": "Output"
                            },
                            "output_height": {
                                "type": "int",
                                "required": false,
                                "api_field": "output_height",
                                "label": "Height",
                                "min": 1,
                                "max": 32000,
                                "title": "Desired output height in pixels. If only width or height is set, the other dimension scales proportionally",
                                "section": "Output"
                            },
                            "crop_to_fill": {
                                "type": "bool",
                                "required": false,
                                "default": false,
                                "api_field": "crop_to_fill",
                                "label": "Crop to Fill",
                                "title": "When both output dimensions are set and the aspect ratio differs, crop the image to fill instead of letterboxing",
                                "section": "Output"
                            },
                            "seed": {
                                "type": "int",
                                "required": false,
                                "api_field": "seed",
                                "label": "Seed",
                                "title": "Generation seed for reproducible results. Leave blank for random",
                                "section": "Output"
                            }
                        }
                    },
                    "creative_upscale": {
                        "label": "Creative Upscale [Bloom family]",
                        "endpoint": "https://api.topazlabs.com/image/v1/enhance-gen/async",
                        "description": "Creative image enhancement models designed to upscale and transform GenAI images, with or without text based prompts",
                        "fields": {
                            "creative_upscale_model": {
                                "type": "enum",
                                "required": false,
                                "default": "Bloom Realism",
                                "api_field": "model",
                                "label": "Model",
                                "options": [
                                    "Bloom Creative",
                                    "Bloom Realism"
                                ],
                                "option_labels": {
                                    "Bloom Creative": "Bloom Creative",
                                    "Bloom Realism": "Bloom Realism"
                                },
                                "title": "BLOOM CREATIVE: A generative AI upscaling model designed for native GenAI images, enlarging AI-generated artwork, illustrations, and CG renders by up to 8× while creatively introducing new detail, texture, and visual elements\n\nBLOOM REALISM: An advanced creative upscaling model that removes the plastic, artificial feel of AI-generated images by restoring natural detail and texture across skin, hair, fabrics, metals, and other materials, producing more grounded, believable results",
                                "section": "Specialized Model",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "prompt": {
                                "type": "text",
                                "required": false,
                                "api_field": "prompt",
                                "label": "Prompt",
                                "title": "Describe the desired result. The model responds better to descriptive statements (\"girl with red hair\") than directives (\"change hair to red\"). Ignored when Autoprompt is enabled",
                                "section": "Prompts",
                                "max": 1024,
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "autoprompt": {
                                "type": "bool",
                                "required": false,
                                "default": false,
                                "api_field": "autoprompt",
                                "label": "Autoprompt",
                                "title": "Auto-generate a prompt using the model's built-in captioning. When enabled, any manually entered prompt is ignored",
                                "section": "Prompts",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "upload_as": "multipart_file",
                                "principal_image": true,
                                "api_field": "image",
                                "label": "",
                                "alt_label": "Source Image",
                                "title": "The image to process. Supported formats: JPEG, PNG, TIFF",
                                "section": "Inputs"
                            },
                            "bloom_creative_creativity": {
                                "type": "range",
                                "required": false,
                                "default": 3,
                                "api_field": "creativity",
                                "_undocumented": true,
                                "label": "Creativity",
                                "subtype": "int",
                                "min": 1,
                                "max": 9,
                                "step": 1,
                                "title": "Lower creativity values maintain the highest fidelity to the original image. Higher values take more liberties and provide more creative results for specific details",
                                "section": "Settings",
                                "visible_when": {
                                    "enhance_gen_model": "Bloom Creative",
                                    "autopilot": false
                                }
                            },
                            "bloom_realism_creativity": {
                                "type": "range",
                                "required": false,
                                "default": 2,
                                "api_field": "creativity",
                                "_undocumented": true,
                                "label": "Creativity",
                                "subtype": "int",
                                "min": 1,
                                "max": 4,
                                "step": 1,
                                "title": "Lower creativity values maintain the highest fidelity to the original image. Higher values take more liberties and provide more creative results for specific details",
                                "section": "Settings",
                                "visible_when": {
                                    "enhance_gen_model": "Bloom Realism",
                                    "autopilot": false
                                }
                            },
                            "pre_downscale": {
                                "type": "range",
                                "required": false,
                                "default": 1,
                                "api_field": "pre_downscale",
                                "_undocumented": true,
                                "label": "Pre-Downscaling",
                                "subtype": "int",
                                "min": 1,
                                "max": 4,
                                "step": 1,
                                "title": "Control pre-downscaling for false resolution images",
                                "section": "Settings",
                                "visible_when": {
                                    "enhance_gen_model": "Wonder 2",
                                    "autopilot": false
                                }
                            },
                            "color_correction": {
                                "type": "bool",
                                "required": false,
                                "default": false,
                                "api_field": "color_correction",
                                "_undocumented": true,
                                "label": "Color Correction",
                                "title": "Whether to use color correction during post-processing",
                                "section": "Settings",
                                "visible_when": {
                                    "enhance_gen_model": "Wonder 2",
                                    "autopilot": false
                                }
                            },
                            "enhancement_strength": {
                                "type": "range",
                                "required": false,
                                "default": 5,
                                "api_field": "enhancement_strength",
                                "_undocumented": true,
                                "label": "Enhancement Strength",
                                "subtype": "float",
                                "min": 0,
                                "max": 10,
                                "step": 0.1,
                                "title": "",
                                "section": "Settings",
                                "visible_when": {
                                    "enhance_gen_model": "Natural Enhance",
                                    "autopilot": false
                                }
                            },
                            "output_width": {
                                "type": "int",
                                "required": false,
                                "api_field": "output_width",
                                "label": "Width",
                                "min": 1,
                                "max": 32000,
                                "title": "Desired output width in pixels. If only width or height is set, the other dimension scales proportionally",
                                "section": "Output"
                            },
                            "output_height": {
                                "type": "int",
                                "required": false,
                                "api_field": "output_height",
                                "label": "Height",
                                "min": 1,
                                "max": 32000,
                                "title": "Desired output height in pixels. If only width or height is set, the other dimension scales proportionally",
                                "section": "Output"
                            },
                            "crop_to_fill": {
                                "type": "bool",
                                "required": false,
                                "default": false,
                                "api_field": "crop_to_fill",
                                "label": "Crop to Fill",
                                "title": "When both output dimensions are set and the aspect ratio differs, crop the image to fill instead of letterboxing",
                                "section": "Output"
                            },
                            "seed": {
                                "type": "int",
                                "required": false,
                                "api_field": "seed",
                                "label": "Seed",
                                "title": "Generation seed for reproducible results. Leave blank for random",
                                "section": "Output"
                            }
                        }
                    },
                    "tool": {
                        "label": "Transparent Image Upscale",
                        "endpoint": "https://api.topazlabs.com/image/v1/tool/async",
                        "description": "Upscale images with transparent backgrounds while preserving alpha transparency (PNG only)",
                        "fields": {
                            "source_image": {
                                "type": "image",
                                "required": true,
                                "upload_as": "multipart_file",
                                "principal_image": true,
                                "api_field": "image",
                                "label": "",
                                "alt_label": "Source Image",
                                "title": "The image to process. Supported formats: JPEG, PNG, TIFF",
                                "section": "Inputs"
                            },
                            "output_width": {
                                "type": "int",
                                "required": false,
                                "api_field": "output_width",
                                "label": "Width",
                                "min": 1,
                                "max": 32000,
                                "title": "Desired output width in pixels. If only width or height is set, the other dimension scales proportionally",
                                "section": "Output",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "output_height": {
                                "type": "int",
                                "required": false,
                                "api_field": "output_height",
                                "label": "Height",
                                "min": 1,
                                "max": 32000,
                                "title": "Desired output height in pixels. If only width or height is set, the other dimension scales proportionally",
                                "section": "Output",
                                "visible_when": {
                                    "autopilot": false
                                }
                            },
                            "crop_to_fill": {
                                "type": "bool",
                                "required": false,
                                "default": false,
                                "api_field": "crop_to_fill",
                                "label": "Crop to Fill",
                                "title": "When both output dimensions are set and the aspect ratio differs, crop the image to fill instead of letterboxing",
                                "section": "Output",
                                "visible_when": {
                                    "autopilot": false
                                }
                            }
                        },
                        "hidden_api_fields": {
                            "output_format": "png",
                            "model": "Transparency Upscale"
                        },
                        "note": "Transparency upscale requires PNG for alpha channel. hidden_api_fields forces output_format=png regardless of shared field value"
                    }
                }
            }
        }
    },
    "uwear": {
        "name": "Uwear Drape2",
        "shortname": "Uwear Drape2",
        "vendor": "Uwear",
        "family": "Drape2",
        "deprecated": false,
        "docs_url": "https://docs.dev.uwear.ai/",
        "platforms": {
            "uwear": {
                "name": "Uwear",
                "type": "direct",
                "sdk": null,
                "dispatch": "http_poll",
                "secret_id": "uwear",
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            }
        },
        "constraints": {},
        "modes": {
            "vton": {
                "io": "image + text → image",
                "description": "Virtual try-on: dress an avatar in a garment",
                "endpoint": "https://api.uwear.ai/api/v1/generation",
                "poll_url_template": "https://api.uwear.ai/api/v1/generation/{generation_id}",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    },
                    "prompt_upsampling": {
                        "type": "bool",
                        "required": true,
                        "api_field": "enhance_user_prompt",
                        "label": "Enhance Prompt",
                        "title": "Automatically modifies the prompt for more creative generation",
                        "section": "Prompts"
                    },
                    "garment_front_image": {
                        "type": "image",
                        "required": true,
                        "upload_as": "s3_public_url",
                        "api_field": "clothing_item_data.external_clothing_item_url",
                        "label": "Garment Front Image",
                        "title": "",
                        "section": "Inputs"
                    },
                    "garment_back_image": {
                        "type": "image",
                        "required": false,
                        "upload_as": "s3_public_url",
                        "api_field": "clothing_item_data.external_clothing_item_back_url",
                        "label": "Garment Back Image",
                        "title": "",
                        "section": "Inputs"
                    },
                    "clothing_item_name": {
                        "type": "text",
                        "required": true,
                        "api_field": "clothing_item_data.clothing_item_name",
                        "label": "Clothing Item Name",
                        "title": "Provide a user-friendly name for the reference garment",
                        "section": "Inputs"
                    },
                    "clothing_item_description": {
                        "type": "text",
                        "required": true,
                        "api_field": "clothing_item_data.description",
                        "label": "Clothing Description",
                        "title": "A description will be automatically generated, but any details provided will improve accuracy, especially for features not visible in the image (e.g., 'oversized fit', 'slim cut', 'high waist')",
                        "section": "Inputs"
                    },
                    "clothing_item_back_description": {
                        "type": "text",
                        "required": true,
                        "api_field": "clothing_item_data.description_back",
                        "label": "Clothing Back Description",
                        "title": "A separate description for the back of the clothing item. Though one is automatically generated, providing details will improve accuracy and performance",
                        "section": "Inputs"
                    },
                    "avatar_id": {
                        "type": "text",
                        "required": false,
                        "api_field": "avatar_id",
                        "label": "Avatar ID",
                        "title": "ID of a saved Uwear.ai avatar to use for the generation. If not provided, a virtual model will be used instead",
                        "section": "Inputs"
                    },
                    "use_image_enhancement": {
                        "type": "bool",
                        "required": true,
                        "default": true,
                        "api_field": "clothing_item_data.use_image_enhancement",
                        "label": "Use Image Enhancement",
                        "note": "PHP sends string 'true'/'false'; checked by default",
                        "title": "Determines if we process the image by removing backgrounds and generating descriptions automatically. Uncheck only if submitting a clean laydown photo with good descriptions. Including these significantly improves output quality",
                        "section": "Settings"
                    },
                    "camera_angle": {
                        "type": "enum",
                        "required": false,
                        "default": "auto",
                        "options": [
                            "auto",
                            "back shot",
                            "full body shot",
                            "lower body back shot",
                            "lower body shot",
                            "midshot"
                        ],
                        "option_labels": {
                            "auto": "Auto",
                            "back shot": "Back Shot",
                            "full body shot": "Full Body Shot",
                            "lower body back shot": "Lower Body Back Shot",
                            "lower body shot": "Lower Body Shot",
                            "midshot": "Midshot"
                        },
                        "api_field": "camera",
                        "label": "Camera Angle",
                        "title": "Specifies the shot framing and view direction for the output image",
                        "section": "Settings"
                    },
                    "background_color_hex": {
                        "type": "color",
                        "required": false,
                        "api_field": "generation_setting.color_hex",
                        "label": "Background Color Hex",
                        "note": "Mutually exclusive with transparent_background",
                        "title": "",
                        "section": "Settings"
                    },
                    "transparent_background": {
                        "type": "bool",
                        "required": false,
                        "default": false,
                        "api_field": "generation_setting.color_hex",
                        "api_transform": "set_to_#00000000",
                        "label": "Transparent Background",
                        "note": "If true, sets color_hex to '#00000000'. Takes priority over background_color_hex.",
                        "title": "",
                        "section": "Settings"
                    }
                },
                "hidden_api_fields": {
                    "clothing_item_id": 0,
                    "num_images": 1
                },
                "response": {
                    "request_id_path": "generation_id",
                    "status_path": "status",
                    "images_path": "generation_results",
                    "image_url_path": "url",
                    "response_format": "url",
                    "enhanced_prompt_path": "payload.prompt"
                },
                "deprecated": false
            },
            "humanmodel": {
                "io": "text → image",
                "description": "Generate an avatar from a text description",
                "endpoint": "https://api.uwear.ai/api/v1/generation-avatar",
                "poll_url_template": "https://api.uwear.ai/api/v1/generation/{generation_id}",
                "http_method": "POST",
                "content_type": "application/json",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": false,
                        "api_field": "prompt",
                        "label": "Prompt",
                        "note": "Describe the avatar (e.g., 'young woman with long brown hair')",
                        "title": "Describe in detail what you want to see in the output",
                        "section": "Prompts"
                    }
                },
                "hidden_api_fields": {
                    "num_images": 1
                },
                "response": {
                    "request_id_path": "generation_id",
                    "status_path": "status",
                    "images_path": "generation_results",
                    "image_url_path": "url",
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    },
    "wan": {
        "name": "WAN 2.7 Pro",
        "shortname": "WAN 2.7 Pro",
        "vendor": "Alibaba",
        "family": "WAN",
        "deprecated": false,
        "docs_url": "https://fal.ai/models/fal-ai/wan/v2.7/pro/text-to-image/api",
        "platforms": {
            "wavespeed": {
                "name": "WaveSpeedAI",
                "type": "byok",
                "dispatch": "http_poll",
                "secret_id": "wavespeed",
                "env_var": "WAVESPEED_API_KEY",
                "poll_url_template": "https://api.wavespeed.ai/api/v3/predictions/{request_id}/result",
                "poll_interval_seconds": 2,
                "max_poll_attempts": 60,
                "endpoints": {
                    "texttoimage": "https://api.wavespeed.ai/api/v3/alibaba/wan-2.7/text-to-image-pro",
                    "edit": "https://api.wavespeed.ai/api/v3/alibaba/wan-2.7/image-edit-pro"
                },
                "api_field_map": {
                    "height": null,
                    "image_size": null,
                    "negative_prompt": null,
                    "prompt_upsampling": null,
                    "width": null
                },
                "api_value_map": {
                    "aspect_ratio": {
                        "1:1": "2048*2048",
                        "2:3": "1664*2432",
                        "3:2": "2432*1664",
                        "3:4": "1728*2304",
                        "4:3": "2304*1728",
                        "9:16": "1440*2560",
                        "16:9": "2560*1440"
                    }
                },
                "hidden_api_fields": {},
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "response_format": "url"
                },
                "auth_header": "Authorization",
                "auth_prefix": "Bearer"
            },
            "falai": {
                "name": "features and labels",
                "type": "partner",
                "dispatch": "fal_async_poll",
                "secret_id": "falai",
                "env_var": "FAL_KEY",
                "max_wait_seconds": 300,
                "poll_interval_seconds": 2,
                "endpoints": {
                    "texttoimage": "fal-ai/wan/v2.7/pro/text-to-image",
                    "edit": "fal-ai/wan/v2.7/pro/edit"
                },
                "api_field_map": {
                    "aspect_ratio": null,
                    "custom_height": null,
                    "custom_width": null,
                    "input_images": "image_urls",
                    "thinking_mode": null
                },
                "hidden_api_fields": {},
                "response": {
                    "images_path": "images",
                    "image_url_key": "url",
                    "response_format": "url"
                }
            }
        },
        "constraints": {
            "seed": {
                "min": 0,
                "hint": "Optional; omitted if not provided"
            }
        },
        "modes": {
            "texttoimage": {
                "io": "text → image",
                "description": "Generate images from text prompts using WAN 2.7 Pro",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output. Supports English and Chinese. Max 2000 characters"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "section": "Prompts",
                        "default": "",
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Content to avoid in the generated image. Max 500 characters"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "square_hd",
                        "options": [
                            "custom",
                            "landscape_16_9",
                            "landscape_4_3",
                            "portrait_16_9",
                            "portrait_4_3",
                            "square",
                            "square_hd"
                        ],
                        "option_labels": {
                            "custom": "Custom",
                            "landscape_16_9": "Landscape 16:9",
                            "landscape_4_3": "Landscape 4:3",
                            "portrait_16_9": "Portrait 9:16",
                            "portrait_4_3": "Portrait 3:4",
                            "square": "Square",
                            "square_hd": "Square HD"
                        },
                        "exclude_api_values": [
                            "custom"
                        ],
                        "api_field": "image_size",
                        "label": "Image Size",
                        "title": "Output image size preset"
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": 1024,
                        "min": 512,
                        "max": 1280,
                        "step": 8,
                        "api_field": "image_size.width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": ""
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": 1024,
                        "min": 512,
                        "max": 1280,
                        "step": 8,
                        "api_field": "image_size.height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": ""
                    },
                    "aspect_ratio": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "1:1",
                        "options": [
                            "1:1",
                            "2:3",
                            "3:2",
                            "3:4",
                            "4:3",
                            "9:16",
                            "16:9",
                            "custom"
                        ],
                        "option_labels": {
                            "1:1": "1:1 [2048 × 2048]",
                            "2:3": "2:3 [1664 × 2432]",
                            "3:2": "3:2 [2432 × 1664]",
                            "3:4": "3:4 [1728 × 2304]",
                            "4:3": "4:3 [2304 × 1728]",
                            "9:16": "9:16 [1440 × 2560]",
                            "16:9": "16:9 [2560 × 1440]",
                            "custom": "Custom"
                        },
                        "exclude_api_values": [
                            "custom"
                        ],
                        "api_field": "size",
                        "label": "Ratio",
                        "title": ""
                    },
                    "custom_width": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": 2048,
                        "min": 512,
                        "max": 4096,
                        "step": 1,
                        "api_field": "size",
                        "api_transform": "concat_dimensions",
                        "label": "Width",
                        "visible_when": {
                            "aspect_ratio": "custom"
                        },
                        "title": "Total pixels must be between 768 × 768 and 2048 × 2048. Aspect ratio must be between 1:8 and 8:1"
                    },
                    "custom_height": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": 2048,
                        "min": 512,
                        "max": 4096,
                        "step": 1,
                        "api_field": "size",
                        "api_transform": "concat_dimensions",
                        "label": "Height",
                        "visible_when": {
                            "aspect_ratio": "custom"
                        },
                        "title": "Total pixels must be between 768 × 768 and 2048 × 2048. Aspect ratio must be between 1:8 and 8:1"
                    },
                    "thinking_mode": {
                        "type": "bool",
                        "required": false,
                        "section": "Settings",
                        "default": true,
                        "api_field": "thinking_mode",
                        "reasoning_flag": [
                            true
                        ],
                        "label": "Thinking Mode",
                        "title": "Enable thinking mode for enhanced reasoning and better image quality. Increases generation time"
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": -1,
                        "max": 2147483647,
                        "section": "Output",
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results. Use the same seed and settings to create a similar image. A value of -1 indicates randomness"
                    },
                    "disable_safety_checker": {
                        "type": "bool",
                        "required": false,
                        "section": "Safety",
                        "default": false,
                        "api_field": "enable_safety_checker",
                        "api_invert": true,
                        "warning_values": [
                            true
                        ],
                        "label": "Disable Safety Checker",
                        "title": "Disable safety checker for generated images"
                    }
                },
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "image_url_path": null,
                    "response_format": "url"
                },
                "deprecated": false
            },
            "edit": {
                "io": "image + text → image",
                "description": "Edit one or more images with a text prompt using WAN 2.7 Pro",
                "fields": {
                    "prompt": {
                        "type": "text",
                        "required": true,
                        "section": "Prompts",
                        "api_field": "prompt",
                        "label": "Prompt",
                        "title": "Describe in detail what you want to see in the output. Supports English and Chinese. Max 2000 characters"
                    },
                    "prompt_upsampling": {
                        "type": "bool",
                        "required": false,
                        "section": "Prompts",
                        "default": true,
                        "api_field": "enable_prompt_expansion",
                        "label": "Enhance Prompt",
                        "title": "Automatically modifies the prompt for more creative generation"
                    },
                    "negative_prompt": {
                        "type": "text",
                        "required": false,
                        "section": "Prompts",
                        "default": "",
                        "api_field": "negative_prompt",
                        "label": "Negative Prompt",
                        "title": "Content to avoid in the generated image. Max 500 characters"
                    },
                    "input_images": {
                        "type": "image[]",
                        "required": true,
                        "principal_image": true,
                        "section": "Inputs",
                        "min_items": 1,
                        "max_items": 4,
                        "upload_as": "s3_url",
                        "api_field": "images",
                        "label": "",
                        "alt_label": "Reference Images",
                        "title": "Reference images for editing (1–4). Order matters: reference them as image 1, image 2, etc. in the prompt"
                    },
                    "image_size": {
                        "type": "enum",
                        "required": false,
                        "section": "Output",
                        "default": "square_hd",
                        "crop_override_value": "square_hd",
                        "options": [
                            "custom",
                            "landscape_16_9",
                            "landscape_4_3",
                            "portrait_16_9",
                            "portrait_4_3",
                            "square",
                            "square_hd"
                        ],
                        "option_labels": {
                            "custom": "Custom",
                            "landscape_16_9": "Landscape 16:9",
                            "landscape_4_3": "Landscape 4:3",
                            "portrait_16_9": "Portrait 9:16",
                            "portrait_4_3": "Portrait 3:4",
                            "square": "Square",
                            "square_hd": "Square HD"
                        },
                        "exclude_api_values": [
                            "custom"
                        ],
                        "api_field": "image_size",
                        "label": "Image Size",
                        "title": "Output image size preset"
                    },
                    "width": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": 1024,
                        "min": 64,
                        "max": 14142,
                        "step": 8,
                        "api_field": "image_size.width",
                        "label": "Width",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": ""
                    },
                    "height": {
                        "type": "int",
                        "required": false,
                        "section": "Output",
                        "default": 1024,
                        "min": 64,
                        "max": 14142,
                        "step": 8,
                        "api_field": "image_size.height",
                        "label": "Height",
                        "visible_when": {
                            "image_size": "custom"
                        },
                        "title": ""
                    },
                    "seed": {
                        "type": "int",
                        "required": false,
                        "default": null,
                        "min": -1,
                        "max": 2147483647,
                        "section": "Output",
                        "api_field": "seed",
                        "label": "Seed",
                        "title": "Use to control and reproduce results. Use the same seed and settings to create a similar image. A value of -1 indicates randomness"
                    },
                    "disable_safety_checker": {
                        "type": "bool",
                        "required": false,
                        "section": "Safety",
                        "default": false,
                        "api_field": "enable_safety_checker",
                        "api_invert": true,
                        "warning_values": [
                            true
                        ],
                        "label": "Disable Safety Checker",
                        "title": "Disable safety checker for generated images"
                    }
                },
                "ui_extras": [
                    "pose_editor"
                ],
                "response": {
                    "request_id_path": "data.id",
                    "status_path": "data.status",
                    "images_path": "data.outputs",
                    "image_url_path": null,
                    "response_format": "url"
                },
                "deprecated": false
            }
        }
    }
}
