Skip to content
Get started

Describe Style

POST/generate/describe-style

Describe the style of the given images or models.

Query ParametersExpand Collapse
dryRun: optional unknown
Body ParametersJSONExpand Collapse
assetIds: optional array of string

The asset ids used to condition the generation.

ensureIPCleared: optional boolean

Whether we try to ensure IP removal for new prompt generation.

images: optional array of string

List of images used to condition the generation.

Images are set a data URLs (example: “data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=”) or the asset IDs (example: “asset_GTrL3mq4SXWyMxkOHRxlpw”).

Notes:

  • in contextual mode, images condition prompt generation by using their actual descriptions as context
  • in all other modes, it supersedes the modelId parameter when provided.
modelId: optional string

The modelId used to condition the generation.

When provided, the generation will take into account model’s training images, examples.

In contextual mode, the modelId is used to retrieve additional context from the model such as its type and capabilities.

seed: optional number

If specified, the API will make a best effort to produce the same results, such that repeated requests with the same seed and parameters should return the same outputs. Must be used along with the same parameters including prompt, model’s state, etc..

temperature: optional number

The sampling temperature to use. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.

We generally recommend altering this or topP but not both.

maximum2
minimum0
topP: optional number

An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.

We generally recommend altering this or temperature but not both.

maximum1
minimum0
unwantedSequences: optional array of string

Optional list of words sequences that should not be present in the generated prompts.

ReturnsExpand Collapse
description: string

The style of the given images.

job: object { createdAt, jobId, jobType, 8 more }
createdAt: string

The job creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

jobId: string

The job ID (example: “job_ocZCnG1Df35XRL1QyCZSRxAG8”)

jobType: "assets-download" or "canvas-export" or "caption" or 36 more

The type of job

One of the following:
"assets-download"
"canvas-export"
"caption"
"caption-llava"
"custom"
"describe-style"
"detection"
"embed"
"flux"
"flux-model-training"
"generate-prompt"
"image-generation"
"image-prompt-editing"
"inference"
"mesh-preview-rendering"
"model-download"
"model-import"
"model-training"
"musubi-model-training"
"openai-image-generation"
"patch-image"
"pixelate"
"reframe"
"remove-background"
"repaint"
"restyle"
"segment"
"skybox-3d"
"skybox-base-360"
"skybox-hdri"
"skybox-upscale-360"
"texture"
"translate"
"upload"
"upscale"
"upscale-skybox"
"upscale-texture"
"vectorize"
"workflow"
metadata: object { assetIds, error, flow, 6 more }

Metadata of the job with some additional information

assetIds: optional array of string

List of produced assets for this job

error: optional string

Eventual error for the job

flow: optional array of object { id, status, type, 15 more }

The flow of the job. Only available for workflow jobs.

id: string

The id of the node.

status: "failure" or "pending" or "processing" or 2 more

The status of the node. Only available for WorkflowJob nodes.

One of the following:
"failure"
"pending"
"processing"
"skipped"
"success"
type: "custom-model" or "for-each" or "generate-prompt" or 7 more

The type of the job for the node.

One of the following:
"custom-model"
"for-each"
"generate-prompt"
"list"
"logic"
"model"
"remove-background"
"transform"
"user-approval"
"workflow"
assets: optional array of object { assetId, url }

List of produced assets for this node.

assetId: string
url: string
count: optional number

Fixed number of iterations for a ForEach node. When set, the loop runs exactly count times regardless of array input. When not set, the loop iterates over the resolved array input. Only available for ForEach nodes.

dependsOn: optional array of string

The nodes that this node depends on. Only available for nodes that have dependencies. Mainly used for user approval nodes.

includeOutputsInWorkflowJob: optional true

If true, the outputs of this node will be included in the workflow job’s final output. Only applicable to producing nodes (custom-model, inference, etc.). By default, only last nodes (nodes not referenced by other nodes) contribute to outputs. Set this to true to also include intermediate nodes in the final output. Note: This should only be set to true or left undefined.

