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.2/request. Endpoint: POST /v1/models/runflow/logo-inpaint/runs.
Place a logo onto a target image, with optional mask to constrain placement. When the mask is omitted, the workflow picks a placement automatically.

Overview

Pricing

  • Base price: $0.2/request
  • Note: Per image: logo inpaint (v2, 2026-05-21)

Logo Inpaint API

Endpoint: POST /v1/models/runflow/logo-inpaint/runs

Run the model

Python

import requests

response = requests.post(
    "https://api.runflow.io/v1/models/runflow/logo-inpaint/runs",
    headers={"Authorization": "Bearer RUNFLOW_API_KEY"},
    json={
        "input": {
            "prompt": "Apply the logo from Image 2 onto the masked area of the garment in Image 1, matching the fabric texture, surface curvature, lighting, and color tone of the garment. The logo should look professionally printed or embroidered into the surface, not pasted on top.",
            "logo_url": "https://public.runflow.io/images/models/runflow/logo-inpaint/examples/1/logo.webp",
            "mask_url": "https://public.runflow.io/images/models/runflow/logo-inpaint/examples/1/mask.png",
            "image_url": "https://public.runflow.io/images/models/runflow/logo-inpaint/examples/1/image.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/runflow/logo-inpaint/runs",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer RUNFLOW_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
        "input": {
            "prompt": "Apply the logo from Image 2 onto the masked area of the garment in Image 1, matching the fabric texture, surface curvature, lighting, and color tone of the garment. The logo should look professionally printed or embroidered into the surface, not pasted on top.",
            "logo_url": "https://public.runflow.io/images/models/runflow/logo-inpaint/examples/1/logo.webp",
            "mask_url": "https://public.runflow.io/images/models/runflow/logo-inpaint/examples/1/mask.png",
            "image_url": "https://public.runflow.io/images/models/runflow/logo-inpaint/examples/1/image.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/runflow/logo-inpaint/runs \
  -H "Authorization: Bearer $RUNFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @- <<'JSON'
{
    "input": {
        "prompt": "Apply the logo from Image 2 onto the masked area of the garment in Image 1, matching the fabric texture, surface curvature, lighting, and color tone of the garment. The logo should look professionally printed or embroidered into the surface, not pasted on top.",
        "logo_url": "https://public.runflow.io/images/models/runflow/logo-inpaint/examples/1/logo.webp",
        "mask_url": "https://public.runflow.io/images/models/runflow/logo-inpaint/examples/1/mask.png",
        "image_url": "https://public.runflow.io/images/models/runflow/logo-inpaint/examples/1/image.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
image_urlimagerequiredAnyURL of the target image. HTTPS required.
logo_urlimagerequiredAnyURL of the logo to place. PNG with transparency preferred.
mask_urlimagerequiredAnyURL of a black-and-white mask. White pixels mark the placement zone; black keeps the original.
promptstringoptionalAnyOptional placement instruction (e.g. ‘top-right, 20% width’).

Output schema

FieldTypeDescription
outputsjsonArray of result items with url, type, width, height, content_type.
seedjsonRandom seed used (null if N/A).
timingjsonProvider timing breakdown (null if not surfaced).
nsfw_detectedjsonProvider NSFW flag (null if not surfaced).

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.