Krea 2 Turbo API, Krea 2 API: Pricing, Documentation

by Krea.AI

Krea 2 Turbo API is a developer-focused interface for accessing Krea’s flagship foundation image model, enabling applications to generate and transform high-quality visuals with fine-grained creative control. Designed to support a wide range of artistic and commercial workflows, the API allows developers to create images from text prompts, leverage reference images and moodboards, apply advanced style transfer, and adjust creativity parameters to influence the visual direction of outputs. As part of Krea’s broader AI platform, Krea 2 API integrates into a scalable, asynchronous workflow and is built to help teams produce distinctive, brand-aligned imagery while maintaining flexibility across diverse creative use cases.

Get API Key
Krea API

Models Version

WELCOME BONUS

Get $5 Free Credit on First Payment

No strings attached — add funds and get $5 bonus instantly

Claim Your $5 →

Krea 2 Turbo API Documentation

https://gateway.pixazo.ai/krea-2-turbo/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Krea 2 Turbo generate request

Request Code

POST https://gateway.pixazo.ai/krea-2-turbo/v1/krea-2-turbo-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "prompt": "A surreal floating island with waterfalls cascading into the clouds, soft golden light",
  "image_size": "square_hd",
  "num_images": 1,
  "acceleration": "none",
  "output_format": "png",
  "enable_safety_checker": true,
  "sync_mode": false
}
import requests

url = "https://gateway.pixazo.ai/krea-2-turbo/v1/krea-2-turbo-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
    "prompt": "A surreal floating island with waterfalls cascading into the clouds, soft golden light",
    "image_size": "square_hd",
    "num_images": 1,
    "acceleration": "none",
    "output_format": "png",
    "enable_safety_checker": true,
    "sync_mode": false
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/krea-2-turbo/v1/krea-2-turbo-request";
const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
};
const data = {
  "prompt": "A surreal floating island with waterfalls cascading into the clouds, soft golden light",
  "image_size": "square_hd",
  "num_images": 1,
  "acceleration": "none",
  "output_format": "png",
  "enable_safety_checker": true,
  "sync_mode": false
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/krea-2-turbo/v1/krea-2-turbo-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  --data-raw '{
    "prompt": "A surreal floating island with waterfalls cascading into the clouds, soft golden light",
    "image_size": "square_hd",
    "num_images": 1,
    "acceleration": "none",
    "output_format": "png",
    "enable_safety_checker": true,
    "sync_mode": false
  }'

Output

{
  "request_id": "krea-2-turbo_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/krea-2-turbo_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Krea 2 Turbo generate request

Parameter Required Type Default Allowed values / range Description
promptYesstringnon-empty; ≤ 5000 charsText prompt for image generation (1–5000 characters)
image_sizeNostring or object"square_hd""square_hd", "square", "portrait_4_3", "portrait_16_9", "landscape_4_3", "landscape_16_9", or {width: int, height: int} (max 14142 each)Preset aspect ratios: square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9. Alternatively, provide a custom object with width and height integers (max 14142 each).
num_imagesNointeger11–4Number of images to generate (1–4). Each image uses seed + i as its random seed.
accelerationNostring"none""none", "regular"Inference acceleration mode. Allowed: none, regular.
output_formatNostring"png""jpeg", "png"Output image format. Allowed: jpeg, png.
enable_safety_checkerNobooleantruetrue, falseEnable NSFW content filtering. Set to false to disable.
seedNointegerOptional random seed for reproducible results. If omitted, a random seed is used.
sync_modeNobooleanfalsetrue, falseIf true, returns the generated image(s) as data URI(s) inline in the response. If false, returns a request_id for async polling.

Example Request

{
  "prompt": "A surreal floating island with waterfalls cascading into the clouds, soft golden light",
  "image_size": "square_hd",
  "num_images": 1,
  "acceleration": "none",
  "output_format": "png",
  "enable_safety_checker": true,
  "sync_mode": false
}

Response

{
  "request_id": "krea-2-turbo_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/krea-2-turbo_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_API_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'krea-2-turbo' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "krea-2-turbo_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "krea-2-turbo",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/krea-2-turbo_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "krea-2-turbo_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "krea-2-turbo",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/krea-2-turbo_019dxxxx/output.png"],
    "media_type": "image/png"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Krea 2 Turbo API Pricing

Your request will cost $0.01 per image.
Text to Image (LoRA Trainer)

Krea 2 Turbo API Documentation

https://gateway.pixazo.ai/krea-2-turbo-lora/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Krea 2 Turbo LoRA generate request

Request Code

POST https://gateway.pixazo.ai/krea-2-turbo-lora/v1/krea-2-turbo-lora-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "prompt": "A portrait of sks_subject in the style of a vintage oil painting, dramatic lighting",
  "loras": [
    {
      "path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/lora.safetensors",
      "scale": 1
    }
  ],
  "image_size": "square_hd",
  "num_images": 1,
  "acceleration": "none",
  "output_format": "png",
  "enable_safety_checker": true,
  "sync_mode": false
}
import requests