inputs: optional array of object { name, type, allowedValues, 26 more }

The inputs of the node.

name: string

The name that must be user to call the model through the API

type: "boolean" or "file" or "file_array" or 7 more

The data type of the input

One of the following:
"boolean"
"file"
"file_array"
"inputs_array"
"model"
"model_array"
"number"
"number_array"
"string"
"string_array"
allowedValues: optional array of unknown

The allowed values for the input. For `string` or `number` types, creates a single-select dropdown. For `string_array` type, creates a multi-select dropdown.

backgroundBehavior: optional "opaque" or "transparent"

Specifies the background behavior for the input. Only available for `file` and `file_array` input types with kind `image`.

One of the following:
"opaque"
"transparent"
color: optional boolean

Whether the input is a color or not. Only available for `string` input type.

costImpact: optional boolean

Whether this input affects the model’s cost calculation

default: optional unknown

The default value for the input

description: optional string

Help text displayed in the UI to provide additional information about the input

group: optional string

Used to visually group inputs together in the UI. Inputs with the same group value appear consecutively in the UI.

hint: optional string

Hint text displayed in the UI as a tooltip to guide the user

inputs: optional array of map[unknown]

The list of inputs which form an object within a container array. All inputs are the same as the current object. This is only available for type inputs_array inputs.

items: optional array of array of object { name, type, allowedValues, 25 more }

The configured items for inputs_array type inputs. Each item is an array of SubNodeInput that need ref/value resolution. Only available for inputs_array type.

name: string

The name that must be user to call the model through the API

type: "boolean" or "file" or "file_array" or 7 more

The data type of the input

One of the following:
"boolean"
"file"
"file_array"
"inputs_array"
"model"
"model_array"
"number"
"number_array"
"string"
"string_array"
allowedValues: optional array of unknown

The allowed values for the input. For `string` or `number` types, creates a single-select dropdown. For `string_array` type, creates a multi-select dropdown.

backgroundBehavior: optional "opaque" or "transparent"

Specifies the background behavior for the input. Only available for `file` and `file_array` input types with kind `image`.

One of the following:
"opaque"
"transparent"
color: optional boolean

Whether the input is a color or not. Only available for `string` input type.

costImpact: optional boolean

Whether this input affects the model’s cost calculation

default: optional unknown

The default value for the input

description: optional string

Help text displayed in the UI to provide additional information about the input

group: optional string

Used to visually group inputs together in the UI. Inputs with the same group value appear consecutively in the UI.

hint: optional string

Hint text displayed in the UI as a tooltip to guide the user

inputs: optional array of map[unknown]

The list of inputs which form an object within a container array. All inputs are the same as the current object. This is only available for type inputs_array inputs.

kind: optional "3d" or "audio" or "document" or 4 more

The asset kind of the input. Only taken into account for `file` and `file_array` input types. If model provides multiple kinds, the input will be not able to create the asset on the flight on API side with dataurl without data:kind, prefix

One of the following:
"3d"
"audio"
"document"
"image"
"image-hdr"
"json"
"video"
label: optional string

The label displayed in the UI for this input

maskFrom: optional string

The name of the file input field to use as the mask source

max: optional number

The maximum allowed value. Only available for `number` and `array` input types.

maxLength: optional number

The maximum allowed length for `string` inputs. Also applies to each item in `string_array`.

maxSize: optional number

The maximum allowed file size in bytes. Only applies to `file` and `file_array` input types. Validated against `asset.properties.size` at job creation time.

min: optional number

The minimum allowed value. Only available for `number` and array input types.

minLength: optional number

The minimum allowed length for string inputs. Also applies to each item in `string_array`.

modelTypes: optional array of "custom" or "elevenlabs-voice" or "flux.1" or 34 more

The allowed model types for this input. Example: `[“flux.1-lora”]`. Only available for `model_array` input type.

