{
  "openapi": "3.1.0",
  "info": {
    "title": "Runware API - Krea 2 Raw",
    "summary": "Open-weight Krea 2 base architecture",
    "description": "Krea 2 Raw is the base architecture of the open-weight Krea 2 family, a 12B text-to-image model released before the post-training and distillation that produce Krea 2 Turbo. LoRAs uploaded for it also run on Krea 2 Turbo.",
    "version": "1.0.0",
    "x-model-id": "krea-2-raw-oss",
    "x-air-id": "krea-2-raw-oss",
    "x-status": "live",
    "x-creator": {
      "id": "krea",
      "name": "Krea",
      "logo": "https://assets.runware.ai/547bfbf4-e83c-4c9f-9c24-b50e030db960.png"
    },
    "x-capabilities": [
      "text-to-image",
      "image-to-image"
    ],
    "x-modes": [
      {
        "id": "text",
        "inputs": []
      },
      {
        "id": "reference-images",
        "inputs": [
          "referenceImages"
        ]
      }
    ],
    "x-cover-image": "https://assets.runware.ai/covers/krea-oss-2.jpg"
  },
  "externalDocs": {
    "description": "Krea 2 Raw on Runware",
    "url": "https://runware.ai/docs/models/krea-2-raw-oss"
  },
  "servers": [
    {
      "url": "https://api.runware.ai/v1",
      "description": "Runware REST API"
    }
  ],
  "components": {
    "securitySchemes": {
      "apiKeyAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Runware API Key (e.g., Bearer <your-key>)"
      }
    },
    "schemas": {
      "AuthenticationTask": {
        "title": "Authentication",
        "description": "Authenticates a connection using an API key. Can be sent as the first element of the request array as an alternative to using the Authorization header.",
        "type": "object",
        "x-response-schema": "https://schemas.runware.ai/responses/utilities/authentication.json",
        "properties": {
          "taskType": {
            "title": "Task Type",
            "description": "Identifier for the type of task being performed.",
            "type": "string",
            "const": "authentication"
          },
          "apiKey": {
            "title": "API Key",
            "description": "Your Runware API key.",
            "type": "string"
          },
          "connectionSessionUUID": {
            "title": "Connection Session UUID",
            "description": "Optional session UUID to resume a previous connection and receive any buffered results.",
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "taskType",
          "apiKey"
        ],
        "additionalProperties": false
      },
      "RequestBody": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "inputs": {
              "title": "Inputs",
              "description": "Input assets for the task.",
              "type": "object",
              "properties": {
                "referenceImages": {
                  "type": "array",
                  "title": "Reference Images",
                  "description": "Style reference images for guiding generation. Each item can be a plain image input (UUID, URL, DataURI, or Base64) or an object with an image and a per-image strength.\n\n**Examples**:\n\n**Shorthand format:** When you don't need to specify a custom strength, you can pass a plain image input directly. It will use the default influence strength.\n\n```json\n\"referenceImages\": [\n  \"aac49721-1964-481a-ae78-8a4e29b91402\"\n]\n```\n\n**Object format:** When you need to control the exact influence of the reference image, use an object with `image` and `strength`. Positive values guide the output toward the reference; negative values guide away from it.\n\n```json\n\"referenceImages\": [\n  {\n    \"image\": \"aac49721-1964-481a-ae78-8a4e29b91402\",\n    \"strength\": 0.7\n  }\n]\n```\n\n**Multiple images:** You can provide multiple reference images and even mix both formats.\n\n```json\n\"referenceImages\": [\n  \"aac49721-1964-481a-ae78-8a4e29b91402\",\n  {\n    \"image\": \"3ad204c3-a9de-4963-8a1a-c3911e3afafe\",\n    \"strength\": 1.2\n  }\n]\n```\n\n[Read full documentation](https://runware.ai/docs/models/krea-2-raw-oss#referenceImages)",
                  "minItems": 1,
                  "items": {
                    "anyOf": [
                      {
                        "title": "Image",
                        "description": "Image input (UUID, URL, Data URI, or Base64).",
                        "type": "string",
                        "anyOf": [
                          {
                            "format": "uuid"
                          },
                          {
                            "format": "uri"
                          },
                          {
                            "pattern": "^data:image\\/[a-zA-Z]+;base64,[a-zA-Z0-9+/=]+$"
                          },
                          {
                            "pattern": "^[a-zA-Z0-9+/=]+$"
                          }
                        ]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "image": {
                            "title": "Image",
                            "description": "Image input (UUID, URL, Data URI, or Base64).",
                            "type": "string",
                            "anyOf": [
                              {
                                "format": "uuid"
                              },
                              {
                                "format": "uri"
                              },
                              {
                                "pattern": "^data:image\\/[a-zA-Z]+;base64,[a-zA-Z0-9+/=]+$"
                              },
                              {
                                "pattern": "^[a-zA-Z0-9+/=]+$"
                              }
                            ]
                          },
                          "strength": {
                            "type": "number",
                            "title": "Strength",
                            "description": "Influence strength of the reference image on the generated output.",
                            "default": 0.5,
                            "minimum": 0,
                            "maximum": 1
                          }
                        },
                        "required": [
                          "image"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  },
                  "maxItems": 4
                }
              },
              "additionalProperties": false
            },
            "positivePrompt": {
              "title": "Positive Prompt",
              "description": "Text prompt describing elements to include in the generated output.",
              "type": "string",
              "minLength": 2,
              "maxLength": 10000
            },
            "negativePrompt": {
              "title": "Negative Prompt",
              "description": "Prompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1).",
              "type": "string",
              "minLength": 2,
              "maxLength": 3000
            },
            "width": {
              "title": "Width",
              "description": "Width of the generated media in pixels.",
              "type": "integer",
              "minimum": 64,
              "maximum": 2048,
              "multipleOf": 16
            },
            "height": {
              "title": "Height",
              "description": "Height of the generated media in pixels.",
              "type": "integer",
              "minimum": 64,
              "maximum": 2048,
              "multipleOf": 16
            },
            "seed": {
              "title": "Seed",
              "description": "Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range.",
              "type": "integer",
              "minimum": 0,
              "maximum": 9223372036854776000
            },
            "steps": {
              "title": "Steps",
              "description": "Total number of denoising steps. Higher values generally produce more detailed results but take longer.",
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            },
            "CFGScale": {
              "title": "CFG Scale",
              "description": "Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt.",
              "type": "number",
              "multipleOf": 0.01,
              "minimum": 0,
              "maximum": 30
            },
            "acceleration": {
              "title": "Acceleration Option",
              "description": "Optimization level.",
              "type": "string",
              "enum": [
                "none",
                "low",
                "medium",
                "high"
              ],
              "default": "medium"
            },
            "lora": {
              "title": "LoRA",
              "description": "With LoRA (Low-Rank Adaptation), you can adapt a model to specific styles or features by emphasizing particular aspects of the data. This technique enhances the quality and relevance of generated content and can be especially useful when the output needs to adhere to a specific artistic style or follow particular guidelines.\n\nMultiple LoRA models can be used simultaneously to achieve different adaptation goals.\n\n**Examples**:\n\n```json\n\"lora\": [\n  {\n    \"model\": \"<lora-model-air>\",\n    \"weight\": 0.8\n  }\n]\n```\n\n[Read full documentation](https://runware.ai/docs/models/krea-2-raw-oss#lora)",
              "type": "array",
              "minItems": 1,
              "items": {
                "type": "object",
                "properties": {
                  "model": {
                    "title": "LoRA Model",
                    "description": "LoRA model identifier.",
                    "type": "string",
                    "pattern": "^[a-zA-Z0-9._-]+(:[a-zA-Z0-9._/@-]+)?$"
                  },
                  "weight": {
                    "title": "LoRA Weight",
                    "description": "Strength of the LoRA influence. A value of 0 means no influence. Higher values increase the influence, and negative values can be used to steer away from the LoRA's style.",
                    "type": "number",
                    "multipleOf": 0.01,
                    "minimum": -4,
                    "maximum": 4,
                    "default": 1
                  }
                },
                "required": [
                  "model"
                ],
                "additionalProperties": false
              }
            },
            "taskType": {
              "title": "Task Type",
              "description": "Identifier for the type of task being performed.",
              "type": "string",
              "const": "imageInference"
            },
            "taskUUID": {
              "title": "Task UUID",
              "description": "UUID v4 identifier for tracking tasks and matching async responses. Must be unique per task.",
              "type": "string",
              "format": "uuid"
            },
            "webhookURL": {
              "title": "Webhook URL",
              "description": "Webhook URL that receives JSON responses via HTTP POST when generation tasks complete. For batch requests with multiple results, each completed item triggers a separate webhook call as it becomes available.",
              "type": "string",
              "format": "uri"
            },
            "includeCost": {
              "title": "Include Cost",
              "description": "Include task cost in the response.",
              "type": "boolean"
            },
            "routing": {
              "title": "Routing",
              "description": "Model router options. Read only when `model` is `auto`, and never sent to the model.",
              "type": "object",
              "properties": {
                "preferences": {
                  "title": "Preferences",
                  "description": "What matters for this request. Weights relative to each other, not thresholds: a cost of 5 means cost decides, not that any particular price is acceptable.",
                  "type": "object",
                  "properties": {
                    "quality": {
                      "title": "Weight",
                      "description": "How much one dimension counts against the others.",
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 5
                    },
                    "speed": {
                      "title": "Weight",
                      "description": "How much one dimension counts against the others.",
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 5
                    },
                    "cost": {
                      "title": "Weight",
                      "description": "How much one dimension counts against the others.",
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 5
                    }
                  },
                  "additionalProperties": false
                },
                "maxPrice": {
                  "title": "Max Price",
                  "description": "Upper bound on the price for this task, in the unit that task is priced in. A model with no comparable price recorded stays eligible.",
                  "type": "number",
                  "minimum": 0
                },
                "requirements": {
                  "title": "Requirements",
                  "description": "What the result has to do, in words. Read as conditions a model has to satisfy, so a model that cannot meet them is not chosen however well it scores. Not a prompt: the prompt says what to make.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "model": {
              "title": "Model",
              "description": "Identifier of the model to use for generation.",
              "type": "string",
              "pattern": "^[a-zA-Z0-9._-]+(:[a-zA-Z0-9._/@-]+)?$"
            },
            "numberResults": {
              "title": "Number of Results",
              "description": "Number of results to generate. Each result uses a different seed, producing variations of the same parameters.",
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "maximum": 20
            },
            "uploadEndpoint": {
              "title": "Upload Endpoint",
              "description": "Specifies a URL where the generated content will be automatically uploaded using the HTTP PUT method. The raw binary data of the media file is sent directly as the request body. For secure uploads to cloud storage, use presigned URLs that include temporary authentication credentials.\n\n**Common use cases:**\n\n- **Cloud storage**: Upload directly to S3 buckets, Google Cloud Storage, or Azure Blob Storage using presigned URLs.\n- **CDN integration**: Upload to content delivery networks for immediate distribution.\n\n```text\n// S3 presigned URL for secure upload\nhttps://your-bucket.s3.amazonaws.com/generated/content.mp4?X-Amz-Signature=abc123&X-Amz-Expires=3600\n\n// Google Cloud Storage presigned URL\nhttps://storage.googleapis.com/your-bucket/content.jpg?X-Goog-Signature=xyz789\n\n// Custom storage endpoint\nhttps://storage.example.com/uploads/generated-image.jpg\n```\n\nThe content data will be sent as the request body to the specified URL when generation is complete.\n\n[Read full documentation](https://runware.ai/docs/models/krea-2-raw-oss#uploadEndpoint)",
              "type": "string",
              "format": "uri"
            },
            "ttl": {
              "title": "TTL",
              "description": "Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.",
              "type": "integer",
              "minimum": 60
            },
            "outputType": {
              "title": "Output Type",
              "description": "Image output type.",
              "type": "string",
              "enum": [
                "URL",
                "base64Data",
                "dataURI"
              ],
              "default": "URL"
            },
            "outputFormat": {
              "title": "Output Format",
              "description": "Specifies the file format of the generated output. The available values depend on the task type and the specific model's capabilities.\n\n- \\`JPG\\`: Best for photorealistic images with smaller file sizes (no transparency).\n- \\`PNG\\`: Lossless compression, supports high quality and transparency (alpha channel).\n- \\`WEBP\\`: Modern format providing superior compression and transparency support.\n- \\`MP4\\`: Widely supported video container (H.264), recommended for general use.\n- \\`WEBM\\`: Optimized for web delivery.\n- \\`MOV\\`: QuickTime format, common in professional workflows (Apple ecosystem).\n- \\`GIF\\`: Animated image format (no audio), suitable for short loops or previews.\n- \\`MP3\\`: Compressed audio, smaller file size.\n- \\`WAV\\`: Uncompressed, high-quality audio.\n- \\`FLAC\\`: Lossless compression.\n- \\`OGG\\`: Open-source compressed audio format (Vorbis codec).\n- \\`SVG\\`: Scalable Vector Graphics.\n- \\`TIFF\\`: High-quality output supporting layers.\n- \\`GLB\\`: Binary glTF format for 3D models, including geometry, textures, and PBR materials.\n\n> [!NOTE]\n> \\*\\*Transparency\\*\\*: If you are using features like background removal or LayerDiffuse that require transparency, you must select a format that supports an alpha channel (e.g., \\`PNG\\`, \\`WEBP\\`, \\`TIFF\\`). \\`JPG\\` does not support transparency.\n\n[Read full documentation](https://runware.ai/docs/models/krea-2-raw-oss#outputFormat)",
              "type": "string",
              "enum": [
                "JPG",
                "PNG",
                "WEBP"
              ],
              "default": "JPG"
            },
            "outputQuality": {
              "title": "Output Quality",
              "description": "Compression quality of the output. Higher values preserve quality but increase file size.",
              "type": "integer",
              "minimum": 20,
              "maximum": 99,
              "default": 95
            },
            "deliveryMethod": {
              "title": "Delivery Method",
              "description": "Determines how the API delivers task results.",
              "type": "string",
              "oneOf": [
                {
                  "const": "sync",
                  "description": "Returns complete results directly in the API response."
                },
                {
                  "const": "async",
                  "description": "Returns an immediate acknowledgment with the task UUID. Poll for results using getResponse."
                }
              ],
              "default": "sync"
            },
            "safety": {
              "type": "object",
              "title": "Safety Settings",
              "description": "Content safety checking configuration for image generation.",
              "properties": {
                "checkContent": {
                  "title": "Check Content",
                  "description": "Enable or disable content safety checking. Increases total generation time.",
                  "type": "boolean"
                }
              },
              "additionalProperties": false
            },
            "advancedFeatures": {
              "title": "Advanced Features",
              "description": "Model-specific advanced configuration options.",
              "type": "object",
              "properties": {
                "watermark": {
                  "title": "Watermark",
                  "description": "Configuration object for adding watermarks to generated videos. Watermarks can be applied using either text or image content with customizable positioning and appearance. You must provide either `text` or `image` content for the watermark, but not both.\n\n**Text watermark**:\n\n```json\n\"advancedFeatures\": {\n  \"watermark\": {\n    \"text\": \"© 2025 Company\",\n    \"displayPosition\": \"bottom-right\",\n    \"opacity\": 0.6,\n    \"fontColor\": \"#ffffff\",\n    \"bgColor\": \"#000000\"\n  }\n}\n```\n\n**Image watermark**:\n\n```json\n\"advancedFeatures\": {\n  \"watermark\": {\n    \"image\": \"c64351d5-4c59-42f7-95e1-eace013eddab\",\n    \"displayPosition\": \"top-left\",\n    \"opacity\": 0.6\n  }\n}\n```\n\n**Tiled watermark**:\n\n```json\n\"advancedFeatures\": {\n  \"watermark\": {\n    \"text\": \"PREVIEW\",\n    \"tiled\": true,\n    \"opacity\": 0.4,\n    \"fontColor\": \"#cccccc\"\n  }\n}\n```\n\n[Read full documentation](https://runware.ai/docs/models/krea-2-raw-oss#watermark)",
                  "type": "object",
                  "properties": {
                    "text": {
                      "title": "Watermark Text",
                      "description": "Watermark text.",
                      "type": "string",
                      "minLength": 2,
                      "maxLength": 32
                    },
                    "image": {
                      "title": "Watermark Image",
                      "description": "Watermark image (UUID, URL, Data URI, or Base64).",
                      "type": "string",
                      "anyOf": [
                        {
                          "format": "uuid"
                        },
                        {
                          "format": "uri"
                        },
                        {
                          "pattern": "^data:image\\/[a-zA-Z]+;base64,[a-zA-Z0-9+/=]+$"
                        },
                        {
                          "pattern": "^[a-zA-Z0-9+/=]+$"
                        }
                      ]
                    },
                    "displayPosition": {
                      "title": "Display Position",
                      "description": "Watermark position.",
                      "type": "string",
                      "enum": [
                        "top-left",
                        "top-center",
                        "top-right",
                        "center-left",
                        "center-center",
                        "center-right",
                        "bottom-left",
                        "bottom-center",
                        "bottom-right",
                        "tiled"
                      ]
                    },
                    "opacity": {
                      "title": "Watermark Opacity",
                      "description": "Watermark opacity.",
                      "type": "number",
                      "multipleOf": 0.01,
                      "minimum": 0.1,
                      "maximum": 1
                    },
                    "fontColor": {
                      "title": "Font Color",
                      "description": "Text color in hex format.",
                      "type": "string",
                      "pattern": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"
                    },
                    "bgColor": {
                      "title": "Background Color",
                      "description": "Background color in hex format.",
                      "type": "string",
                      "pattern": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"
                    }
                  },
                  "oneOf": [
                    {
                      "required": [
                        "text"
                      ]
                    },
                    {
                      "required": [
                        "image"
                      ]
                    }
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            }
          },
          "required": [
            "positivePrompt",
            "width",
            "height",
            "taskType",
            "taskUUID",
            "model"
          ],
          "allOf": [
            {
              "dependentRequired": {
                "width": [
                  "height"
                ],
                "height": [
                  "width"
                ]
              }
            }
          ],
          "additionalProperties": false
        },
        "description": "You must always POST an array of task objects."
      },
      "ResponseBody": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "title": "Image Response",
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "taskType": {
                  "title": "Task Type",
                  "description": "Identifier for the type of task this response belongs to.",
                  "type": "string",
                  "const": "imageInference"
                },
                "taskUUID": {
                  "title": "Task UUID",
                  "description": "UUID v4 identifier echoed from the original request, used to match async responses to their tasks.",
                  "type": "string",
                  "format": "uuid"
                },
                "cost": {
                  "title": "Cost",
                  "description": "Task cost in USD. Present when `includeCost` is set to `true` in the request.",
                  "type": "number"
                },
                "imageUUID": {
                  "title": "Image UUID",
                  "description": "UUID of the output image.",
                  "type": "string",
                  "format": "uuid"
                },
                "imageURL": {
                  "title": "Image URL",
                  "description": "URL of the output image.",
                  "type": "string",
                  "format": "uri"
                },
                "imageBase64Data": {
                  "title": "Image Base64 Data",
                  "description": "Base64-encoded image data.",
                  "type": "string"
                },
                "imageDataURI": {
                  "title": "Image Data URI",
                  "description": "Data URI of the output image.",
                  "type": "string",
                  "format": "uri"
                },
                "seed": {
                  "title": "Seed",
                  "description": "The seed used for generation. If none was provided, shows the randomly generated seed.",
                  "type": "integer"
                },
                "NSFWContent": {
                  "title": "NSFW Content",
                  "description": "Flag indicating if NSFW content was detected.",
                  "type": "boolean"
                }
              },
              "required": [
                "taskType",
                "taskUUID",
                "imageUUID"
              ]
            }
          }
        }
      },
      "ErrorResponse": {
        "title": "Error Response",
        "description": "Standard error response returned by the Runware API.",
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "code",
                "message"
              ],
              "additionalProperties": true,
              "properties": {
                "code": {
                  "type": "string",
                  "description": "A short identifier for the error (e.g., invalidApiKey, timeoutProvider)."
                },
                "message": {
                  "type": "string",
                  "description": "A human-readable explanation of what went wrong."
                },
                "parameter": {
                  "type": "string",
                  "description": "The request parameter related to the error, if applicable."
                },
                "taskType": {
                  "type": "string",
                  "description": "The task type of the request that failed."
                },
                "taskUUID": {
                  "type": "string",
                  "description": "The unique identifier of the failed request."
                },
                "documentation": {
                  "type": "string",
                  "description": "A link to relevant documentation."
                }
              }
            }
          }
        },
        "required": [
          "errors"
        ],
        "additionalProperties": false
      }
    }
  },
  "paths": {
    "/": {
      "post": {
        "summary": "Run Krea 2 Raw",
        "description": "Krea 2 Raw is the base architecture of the open-weight Krea 2 family, a 12B text-to-image model released before the post-training and distillation that produce Krea 2 Turbo. LoRAs uploaded for it also run on Krea 2 Turbo.",
        "operationId": "run_krea_2_raw_oss",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request — Missing or invalid parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized — No valid API key provided.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required — Insufficient account balance.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — The API key lacks permissions for this request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests — Rate limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server Error — Something went wrong on Runware's end.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable — Temporarily unavailable (maintenance or capacity).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "apiKeyAuth": []
    }
  ]
}