url = "https://gateway.pixazo.ai/krea-2-turbo-lora/v1/krea-2-turbo-lora-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
    "prompt": "A portrait of sks_subject in the style of a vintage oil painting, dramatic lighting",
    "loras": [
        {
            "path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/lora.safetensors",
            "scale": 1
        }
    ],
    "image_size": "square_hd",
    "num_images": 1,
    "acceleration": "none",
    "output_format": "png",
    "enable_safety_checker": true,
    "sync_mode": false
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/krea-2-turbo-lora/v1/krea-2-turbo-lora-request";

const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
};

const data = {
  "prompt": "A portrait of sks_subject in the style of a vintage oil painting, dramatic lighting",
  "loras": [
    {
      "path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/lora.safetensors",
      "scale": 1
    }
  ],
  "image_size": "square_hd",
  "num_images": 1,
  "acceleration": "none",
  "output_format": "png",
  "enable_safety_checker": true,
  "sync_mode": false
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/krea-2-turbo-lora/v1/krea-2-turbo-lora-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  --data-raw '{
    "prompt": "A portrait of sks_subject in the style of a vintage oil painting, dramatic lighting",
    "loras": [
      {
        "path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/lora.safetensors",
        "scale": 1
      }
    ],
    "image_size": "square_hd",
    "num_images": 1,
    "acceleration": "none",
    "output_format": "png",
    "enable_safety_checker": true,
    "sync_mode": false
  }'

Output