One of the following:
"custom"
"elevenlabs-voice"
"flux.1"
"flux.1-composition"
"flux.1-kontext-dev"
"flux.1-kontext-lora"
"flux.1-krea-dev"
"flux.1-krea-lora"
"flux.1-lora"
"flux.1-pro"
"flux.1.1-pro-ultra"
"flux.2-dev-edit-lora"
"flux.2-dev-lora"
"flux.2-klein-4b-edit-lora"
"flux.2-klein-4b-lora"
"flux.2-klein-9b-edit-lora"
"flux.2-klein-9b-lora"
"flux.2-klein-base-4b-edit-lora"
"flux.2-klein-base-4b-lora"
"flux.2-klein-base-9b-edit-lora"
"flux.2-klein-base-9b-lora"
"flux1.1-pro"
"gpt-image-1"
"qwen-image-2512-lora"
"qwen-image-edit-2509-lora"
"qwen-image-edit-2511-lora"
"qwen-image-edit-lora"
"qwen-image-lora"
"sd-1_5"
"sd-1_5-composition"
"sd-1_5-lora"
"sd-xl"
"sd-xl-composition"
"sd-xl-lora"
"zimage-de-turbo-lora"
"zimage-lora"
"zimage-turbo-lora"
parent: optional boolean

Whether this input represents a parent asset to assign to the produced assets. Only available for `file` and `file_array` input types.

For `file_array`, the parent asset is the first item in the array.

placeholder: optional string

Placeholder text for the input. Only available for ‘string’ input type.

prompt: optional boolean

Whether the input is a prompt. When true, displays as a text area with prompt spark feature. Only available for `string` input type.

promptSpark: optional boolean

Whether the input is used with prompt spark. Only available for `string` input type.

ref: optional object { conditional, equal, name, node }

The reference to another input or output of the same workflow. Must have at least one of node or conditional.

conditional: optional array of string

The conditional nodes to reference. If the conditional nodes are successful, the node will be successful. If the conditional nodes are skipped, the node will be skipped. Contains an array of node ids used to check the status of the nodes.

equal: optional string

This is the desired node output value if ref is an if/else node.

name: optional string

The name of the input or output to reference. If the type is ‘workflow’, the name is the name of the input of the workflow is required If the type is ‘node’, the name is not mandatory, except if you want all outputs of the node. To get all outputs of a node, you can use the name ‘all’.

node: optional string

The node id or ‘workflow’ if the source is a workflow input.

required: optional object { always, conditionalValues, ifDefined, ifNotDefined }

Set of rules that describes when this input is required:

  • `always`: Input is always required
  • `ifNotDefined`: Input is required when another specified input is not defined
  • `ifDefined`: Input is required when another specified input is defined
  • `conditionalValues`: Input is required when another input has a specific value

By default, the input is not required.

always: optional boolean

Whether the input is always required

conditionalValues: optional unknown

Makes this input required when another input has a specific value:

  • Key: name of the input to check
  • Value: operation and allowed values that trigger the requirement
ifDefined: optional unknown

Makes this input required when another input is defined:

  • Key: name of the input that must be defined
  • Value: message to display when this input is required
ifNotDefined: optional unknown

Makes this input required when another input is not defined:

  • Key: name of the input that must be undefined
  • Value: message to display when this input is required
step: optional number

The step increment for numeric inputs. Only available for `number` input type.

minimum1
value: optional unknown

The value of the input. This is the value of the input that will be used to run the node. Only available for flows managed by a WorkflowJob.

kind: optional "3d" or "audio" or "document" or 4 more

The asset kind of the input. Only taken into account for `file` and `file_array` input types. If model provides multiple kinds, the input will be not able to create the asset on the flight on API side with dataurl without data:kind, prefix

One of the following:
"3d"
"audio"
"document"
"image"
"image-hdr"
"json"
"video"
label: optional string

The label displayed in the UI for this input

