## Create

**post** `/models/{modelId}/presets`

Create a new preset for the given `modelId`

### Path Parameters

- `modelId: string`

### Query Parameters

- `originalAssets: optional boolean`

  If set to true, returns the original asset without transformation

- `projectId: optional string`

  The projectId used for ownership resource management. Either to assert ownership or to set the owner of the resource(s)

### Body Parameters

- `inferenceId: string`

  The inference ID used to generate new images

- `isDefault: optional boolean`

  Whether this preset should be the default preset for the model

### Returns

- `preset: object { id, authorId, createdAt, 5 more }`

  - `id: string`

    The preset ID (example: "eyVcnFJcR92BxBkz7N6g5w")

  - `authorId: string`

    The author user ID (example: "VFhihHKMRZyDDnZAJwLb2Q")

  - `createdAt: string`

    The preset creation date as an ISO string (example: "2023-02-03T11:19:41.579Z")

  - `isDefault: boolean`

    Whether the preset is the default preset of the model (example: true)

  - `modelId: string`

    The model ID (example: "eyVcnFJcR92BxBkz7N6g5w")

  - `ownerId: string`

    The owner ID (example: "VFhihHKMRZyDDnZAJwLb2Q")

  - `parameters: object { prompt, type, aspectRatio, 36 more }`

    The inference parameters

    - `prompt: string`

      Full text prompt including the model placeholder. (example: "an illustration of phoenix in a fantasy world, flying over a mountain, 8k, bokeh effect")

    - `type: "controlnet" or "controlnet_img2img" or "controlnet_inpaint" or 15 more`

      The type of inference to use. Example: txt2img, img2img, etc.

      Selecting the right type will condition the expected parameters.

      Note: for inpainting with models that support multiple base models, Scenario determines the best available `baseModel` for a given `modelId`.

      - `"controlnet"`

      - `"controlnet_img2img"`

      - `"controlnet_inpaint"`

      - `"controlnet_inpaint_ip_adapter"`

      - `"controlnet_ip_adapter"`

      - `"controlnet_reference"`

      - `"controlnet_texture"`

      - `"img2img"`

      - `"img2img_ip_adapter"`

      - `"img2img_texture"`

      - `"inpaint"`

      - `"inpaint_ip_adapter"`

      - `"outpaint"`

      - `"reference"`

      - `"reference_texture"`

      - `"txt2img"`

      - `"txt2img_ip_adapter"`

      - `"txt2img_texture"`

    - `aspectRatio: optional "16:9" or "1:1" or "21:9" or 8 more`

      The aspect ratio of the generated images. Only used for the model flux.1.1-pro-ultra.
      The aspect ratio is a string formatted as "width:height" (example: "16:9").

      - `"16:9"`

      - `"1:1"`

      - `"21:9"`

      - `"2:3"`

      - `"3:2"`

      - `"3:4"`

      - `"4:3"`

      - `"4:5"`

      - `"5:4"`

      - `"9:16"`

      - `"9:21"`

    - `baseModelId: optional string`

      The base model to use for the inference. Only Flux LoRA models can use this parameter.
      Allowed values are available in the model's attribute: `compliantModelIds`

    - `concepts: optional array of object { modelId, scale, modelEpoch }`

      - `modelId: string`

        The model ID (example: "model_eyVcnFJcR92BxBkz7N6g5w")

      - `scale: number`

        The scale of the model (example: 1.0)
        For Flux Kontext Prompt Editing, the scale is between 0 and 2.

      - `modelEpoch: optional string`

        The epoch of the model (example: "000001")
        Only available for Flux Lora Trained models

    - `controlEnd: optional number`

      Specifies how long the ControlNet guidance should be applied during the inference process.

      Only available for Flux.1-dev based models.

      The value represents the percentage of total inference steps where the ControlNet guidance is active.
      For example:

      - 1.0: ControlNet guidance is applied during all inference steps
      - 0.5: ControlNet guidance is only applied during the first half of inference steps

      Default values:

      - 0.5 for Canny modality
      - 0.6 for all other modalities

    - `controlImage: optional string`

      Signed URL to display the controlnet input image

    - `controlImageId: optional string`

      Asset id of the controlnet input image

    - `controlStart: optional number`

      Specifies the starting point of the ControlNet guidance during the inference process.

      Only available for Flux.1-dev based models.

      The value represents the percentage of total inference steps where the ControlNet guidance starts.
      For example:

      - 0.0: ControlNet guidance starts at the beginning of the inference steps
      - 0.5: ControlNet guidance starts at the middle of the inference steps

    - `disableMerging: optional boolean`

      If set to true, the entire input image will likely change during inpainting. This results in faster inferences, but the output image will be harder to integrate if the input is just a small part of a larger image.

    - `disableModalityDetection: optional boolean`

      If false, the process uses the given image to detect the modality.
      If true (default), the process will not try to detect the modality of the given image.

      For example:
      with `pose` modality and `false` value, the process will detect the pose of people in the given image
      with `depth` modality and `false` value, the process will detect the depth of the given image
      with `scribble` modality and `true`value, the process will use the given image as a scribble

      ⚠️ For models of the FLUX schnell or dev families, this parameter is ignored. The modality detection is always disabled. ⚠️

    - `guidance: optional number`

      Controls how closely the generated image follows the prompt. Higher values result in stronger adherence to the prompt. Default and allowed values depend on the model type:

      - For Flux dev models, the default is 3.5 and allowed values are within [0, 10]
      - For Flux pro models, the default is 3 and allowed values are within [2, 5]

    - `height: optional number`

      The height of the generated images, must be a 8 multiple (within [64, 2048], default: 512)
      If model.type is `flux.1.1-pro-ultra`, you can use the aspectRatio parameter instead

    - `hideResults: optional boolean`

      If set, generated assets will be hidden and not returned in the list of images of the inference
      or when listing assets (default: false)

    - `image: optional string`

      Signed URL to display the input image

    - `imageId: optional string`

      Asset id of the input image

    - `intermediateImages: optional boolean`

      Enable or disable the intermediate images generation (default: false)

    - `ipAdapterImage: optional string`

      Signed URL to display the IpAdapter image

    - `ipAdapterImageId: optional string`

      Asset id of the input IpAdapter image

    - `ipAdapterImageIds: optional array of string`

      Asset id of the input IpAdapter images

    - `ipAdapterImages: optional array of string`

      Signed URL to display the IpAdapter images

    - `ipAdapterScale: optional number`

      IpAdapter scale factor (within [0.0, 1.0], default: 0.9).

    - `ipAdapterScales: optional array of number`

      IpAdapter scale factors (within [0.0, 1.0], default: 0.9).

    - `ipAdapterType: optional "character" or "style"`

      The type of IP Adapter model to use. Must be one of [`style`, `character`], default to `style``

      - `"character"`

      - `"style"`

    - `mask: optional string`

      Signed URL to display the mask image

    - `maskId: optional string`

      Asset id of the mask image

    - `modality: optional string`

      The modality associated with the control image used for the generation: it can either be an object with a combination of maximum

      For models of the FLUX schnell or dev families:

      - one modality from: `canny`, `tile`, `depth`, `blur`, `pose`, `gray`, `low-quality`

      Optionally, you can associate a value to these modalities or presets. The value must be within `]0.0, 1.0]`.

      Examples:

      - `canny`
      - `depth:0.5,pose:1.0`
      - `canny:0.5,depth:0.5,lines:0.3`
      - `landscape`
      - `character:0.5`
      - `illusion:1`

      Note: if you use a value that is not supported by the model family, this will result in an error.

    - `modelEpoch: optional string`

      The epoch of the model to use for the inference. Only available for Flux Lora Trained models.

    - `negativePrompt: optional string`

      The prompt not to guide the image generation, ignored when guidance < 1 (example: "((ugly face))")
      For Flux based model (not Fast-Flux): requires negativePromptStrength > 0 and active only for inference types txt2img / img2img / controlnet.

    - `negativePromptStrength: optional number`

      Only applicable for flux-dev based models for `txt2img`, `img2img`, and `controlnet` inference types.

      Controls the influence of the negative prompt. Default 0 means the negative prompt has no effect. Higher values increase negative prompt influence.
      Must be > 0 if negativePrompt is provided.

    - `numInferenceSteps: optional number`

      The number of denoising steps for each image generation (within [1, 150], default: 30)

    - `numSamples: optional number`

      The number of images to generate (within [1, 128], default: 4)

    - `referenceAdain: optional boolean`

      Whether to use reference adain
      Only for "reference" inference type

    - `referenceAttn: optional boolean`

      Whether to use reference query for self attention's context
      Only for "reference" inference type

    - `scheduler: optional "DDIMScheduler" or "DDPMScheduler" or "DEISMultistepScheduler" or 12 more`

      The scheduler to use to override the default configured for the model. See detailed documentation for more details.

      - `"DDIMScheduler"`

      - `"DDPMScheduler"`

      - `"DEISMultistepScheduler"`

      - `"DPMSolverMultistepScheduler"`

      - `"DPMSolverSinglestepScheduler"`

      - `"EulerAncestralDiscreteScheduler"`

      - `"EulerDiscreteScheduler"`

      - `"HeunDiscreteScheduler"`

      - `"KDPM2AncestralDiscreteScheduler"`

      - `"KDPM2DiscreteScheduler"`

      - `"LCMScheduler"`

      - `"LMSDiscreteScheduler"`

      - `"PNDMScheduler"`

      - `"TCDScheduler"`

      - `"UniPCMultistepScheduler"`

    - `seed: optional string`

      Used to reproduce previous results. Default: randomly generated number.

    - `strength: optional number`

      Controls the noise intensity introduced to the input image, where a value of 1.0 completely erases the original image's details. Available for img2img and inpainting. (within [0.01, 1.0], default: 0.75)

    - `styleFidelity: optional number`

      If style_fidelity=1.0, control more important, else if style_fidelity=0.0, prompt more important, else balanced
      Only for "reference" inference type

    - `width: optional number`

      The width of the generated images, must be a 8 multiple (within [64, 2048], default: 512)
      If model.type is `flux.1.1-pro-ultra`, you can use the aspectRatio parameter instead

  - `updatedAt: string`

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

### Example

```http
curl https://api.cloud.scenario.com/v1/models/$MODEL_ID/presets \
    -H 'Content-Type: application/json' \
    -u "$SCENARIO_SDK_API_KEY:SCENARIO_SDK_API_SECRET" \
    -d '{
          "inferenceId": "inferenceId"
        }'