{
  "request_id": "krea-2-turbo-lora_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/krea-2-turbo-lora_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Krea 2 Turbo LoRA generate request

Parameter Required Type Default Allowed values / range Description
promptYesstringnon-empty; ≤ 5000 charsText description for image generation (1–5000 characters).
lorasNoarray[]Up to 3 LoRA weights to apply. Each element {path (string, required), scale (float, default 1, 0-4)}. path accepts a URL, HuggingFace repo id (owner/repo), or local path.
image_sizeNostring or object"square_hd""square_hd", "square", "portrait_4_3", "portrait_16_9", "landscape_4_3", "landscape_16_9", or {width: integer, height: integer} (max 14142 each)Image dimensions preset or custom. Presets: square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9. Custom object: {width: integer, height: integer} with max 14142 for either dimension.
num_imagesNointeger11–4Number of images to generate (1–4). Each image uses seed + i for variation.
accelerationNostring"none""none", "regular"Inference acceleration mode.
output_formatNostring"png""jpeg", "png"Output image format.
enable_safety_checkerNobooleantrueEnable NSFW content filtering.
seedNointegerOptional random seed for reproducible results.
sync_modeNobooleanfalseIf true, returns the image as a base64-encoded data URI inline in the response. Otherwise, returns a polling ID.

Example Request

{
  "prompt": "A portrait of sks_subject in the style of a vintage oil painting, dramatic lighting",
  "loras": [
    {
      "path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/lora.safetensors",
      "scale": 1
    }
  ],
  "image_size": "square_hd",
  "num_images": 1,
  "acceleration": "none",
  "output_format": "png",
  "enable_safety_checker": true,
  "sync_mode": false
}

Response

{
  "request_id": "krea-2-turbo-lora_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/krea-2-turbo-lora_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_API_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'krea-2-turbo-lora' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "krea-2-turbo-lora_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "krea-2-turbo-lora",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/krea-2-turbo-lora_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "krea-2-turbo-lora_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "krea-2-turbo-lora",
  "error": null,
  "output": {
    "media_url": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/krea-2-turbo-lora_019dxxxx/output.png"],
    "media_type": "image/png"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Krea 2 Turbo API Pricing

Your request will cost $0.015 per image.
2. Krea 2 Large

Krea 2 Large API Documentation

Generate a high-quality image from a text prompt with Krea 2 Large. This is an asynchronous (queue) API: submit a request, then poll for the result.

POST https://gateway.pixazo.ai/krea-2-large/v1/text-to-image

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Text to Image - Krea 2 Large

Request Code

POST /krea-2-large/v1/text-to-image HTTP/1.1
Host: gateway.pixazo.ai
Ocp-Apim-Subscription-Key: YOUR_API_KEY
Content-Type: application/json

{
  "prompt": "a cinematic glass cabin beside a frozen lake at sunrise",
  "aspect_ratio": "16:9",
  "resolution": "1K"
}
import requests

resp = requests.post(
    "https://gateway.pixazo.ai/krea-2-large/v1/text-to-image",
    headers={
        "Ocp-Apim-Subscription-Key": "YOUR_API_KEY",
        "Content-Type": "application/json",
    },
    json={
        "prompt": "a cinematic glass cabin beside a frozen lake at sunrise",
        "aspect_ratio": "16:9",
        "resolution": "1K",
    },
)
print(resp.json())
const res = await fetch("https://gateway.pixazo.ai/krea-2-large/v1/text-to-image", {
  method: "POST",
  headers: {
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    prompt: "a cinematic glass cabin beside a frozen lake at sunrise",
    aspect_ratio: "16:9",
    resolution: "1K",
  }),
});
const data = await res.json();
console.log(data);
curl -X POST "https://gateway.pixazo.ai/krea-2-large/v1/text-to-image" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "a cinematic glass cabin beside a frozen lake at sunrise",
    "aspect_ratio": "16:9",
    "resolution": "1K"
  }'

Output

{
  "request_id": "krea-2-large_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/krea-2-large_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Instead of polling, you can receive an HTTP callback when the request reaches a terminal state. Pass the webhook URL via the X-Webhook-URL header on the submit request.

Webhook Headers

HeaderTypeRequiredDescription
X-Webhook-URLstringNoHTTPS URL that receives a POST callback when the request finishes. Enables webhook delivery.
X-Webhook-ModestringNoterminal (default) fires once on COMPLETED/ERROR; sync also fires a progress webhook on every poll cycle.

Example: enable webhook

curl -X POST "https://gateway.pixazo.ai/krea-2-large/v1/text-to-image" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Webhook-URL: https://your-server.com/webhooks/krea" \
  -d '{"prompt":"a serene mountain lake","aspect_ratio":"16:9","resolution":"1K"}'

Callback Payload (Success)

{
  "request_id": "krea-2-large_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "krea-2-large",
  "output": {
    "media_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/krea-2-large/019dxxxx-result.png",
    "media_type": "image/png"
  },
  "completed_at": "2026-06-23T10:00:18.000Z"
}

Callback Payload (Failure)

{
  "request_id": "krea-2-large_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "krea-2-large",
  "error": "GENERATION_FAILED: ",
  "output": null
}

Delivery semantics

  • terminal mode (default): one webhook fires when the request reaches COMPLETED or ERROR.
  • sync mode: a progress webhook fires on every poll cycle (carrying the current status) plus the terminal webhook.
  • Deliveries are idempotent on request_id — de-duplicate on your side.
  • Respond 200 within a few seconds; non-2xx may be retried.
  • The webhook URL must be HTTPS.

Request Parameters - Text to Image

ParameterRequiredTypeDefaultAllowed values / rangeDescription
promptYesstringAny descriptive textText prompt describing the image to generate.
aspect_ratioYesstring"1:1", "4:3", "3:2", "16:9", "2.35:1", "4:5", "2:3", "9:16"Aspect ratio of the generated image.
resolutionYesstring"1K"Resolution scale.
creativityNostring"low""raw", "low", "medium", "high"Prompt expansion mode. raw disables expansion; low/medium/high control strength.
complexityNointeger0-100 – 100K2 Complexity slider. 0 disables the slider LoRA.
intensityNointeger0-100 – 100K2 Intensity slider. 0 disables the slider LoRA.
movementNointeger0-100 – 100K2 Movement slider. 0 disables the slider LoRA.
seedNonumber— (random)any integer, or nullRandom seed for reproducible generations. Omit or pass null for a random seed.
image_style_referencesNoarrayup to 10 itemsReference images to drive the visual style (not editing — style conditioning only).
image_style_references[].urlConditionalstring (uri)max 1024 charsURL of the reference image. Required for each item.
image_style_references[].strengthNonumber0.50 – 1Style influence (0 = none, 1 = maximum).
moodboardsNoarrayexactly 1 itemMoodboard reference (currently limited to one).
moodboards[].idConditionalstring (uuid)UUIDMoodboard identifier. Required for each item.
moodboards[].strengthNonumber0.230 – 1Moodboard influence (0 = none, 1 = maximum).
stylesNoarrayLoRAs / style presetsStyles (typically LoRAs) to apply to the generation.
styles[].idConditionalstringStyle (LoRA) identifier. Required for each item.
styles[].strengthConditionalnumber-2 – 2Style strength. Required for each item.

Content Item Types & Limits

TypeMaxFormat / SizeDescription
image10JPG, PNG, WEBPStyle reference image(s), up to 10.

Note: Krea 2 Large is text-to-image only. The image inputs above (image_style_references, moodboards) are style/conditioning references — there is no image-to-image or editing mode.

Example Request

{
  "prompt": "a cinematic glass cabin beside a frozen lake at sunrise",
  "aspect_ratio": "16:9",
  "resolution": "1K",
  "creativity": "medium",
  "complexity": 0,
  "intensity": 0,
  "movement": 0,
  "seed": 12345,
  "image_style_references": [
    { "url": "https://example.com/style.jpg", "strength": 0.5 }
  ]
}

Response

{
  "request_id": "krea-2-large_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/krea-2-large_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key
Content-TypestringYesapplication/json
X-Webhook-URLstringNoHTTPS URL to receive a terminal callback
X-Webhook-ModestringNoterminal (default) or sync

Response Handling

Status CodeMeaning
202Accepted — request queued; use polling_url to retrieve the result.
400Bad request — invalid or missing parameters.
401Unauthorized — missing or invalid subscription key.
402Insufficient balance — top up your wallet.
403Forbidden — key not authorized for this API.
429Too many requests — rate limit exceeded.
500Internal server error.

Error Responses

Submit-time errors are returned synchronously; generation errors are reported on the status response (and webhook) with status: "ERROR".

// 402 Insufficient balance
{ "error": "Insufficient balance. Required amount: $0.06" }

// 400 Validation error
{ "success": false, "error": { "message": "aspect_ratio is required and must be one of: 1:1, 4:3, 3:2, 16:9, 2.35:1, 4:5, 2:3, 9:16", "code": "VALIDATION_ERROR" } }

// Generation failure (via status / webhook)
{ "request_id": "krea-2-large_019dxxxx-...", "status": "ERROR", "model_id": "krea-2-large", "error": "GENERATION_FAILED: ", "output": null }

Retrieving Results

Poll the universal status endpoint with the request_id from the submit response until status is terminal (COMPLETED / FAILED / ERROR).

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}

cURL Example

curl "https://gateway.pixazo.ai/v2/requests/status/krea-2-large_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY"

Response (Completed)

{
  "request_id": "krea-2-large_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "krea-2-large",
  "error": null,
  "output": {
    "media_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/krea-2-large/019dxxxx-result.png",
    "media_type": "image/png"
  },
  "created_at": "2026-06-23T10:00:00.000Z",
  "completed_at": "2026-06-23T10:00:18.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique id for the request; use it to poll status.
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR.
model_idstringAlways krea-2-large.
errorstring | nullFailure reason when status is ERROR/FAILED; otherwise null.
output.media_urlstringURL of the generated image (PNG).
output.media_typestringimage/png
created_atstringISO 8601 submit timestamp.
completed_atstringISO 8601 completion timestamp.
polling_urlstringFull status URL for this request.

Status Values

StatusMeaning
QUEUEDRequest accepted and waiting to be processed.
PROCESSINGGeneration in progress.
COMPLETEDDone — output.media_url is available.
FAILED / ERRORGeneration failed — see error. Failed requests are not charged.

Status Flow

QUEUED → PROCESSING → COMPLETED (or FAILED / ERROR)

Typical Workflow

  1. POST to /krea-2-large/v1/text-to-image → receive request_id + polling_url.
  2. Poll GET /v2/requests/status/{request_id} every few seconds (or use a webhook).
  3. When status is COMPLETED, download output.media_url.

Krea 2 Large API Pricing

Your request will cost $0.06 per image.
Krea 2 Large Fast

Krea 2 Large API Documentation

Generate a high-quality image from a text prompt with Krea 2 Large Fast. This is an asynchronous (queue) API: submit a request, then poll for the result.

POST https://gateway.pixazo.ai/krea-2-large-fast/v1/text-to-image

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Text to Image - Krea 2 Large Fast

Request Code

POST /krea-2-large-fast/v1/text-to-image HTTP/1.1
Host: gateway.pixazo.ai
Ocp-Apim-Subscription-Key: YOUR_API_KEY
Content-Type: application/json

{
  "prompt": "a cinematic glass cabin beside a frozen lake at sunrise",
  "aspect_ratio": "16:9",
  "resolution": "1K"
}
import requests

resp = requests.post(
    "https://gateway.pixazo.ai/krea-2-large-fast/v1/text-to-image",
    headers={
        "Ocp-Apim-Subscription-Key": "YOUR_API_KEY",
        "Content-Type": "application/json",
    },
    json={
        "prompt": "a cinematic glass cabin beside a frozen lake at sunrise",
        "aspect_ratio": "16:9",
        "resolution": "1K",
    },
)
print(resp.json())
const res = await fetch("https://gateway.pixazo.ai/krea-2-large-fast/v1/text-to-image", {
  method: "POST",
  headers: {
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    prompt: "a cinematic glass cabin beside a frozen lake at sunrise",
    aspect_ratio: "16:9",
    resolution: "1K",
  }),
});
const data = await res.json();
console.log(data);
curl -X POST "https://gateway.pixazo.ai/krea-2-large-fast/v1/text-to-image" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "a cinematic glass cabin beside a frozen lake at sunrise",
    "aspect_ratio": "16:9",
    "resolution": "1K"
  }'

Output

{
  "request_id": "krea-2-large-fast_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/krea-2-large-fast_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Instead of polling, you can receive an HTTP callback when the request reaches a terminal state. Pass the webhook URL via the X-Webhook-URL header on the submit request.

Webhook Headers

HeaderTypeRequiredDescription
X-Webhook-URLstringNoHTTPS URL that receives a POST callback when the request finishes. Enables webhook delivery.
X-Webhook-ModestringNoterminal (default) fires once on COMPLETED/ERROR; sync also fires a progress webhook on every poll cycle.

Example: enable webhook

curl -X POST "https://gateway.pixazo.ai/krea-2-large-fast/v1/text-to-image" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Webhook-URL: https://your-server.com/webhooks/krea" \
  -d '{"prompt":"a serene mountain lake","aspect_ratio":"16:9","resolution":"1K"}'

Callback Payload (Success)

{
  "request_id": "krea-2-large-fast_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "krea-2-large-fast",
  "output": {
    "media_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/krea-2-large-fast/019dxxxx-result.png",
    "media_type": "image/png"
  },
  "completed_at": "2026-06-23T10:00:18.000Z"
}

Callback Payload (Failure)

{
  "request_id": "krea-2-large-fast_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "krea-2-large-fast",
  "error": "GENERATION_FAILED: ",
  "output": null
}

Delivery semantics

  • terminal mode (default): one webhook fires when the request reaches COMPLETED or ERROR.
  • sync mode: a progress webhook fires on every poll cycle (carrying the current status) plus the terminal webhook.
  • Deliveries are idempotent on request_id — de-duplicate on your side.
  • Respond 200 within a few seconds; non-2xx may be retried.
  • The webhook URL must be HTTPS.

Request Parameters - Text to Image

ParameterRequiredTypeDefaultAllowed values / rangeDescription
promptYesstringAny descriptive textText prompt describing the image to generate.
aspect_ratioYesstring"1:1", "4:3", "3:2", "16:9", "2.35:1", "4:5", "2:3", "9:16"Aspect ratio of the generated image.
resolutionYesstring"1K"Resolution scale.
creativityNostring"low""raw", "low", "medium", "high"Prompt expansion mode. raw disables expansion; low/medium/high control strength.
complexityNointeger0-100 – 100K2 Complexity slider. 0 disables the slider LoRA.
intensityNointeger0-100 – 100K2 Intensity slider. 0 disables the slider LoRA.
movementNointeger0-100 – 100K2 Movement slider. 0 disables the slider LoRA.
seedNonumber— (random)any integer, or nullRandom seed for reproducible generations. Omit or pass null for a random seed.
image_style_referencesNoarrayup to 10 itemsReference images to drive the visual style (not editing — style conditioning only).
image_style_references[].urlConditionalstring (uri)max 1024 charsURL of the reference image. Required for each item.
image_style_references[].strengthNonumber0.50 – 1Style influence (0 = none, 1 = maximum).
moodboardsNoarrayexactly 1 itemMoodboard reference (currently limited to one).
moodboards[].idConditionalstring (uuid)UUIDMoodboard identifier. Required for each item.
moodboards[].strengthNonumber0.230 – 1Moodboard influence (0 = none, 1 = maximum).
stylesNoarrayLoRAs / style presetsStyles (typically LoRAs) to apply to the generation.
styles[].idConditionalstringStyle (LoRA) identifier. Required for each item.
styles[].strengthConditionalnumber-2 – 2Style strength. Required for each item.

Content Item Types & Limits

TypeMaxFormat / SizeDescription
image10JPG, PNG, WEBPStyle reference image(s), up to 10.

Note: Krea 2 Large Fast is text-to-image only. The image inputs above (image_style_references, moodboards) are style/conditioning references — there is no image-to-image or editing mode.

Example Request

{
  "prompt": "a cinematic glass cabin beside a frozen lake at sunrise",
  "aspect_ratio": "16:9",
  "resolution": "1K",
  "creativity": "medium",
  "complexity": 0,
  "intensity": 0,
  "movement": 0,
  "seed": 12345,
  "image_style_references": [
    { "url": "https://example.com/style.jpg", "strength": 0.5 }
  ]
}

Response

{
  "request_id": "krea-2-large-fast_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/krea-2-large-fast_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key
Content-TypestringYesapplication/json
X-Webhook-URLstringNoHTTPS URL to receive a terminal callback
X-Webhook-ModestringNoterminal (default) or sync

Response Handling

Status CodeMeaning
202Accepted — request queued; use polling_url to retrieve the result.
400Bad request — invalid or missing parameters.
401Unauthorized — missing or invalid subscription key.
402Insufficient balance — top up your wallet.
403Forbidden — key not authorized for this API.
429Too many requests — rate limit exceeded.
500Internal server error.

Error Responses

Submit-time errors are returned synchronously; generation errors are reported on the status response (and webhook) with status: "ERROR".

// 402 Insufficient balance
{ "error": "Insufficient balance. Required amount: $0.03" }

// 400 Validation error
{ "success": false, "error": { "message": "aspect_ratio is required and must be one of: 1:1, 4:3, 3:2, 16:9, 2.35:1, 4:5, 2:3, 9:16", "code": "VALIDATION_ERROR" } }

// Generation failure (via status / webhook)
{ "request_id": "krea-2-large-fast_019dxxxx-...", "status": "ERROR", "model_id": "krea-2-large-fast", "error": "GENERATION_FAILED: ", "output": null }

Retrieving Results

Poll the universal status endpoint with the request_id from the submit response until status is terminal (COMPLETED / FAILED / ERROR).

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}

cURL Example

curl "https://gateway.pixazo.ai/v2/requests/status/krea-2-large-fast_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY"

Response (Completed)

{
  "request_id": "krea-2-large-fast_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "krea-2-large-fast",
  "error": null,
  "output": {
    "media_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/krea-2-large-fast/019dxxxx-result.png",
    "media_type": "image/png"
  },
  "created_at": "2026-06-23T10:00:00.000Z",
  "completed_at": "2026-06-23T10:00:18.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique id for the request; use it to poll status.
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR.
model_idstringAlways krea-2-large-fast.
errorstring | nullFailure reason when status is ERROR/FAILED; otherwise null.
output.media_urlstringURL of the generated image (PNG).
output.media_typestringimage/png
created_atstringISO 8601 submit timestamp.
completed_atstringISO 8601 completion timestamp.
polling_urlstringFull status URL for this request.

Status Values

StatusMeaning
QUEUEDRequest accepted and waiting to be processed.
PROCESSINGGeneration in progress.
COMPLETEDDone — output.media_url is available.
FAILED / ERRORGeneration failed — see error. Failed requests are not charged.

Status Flow

QUEUED → PROCESSING → COMPLETED (or FAILED / ERROR)

Typical Workflow

  1. POST to /krea-2-large-fast/v1/text-to-image → receive request_id + polling_url.
  2. Poll GET /v2/requests/status/{request_id} every few seconds (or use a webhook).
  3. When status is COMPLETED, download output.media_url.

Krea 2 Large API Pricing

Your request will cost $0.03 per image.
Image to Image (LoRA Trainer)

Krea 2 Large API Documentation

https://gateway.pixazo.ai/krea-2-trainer/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Krea 2 Trainer generate request

Request Code

POST https://gateway.pixazo.ai/krea-2-trainer/v1/krea-2-trainer-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "images_data_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/training-images.zip",
  "trigger_phrase": "sks_subject",
  "steps": 1000,
  "learning_rate": 0.0005
}
import requests

url = "https://gateway.pixazo.ai/krea-2-trainer/v1/krea-2-trainer-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}
data = {
    "images_data_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/training-images.zip",
    "trigger_phrase": "sks_subject",
    "steps": 1000,
    "learning_rate": 0.0005
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/krea-2-trainer/v1/krea-2-trainer-request";
const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
};
const data = {
  "images_data_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/training-images.zip",
  "trigger_phrase": "sks_subject",
  "steps": 1000,
  "learning_rate": 0.0005
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
curl -X POST "https://gateway.pixazo.ai/krea-2-trainer/v1/krea-2-trainer-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  --data-raw '{
    "images_data_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/training-images.zip",
    "trigger_phrase": "sks_subject",
    "steps": 1000,
    "learning_rate": 0.0005
  }'

Output

{
  "request_id": "krea-2-trainer_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/krea-2-trainer_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Krea 2 Trainer generate request

Parameter Required Type Default Allowed values / range Description
images_data_urlYesstringURL to a .zip archive of training images (PNG, JPG, JPEG, WebP). Must be publicly accessible.
trigger_phraseNostring""Instance phrase used as caption for images without a paired .txt caption file. Used to associate the learned concept with a token during training.
stepsNointeger1000100–10000Number of LoRA training steps.
learning_rateNofloat0.00050.000001–0.01AdamW learning rate.

Example Request

{
  "images_data_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/training-images.zip",
  "trigger_phrase": "sks_subject",
  "steps": 1000,
  "learning_rate": 0.0005
}

Response

{
  "request_id": "krea-2-trainer_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/krea-2-trainer_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_API_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'krea-2-trainer' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "krea-2-trainer_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "krea-2-trainer",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/krea-2-trainer_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "krea-2-trainer_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "krea-2-trainer",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/krea-2-trainer_019dxxxx/output.safetensors",
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/krea-2-trainer_019dxxxx/config.json"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstringWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Krea 2 Large API Pricing

Your request will cost $0.0028 per image.