maskFrom: optional string

The name of the file input field to use as the mask source

max: optional number

The maximum allowed value. Only available for `number` and `array` input types.

maxLength: optional number

The maximum allowed length for `string` inputs. Also applies to each item in `string_array`.

maxSize: optional number

The maximum allowed file size in bytes. Only applies to `file` and `file_array` input types. Validated against `asset.properties.size` at job creation time.

min: optional number

The minimum allowed value. Only available for `number` and array input types.

minLength: optional number

The minimum allowed length for string inputs. Also applies to each item in `string_array`.

modelTypes: optional array of "custom" or "elevenlabs-voice" or "flux.1" or 34 more

The allowed model types for this input. Example: `[“flux.1-lora”]`. Only available for `model_array` input type.

One of the following:
"custom"
"elevenlabs-voice"
"flux.1"
"flux.1-composition"
"flux.1-kontext-dev"
"flux.1-kontext-lora"
"flux.1-krea-dev"
"flux.1-krea-lora"
"flux.1-lora"
"flux.1-pro"
"flux.1.1-pro-ultra"
"flux.2-dev-edit-lora"
"flux.2-dev-lora"
"flux.2-klein-4b-edit-lora"
"flux.2-klein-4b-lora"
"flux.2-klein-9b-edit-lora"
"flux.2-klein-9b-lora"
"flux.2-klein-base-4b-edit-lora"
"flux.2-klein-base-4b-lora"
"flux.2-klein-base-9b-edit-lora"
"flux.2-klein-base-9b-lora"
"flux1.1-pro"
"gpt-image-1"
"qwen-image-2512-lora"
"qwen-image-edit-2509-lora"
"qwen-image-edit-2511-lora"
"qwen-image-edit-lora"
"qwen-image-lora"
"sd-1_5"
"sd-1_5-composition"
"sd-1_5-lora"
"sd-xl"
"sd-xl-composition"
"sd-xl-lora"
"zimage-de-turbo-lora"
"zimage-lora"
"zimage-turbo-lora"
parent: optional boolean

Whether this input represents a parent asset to assign to the produced assets. Only available for `file` and `file_array` input types.

For `file_array`, the parent asset is the first item in the array.

placeholder: optional string

Placeholder text for the input. Only available for ‘string’ input type.

prompt: optional boolean

Whether the input is a prompt. When true, displays as a text area with prompt spark feature. Only available for `string` input type.

promptSpark: optional boolean

Whether the input is used with prompt spark. Only available for `string` input type.

ref: optional object { conditional, equal, name, node }

The reference to another input or output of the same workflow. Must have at least one of node or conditional.

conditional: optional array of string

The conditional nodes to reference. If the conditional nodes are successful, the node will be successful. If the conditional nodes are skipped, the node will be skipped. Contains an array of node ids used to check the status of the nodes.

equal: optional string

This is the desired node output value if ref is an if/else node.

name: optional string

The name of the input or output to reference. If the type is ‘workflow’, the name is the name of the input of the workflow is required If the type is ‘node’, the name is not mandatory, except if you want all outputs of the node. To get all outputs of a node, you can use the name ‘all’.

node: optional string

The node id or ‘workflow’ if the source is a workflow input.

required: optional object { always, conditionalValues, ifDefined, ifNotDefined }

Set of rules that describes when this input is required:

  • `always`: Input is always required
  • `ifNotDefined`: Input is required when another specified input is not defined
  • `ifDefined`: Input is required when another specified input is defined
  • `conditionalValues`: Input is required when another input has a specific value

By default, the input is not required.

always: optional boolean

Whether the input is always required

conditionalValues: optional unknown

Makes this input required when another input has a specific value:

  • Key: name of the input to check
  • Value: operation and allowed values that trigger the requirement
ifDefined: optional unknown

Makes this input required when another input is defined:

  • Key: name of the input that must be defined
  • Value: message to display when this input is required