```

#### Response

```json
{
  "preset": {
    "id": "id",
    "authorId": "authorId",
    "createdAt": "createdAt",
    "isDefault": true,
    "modelId": "modelId",
    "ownerId": "ownerId",
    "parameters": {
      "prompt": "prompt",
      "type": "controlnet",
      "aspectRatio": "16:9",
      "baseModelId": "baseModelId",
      "concepts": [
        {
          "modelId": "modelId",
          "scale": -2,
          "modelEpoch": "modelEpoch"
        }
      ],
      "controlEnd": 0.1,
      "controlImage": "controlImage",
      "controlImageId": "controlImageId",
      "controlStart": 0,
      "disableMerging": true,
      "disableModalityDetection": true,
      "guidance": 0,
      "height": 64,
      "hideResults": true,
      "image": "image",
      "imageId": "imageId",
      "intermediateImages": true,
      "ipAdapterImage": "ipAdapterImage",
      "ipAdapterImageId": "ipAdapterImageId",
      "ipAdapterImageIds": [
        "string"
      ],
      "ipAdapterImages": [
        "string"
      ],
      "ipAdapterScale": 0,
      "ipAdapterScales": [
        0
      ],
      "ipAdapterType": "character",
      "mask": "mask",
      "maskId": "maskId",
      "modality": "modality",
      "modelEpoch": "modelEpoch",
      "negativePrompt": "negativePrompt",
      "negativePromptStrength": 0,
      "numInferenceSteps": 1,
      "numSamples": 1,
      "referenceAdain": true,
      "referenceAttn": true,
      "scheduler": "DDIMScheduler",
      "seed": "seed",
      "strength": 0.01,
      "styleFidelity": 0,
      "width": 64
    },
    "updatedAt": "updatedAt"
  }
}
```
