Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.runflow.io/llms.txt

Use this file to discover all available pages before exploring further.

Pricing: $0.04/image. Endpoint: POST /v1/models/black-forest-labs/flux-pro/kontext/runs.
FLUX.1 Kontext [pro] handles both text and reference images as inputs, seamlessly enabling targeted, local edits and complex transformations of entire scenes.

Overview

Pricing

  • Base price: $0.04/image
  • Note: ~25 runs per $1

FLUX Kontext API

Endpoint: POST /v1/models/black-forest-labs/flux-pro/kontext/runs

Run the model

Python

import requests

response = requests.post(
    "https://api.runflow.io/v1/models/black-forest-labs/flux-pro/kontext/runs",
    headers={"Authorization": "Bearer RUNFLOW_API_KEY"},
    json={
        "input": {
            "prompt": "Add a fluffy orange tabby cat sleeping on the desk between the two monitors, curled up on a small cushion, one paw draped over the keyboard. The cat is illuminated by the monitor glow. Everything else stays exactly the same.",
            "image_url": "https://public.runflow.io/images/models/_shared/base-engineer.png"
        },
        "callback_url": "https://your-server.com/webhook"
    },
)

data = response.json()
print(data)

Node.js

const response = await fetch(
  "https://api.runflow.io/v1/models/black-forest-labs/flux-pro/kontext/runs",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer RUNFLOW_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
        "input": {
            "prompt": "Add a fluffy orange tabby cat sleeping on the desk between the two monitors, curled up on a small cushion, one paw draped over the keyboard. The cat is illuminated by the monitor glow. Everything else stays exactly the same.",
            "image_url": "https://public.runflow.io/images/models/_shared/base-engineer.png"
        },
        "callback_url": "https://your-server.com/webhook"
    }),
  }
);

const data = await response.json();
console.log(data);

cURL

curl -X POST https://api.runflow.io/v1/models/black-forest-labs/flux-pro/kontext/runs \
  -H "Authorization: Bearer $RUNFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @- <<'JSON'
{
    "input": {
        "prompt": "Add a fluffy orange tabby cat sleeping on the desk between the two monitors, curled up on a small cushion, one paw draped over the keyboard. The cat is illuminated by the monitor glow. Everything else stays exactly the same.",
        "image_url": "https://public.runflow.io/images/models/_shared/base-engineer.png"
    },
    "callback_url": "https://your-server.com/webhook"
}
JSON

Request parameters

ParameterTypeRequiredDescription
inputobjectrequiredModel input parameters. See “Input schema” below.
callback_urlstring | nulloptionalWebhook URL - POSTed when the run reaches a terminal state.
metadataobject | nulloptionalArbitrary key-value pairs attached to the run.

Input schema

FieldTypeRequiredAllowed valuesDescription
promptstringrequiredAnyEditing instruction describing the desired transformation.
image_urlimagerequiredAnyURL of the source image to edit.
aspect_ratiostringoptional21:9, 16:9, 4:3, 3:2, 1:1, 2:3, 3:4, 9:16, 9:21Output aspect ratio. Options: square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9.
num_imagesintegeroptionalAnyNumber of images to generate per request. Range: 1–4. Default: 1.
guidance_scalefloatoptionalAnyHow closely the model follows the prompt. Range: 1–20. Default: 3.5.
output_formatstringoptionaljpeg, pngOutput format. Options: “jpeg”, “png”. Default: “jpeg”.
safety_tolerancestringoptionalAnyContent moderation strictness. 1 = most strict, 6 = most permissive. Default: 2.
enhance_promptbooleanoptionalAnyAutomatically enhance the prompt for better results. Default: false.
seedintegeroptionalAnyRandom seed for reproducible outputs.
sync_modebooleanoptionalAnyReturn media as data URI without storing in request history. Default: false.

Output schema

FieldTypeDescription
outputsjsonUnified output array - one entry per generated artifact with url/type/width/height/duration/etc.
seedjsonSeed of the generated Image. It will be the same value of the one passed in the input or the randomly generated that was used in case none was passed.
model_datajsonModel-specific extra fields (prompt, description, actual_prompt, masks, etc.) keyed by field name.
nsfw_detectedjsontrue if the provider flagged output as NSFW, false if cleared, null if not checked.
timingjsonProvider timing info (inference_ms etc.), or null.

Callback payload

When you provide a callback_url, Runflow POSTs to it once the run reaches a terminal state.
FieldTypeDescription
eventstringEvent type: “run.completed”, “run.failed”, or “run.cancelled”.
run_idstringThe unique identifier of the run.
statusstringTerminal status: “succeeded”, “failed”, or “cancelled”.
outputobject | nullThe run output. Null if the run failed or was cancelled.
duration_msnumber | nullTotal run duration in milliseconds.
created_atstring | nullISO 8601 timestamp when the run was created.
completed_atstring | nullISO 8601 timestamp when the run reached terminal state.
metadataobject | nullThe metadata object passed at run creation, if any.
  • Retries: 3 attempts with exponential backoff (1s, 2s). Retries on 5xx / network errors only.
  • Headers: Runflow-Request-Id is always sent. Runflow-Signature is sent if a signing secret is configured.

Additional Resources

Browse all models

Browse the catalog.

Run lifecycle

Callbacks, polling, statuses.

Callbacks

Handle async results.

Pricing

How requests bill out.