ifNotDefined: optional unknown

Makes this input required when another input is not defined:

  • Key: name of the input that must be undefined
  • Value: message to display when this input is required
step: optional number

The step increment for numeric inputs. Only available for `number` input type.

minimum1
value: optional unknown

The value of the input. This is the value of the input that will be used to run the node. Only available for flows managed by a WorkflowJob.

items: optional array of string

Statically-configured items for a List node. The node outputs this array as-is when executed. Only available for List nodes. The values can be strings, numbers, or asset IDs.

iterationIndex: optional number

Zero-based index of the iteration this node copy belongs to. Set on dynamically-created copies of loop body nodes.

jobId: optional string

If the flow is part of a WorkflowJob, this is the jobId for the node. jobId is only available for nodes started. A node “Pending” for a running workflow job is not started.

logic: optional object { cases, default, transform }

The logic of the node. Only available for logic nodes.

cases: optional array of object { condition, value }

The cases of the logic. Only available for if/else nodes.

condition: string
value: string
default: optional string

The default case of the logic. Contains the id/output of the node to execute if no case is matched. Only available for if/else nodes.

transform: optional string

The transform of the logic. Only available for transform nodes.

logicType: optional "if-else"

The type of the logic for the node. Only available for logic nodes.

loopBodyNodeIds: optional array of string

IDs of the body template nodes that belong to this ForEach loop. At runtime these templates are cloned once per iteration and marked Skipped. Only available for ForEach nodes.

loopNodeId: optional string

ID of the ForEach node that spawned this iteration copy. Set on dynamically-created copies of loop body nodes.

modelId: optional string

The model id for the node. Mainly used for custom model tasks.

output: optional unknown

The output of the node. Only available for logic nodes.

workflowId: optional string

The workflow id for the node. Mainly used for workflow tasks.

hint: optional string

Actionable hint for the user explaining what went wrong and how to resolve it.

input: optional map[unknown]

The inputs for the job

output: optional map[unknown]

May contain the output of the job for specific custom models jobs. Only available for custom models which generate non-assets outputs. Example: LLM text results.

outputModelId: optional string

For voice-clone jobs: the ID of the model being trained.

workflowId: optional string

The workflow ID of the job if job is part of a workflow.

workflowJobId: optional string

The workflow job ID of the job if job is part of a workflow job.

progress: number

Progress of the job (between 0 and 1)

status: "canceled" or "failure" or "finalizing" or 5 more

The current status of the job

One of the following:
"canceled"
"failure"
"finalizing"
"in-progress"
"pending"
"queued"
"success"
"warming-up"
statusHistory: array of object { date, status }

The history of the different statuses the job went through with the ISO string date of when the job reached each statuses.

date: string
status: "canceled" or "failure" or "finalizing" or 5 more
One of the following:
"canceled"
"failure"
"finalizing"
"in-progress"
"pending"
"queued"
"success"
"warming-up"
updatedAt: string

The job last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

authorId: optional string

The author user ID (example: “dcf121faaa1a0a0bbbd9ca1b73d62aea”)

billing: optional object { cuCost, cuDiscount }

The billing of the job

cuCost: number
cuDiscount: number
ownerId: optional string

The owner ID (example: “team_U3Qmc8PCdWXwAQJ4Dvw4tV6D”)

synthesis: string

A short synthesis that describes the given asset(s) or asset(s) model.

creativeUnitsCost: optional number

The Creative Units cost for the request billed

creativeUnitsDiscount: optional number

The Creative Units discount for the request billed

Describe Style

curl https://api.cloud.scenario.com/v1/generate/describe-style \
    -H 'Content-Type: application/json' \
    -u "$SCENARIO_SDK_API_KEY:SCENARIO_SDK_API_SECRET" \
    -d '{}'
{
  "description": "description",
  "job": {
    "createdAt": "createdAt",
    "jobId": "jobId",
    "jobType": "assets-download",
    "metadata": {
      "assetIds": [
        "string"
      ],
      "error": "error",
      "flow": [
        {
          "id": "id",
          "status": "failure",
          "type": "custom-model",
          "assets": [
            {
              "assetId": "assetId",
              "url": "url"
            }
          ],
          "count": 0,
          "dependsOn": [
            "string"
          ],
          "includeOutputsInWorkflowJob": true,
          "inputs": [
            {
              "name": "name",
              "type": "boolean",
              "allowedValues": [
                {}
              ],
              "backgroundBehavior": "opaque",
              "color": true,
              "costImpact": true,
              "default": {},
              "description": "description",
              "group": "group",
              "hint": "hint",
              "inputs": [
                {
                  "foo": "bar"
                }
              ],
              "items": [
                [
                  {
                    "name": "name",
                    "type": "boolean",
                    "allowedValues": [
                      {}
                    ],
                    "backgroundBehavior": "opaque",
                    "color": true,
                    "costImpact": true,
                    "default": {},
                    "description": "description",
                    "group": "group",
                    "hint": "hint",
                    "inputs": [
                      {
                        "foo": "bar"
                      }
                    ],
                    "kind": "3d",
                    "label": "label",
                    "maskFrom": "maskFrom",
                    "max": 0,
                    "maxLength": 0,
                    "maxSize": 0,
                    "min": 0,
                    "minLength": 0,
                    "modelTypes": [
                      "custom"
                    ],
                    "parent": true,
                    "placeholder": "placeholder",
                    "prompt": true,
                    "promptSpark": true,
                    "ref": {
                      "conditional": [
                        "string"
                      ],
                      "equal": "equal",
                      "name": "name",
                      "node": "node"
                    },
                    "required": {
                      "always": true,
                      "conditionalValues": {},
                      "ifDefined": {},
                      "ifNotDefined": {}
                    },
                    "step": 1,
                    "value": {}
                  }
                ]
              ],
              "kind": "3d",
              "label": "label",
              "maskFrom": "maskFrom",
              "max": 0,
              "maxLength": 0,
              "maxSize": 0,
              "min": 0,
              "minLength": 0,
              "modelTypes": [
                "custom"
              ],
              "parent": true,
              "placeholder": "placeholder",
              "prompt": true,
              "promptSpark": true,
              "ref": {
                "conditional": [
                  "string"
                ],
                "equal": "equal",
                "name": "name",
                "node": "node"
              },
              "required": {
                "always": true,
                "conditionalValues": {},
                "ifDefined": {},
                "ifNotDefined": {}
              },
              "step": 1,
              "value": {}
            }
          ],
          "items": [
            "string"
          ],
          "iterationIndex": 0,
          "jobId": "jobId",
          "logic": {
            "cases": [
              {
                "condition": "condition",
                "value": "value"
              }
            ],
            "default": "default",
            "transform": "transform"
          },
          "logicType": "if-else",
          "loopBodyNodeIds": [
            "string"
          ],
          "loopNodeId": "loopNodeId",
          "modelId": "modelId",
          "output": {},
          "workflowId": "workflowId"
        }
      ],
      "hint": "hint",
      "input": {
        "foo": "bar"
      },
      "output": {
        "foo": "bar"
      },
      "outputModelId": "outputModelId",
      "workflowId": "workflowId",
      "workflowJobId": "workflowJobId"
    },
    "progress": 0,
    "status": "canceled",
    "statusHistory": [
      {
        "date": "date",
        "status": "canceled"
      }
    ],
    "updatedAt": "updatedAt",
    "authorId": "authorId",
    "billing": {
      "cuCost": 0,
      "cuDiscount": 0
    },
    "ownerId": "ownerId"
  },
  "synthesis": "synthesis",
  "creativeUnitsCost": 0,
  "creativeUnitsDiscount": 0
}
Returns Examples
{
  "description": "description",
  "job": {
    "createdAt": "createdAt",
    "jobId": "jobId",
    "jobType": "assets-download",
    "metadata": {
      "assetIds": [
        "string"
      ],
      "error": "error",
      "flow": [
        {
          "id": "id",
          "status": "failure",
          "type": "custom-model",
          "assets": [
            {
              "assetId": "assetId",
              "url": "url"
            }
          ],
          "count": 0,
          "dependsOn": [
            "string"
          ],
          "includeOutputsInWorkflowJob": true,
          "inputs": [
            {
              "name": "name",
              "type": "boolean",
              "allowedValues": [
                {}
              ],
              "backgroundBehavior": "opaque",
              "color": true,
              "costImpact": true,
              "default": {},
              "description": "description",
              "group": "group",
              "hint": "hint",
              "inputs": [
                {
                  "foo": "bar"
                }
              ],
              "items": [
                [
                  {
                    "name": "name",
                    "type": "boolean",
                    "allowedValues": [
                      {}
                    ],
                    "backgroundBehavior": "opaque",
                    "color": true,
                    "costImpact": true,
                    "default": {},
                    "description": "description",
                    "group": "group",
                    "hint": "hint",
                    "inputs": [
                      {
                        "foo": "bar"
                      }
                    ],
                    "kind": "3d",
                    "label": "label",
                    "maskFrom": "maskFrom",
                    "max": 0,
                    "maxLength": 0,
                    "maxSize": 0,
                    "min": 0,
                    "minLength": 0,
                    "modelTypes": [
                      "custom"
                    ],
                    "parent": true,
                    "placeholder": "placeholder",
                    "prompt": true,
                    "promptSpark": true,
                    "ref": {
                      "conditional": [
                        "string"
                      ],
                      "equal": "equal",
                      "name": "name",
                      "node": "node"
                    },
                    "required": {
                      "always": true,
                      "conditionalValues": {},
                      "ifDefined": {},
                      "ifNotDefined": {}
                    },
                    "step": 1,
                    "value": {}
                  }
                ]
              ],
              "kind": "3d",
              "label": "label",
              "maskFrom": "maskFrom",
              "max": 0,
              "maxLength": 0,
              "maxSize": 0,
              "min": 0,
              "minLength": 0,
              "modelTypes": [
                "custom"
              ],
              "parent": true,
              "placeholder": "placeholder",
              "prompt": true,
              "promptSpark": true,
              "ref": {
                "conditional": [
                  "string"
                ],
                "equal": "equal",
                "name": "name",
                "node": "node"
              },
              "required": {
                "always": true,
                "conditionalValues": {},
                "ifDefined": {},
                "ifNotDefined": {}
              },
              "step": 1,
              "value": {}
            }
          ],
          "items": [
            "string"
          ],
          "iterationIndex": 0,
          "jobId": "jobId",
          "logic": {
            "cases": [
              {
                "condition": "condition",
                "value": "value"
              }
            ],
            "default": "default",
            "transform": "transform"
          },
          "logicType": "if-else",
          "loopBodyNodeIds": [
            "string"
          ],
          "loopNodeId": "loopNodeId",
          "modelId": "modelId",
          "output": {},
          "workflowId": "workflowId"
        }
      ],
      "hint": "hint",
      "input": {
        "foo": "bar"
      },
      "output": {
        "foo": "bar"
      },
      "outputModelId": "outputModelId",
      "workflowId": "workflowId",
      "workflowJobId": "workflowJobId"
    },
    "progress": 0,
    "status": "canceled",
    "statusHistory": [
      {
        "date": "date",
        "status": "canceled"
      }
    ],
    "updatedAt": "updatedAt",
    "authorId": "authorId",
    "billing": {
      "cuCost": 0,
      "cuDiscount": 0
    },
    "ownerId": "ownerId"
  },
  "synthesis": "synthesis",
  "creativeUnitsCost": 0,
  "creativeUnitsDiscount": 0
}