PopNowAPI
Odbierz klucz API

FLUX 3 Klein API

od Black Forest Labs

Szybkie obrazy FLUX 3 Klein i edycja z wieloma referencjami w 1K lub 2K

black-forest-labs/flux-3-klein/edit
  • Do 2K
  • Do 10 obrazów referencyjnych
  • Proporcje obrazu: 16
  • Utwórz obraz
  • Edytuj obraz

Wywołujesz go nazwą modelu black-forest-labs/flux-3-klein/edit w POST /jobs/createTask, od 0,0192 USD.

Nazwa modelublack-forest-labs/flux-3-klein/edit
EndpointPOST https://api.popnow.ai/api/v1/jobs/createTask
# 1. Create the task. Keep the Idempotency-Key if you retry after a network error.
export IDEMPOTENCY_KEY="$(uuidgen)"
curl -X POST https://api.popnow.ai/api/v1/jobs/createTask \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -d '{
  "model": "black-forest-labs/flux-3-klein/edit",
  "input": {
    "prompt": "A ceramic teapot on a linen cloth, soft window light, muted palette",
    "image_urls": [
      "https://media.popnow.ai/influencer/examples/marco.webp"
    ],
    "aspect_ratio": "auto",
    "resolution": "1k",
    "output_format": "jpeg"
  }
}'

# 2. Copy data.taskId from the response, then poll until state is succeeded, failed, canceled or expired.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

input jest zbudowany ze schematu poniżej, więc przechodzi walidację bez zmian. Zamień prompt i linki na własne.

Cena

OpcjaUSD za obraz
resolution 1K0,0192 USD
resolution 2K0,0768 USD

Rozliczenie w USD · Wszystkie opcje i ceny: GET /models/black-forest-labs/flux-3-klein/edit

Limity

Rozdzielczości
1K · 2K
Proporcje obrazu
auto · 1:1 · 16:9 · 9:16 · 4:3 · 3:4 +11
Obrazy referencyjne
10
Długość promptu (znaki)
5,000
Największy przesyłany plik
10 MB

Parametry

Te pola pochodzą z tego samego schematu, którym sprawdzamy każde żądanie. Pola spoza listy są odrzucane.

  • promptstringWymagane

    Say what to change and what must stay the same; name each source as <ref_image_1>, <ref_image_2>.

    Zakres
    1 – 5000 chars
  • image_urlsarray<string>WymaganeZmienia cenę

    Zdjęcia do edycji lub połączenia. W prompcie napisz, co wnosi każde z nich.

    Zakres
    1 – 10 items · image/jpeg, image/png, image/webp, image/gif · ≤ 10 MB
  • aspect_ratiostringOpcjonalne

    Kształt kadru: szeroki, kwadratowy albo pionowy.

    Domyślnie
    "auto"
    Dozwolone wartości
    "auto""1:1""16:9""9:16""4:3""3:4""3:2""2:3""4:5""5:4""21:9""9:21""2:1""1:2""3:1""1:3""custom"
  • resolutionstringOpcjonalneZmienia cenę

    Rozmiar wyniku. Większy jest ostrzejszy i droższy.

    Domyślnie
    "1k"
    Dozwolone wartości
    "1k""2k"
  • widthintegerOpcjonalne

    Output width in pixels when aspect_ratio is custom, 256 to 1024 (1024 if left out); height works the same way. The price still follows resolution.

    Zakres
    256 – 1024
  • heightintegerOpcjonalne

    Output height in pixels when aspect_ratio is custom, 256 to 1024 (1024 if left out); width works the same way. The price still follows resolution.

    Zakres
    256 – 1024
  • enable_prompt_expansionbooleanOpcjonalne

    Model dopisuje szczegóły do krótkiego promptu.

    Domyślnie
    false
  • output_formatstringOpcjonalne

    Format pliku wyniku.

    Domyślnie
    "jpeg"
    Dozwolone wartości
    "jpeg""png""webp"
  • seedintegerOpcjonalne

    Ta sama liczba daje powtarzalny wynik.

    Zakres
    0 – 2147483647
Surowy JSON Schema
{
  "additionalProperties": false,
  "properties": {
    "aspect_ratio": {
      "default": "auto",
      "description": "Output aspect ratio; auto keeps the shape of the first source image, custom lets you set width and height.",
      "enum": [
        "auto",
        "1:1",
        "16:9",
        "9:16",
        "4:3",
        "3:4",
        "3:2",
        "2:3",
        "4:5",
        "5:4",
        "21:9",
        "9:21",
        "2:1",
        "1:2",
        "3:1",
        "1:3",
        "custom"
      ],
      "type": "string"
    },
    "enable_prompt_expansion": {
      "default": false,
      "description": "Rewrite the prompt into a fuller description before generating. Off by default, so the prompt is followed word for word.",
      "type": "boolean"
    },
    "height": {
      "description": "Output height in pixels when aspect_ratio is custom, 256 to 1024 (1024 if left out); width works the same way. The price still follows resolution.",
      "maximum": 1024,
      "minimum": 256,
      "type": "integer"
    },
    "image_urls": {
      "description": "One to ten source images, in the order your prompt refers to them. The second and third each raise the price a little; more do not.",
      "items": {
        "contentMediaType": [
          "image/jpeg",
          "image/png",
          "image/webp",
          "image/gif"
        ],
        "format": "uri",
        "minLength": 1,
        "type": "string"
      },
      "maxItems": 10,
      "minItems": 1,
      "type": "array"
    },
    "output_format": {
      "default": "jpeg",
      "description": "File format of the returned image.",
      "enum": [
        "jpeg",
        "png",
        "webp"
      ],
      "type": "string"
    },
    "prompt": {
      "description": "Say what to change and what must stay the same; name each source as <ref_image_1>, <ref_image_2>.",
      "maxLength": 5000,
      "minLength": 1,
      "type": "string"
    },
    "resolution": {
      "default": "1k",
      "description": "Output size tier: 1k is about one megapixel, 2k about four.",
      "enum": [
        "1k",
        "2k"
      ],
      "type": "string"
    },
    "seed": {
      "description": "Random seed for controlled comparisons.",
      "maximum": 2147483647,
      "minimum": 0,
      "type": "integer"
    },
    "width": {
      "description": "Output width in pixels when aspect_ratio is custom, 256 to 1024 (1024 if left out); height works the same way. The price still follows resolution.",
      "maximum": 1024,
      "minimum": 256,
      "type": "integer"
    }
  },
  "required": [
    "prompt",
    "image_urls"
  ],
  "type": "object"
}

Odpowiedzi, odpytywanie i callbacki

Wszystkie modele działają tak samo: utwórz zadanie, a potem odpytuj je albo poczekaj na callback.

Najpierw cena

cURL
curl -X POST https://api.popnow.ai/api/v1/jobs/quote \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "black-forest-labs/flux-3-klein/edit",
  "input": {
    "prompt": "A ceramic teapot on a linen cloth, soft window light, muted palette",
    "image_urls": [
      "https://media.popnow.ai/influencer/examples/marco.webp"
    ],
    "aspect_ratio": "auto",
    "resolution": "1k",
    "output_format": "jpeg"
  }
}'

Przed uruchomieniem wyślij tę samą treść żądania do POST /jobs/quote, aby zobaczyć szacowaną i maksymalną opłatę w USD. Wycena nie uruchamia zadania ani nie obciąża salda.

Przyjęte

HTTP
HTTP/1.1 202 Accepted

{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "task_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "state": "queued"
  },
  "request_id": "req_example_create"
}

HTTP 202 oznacza przyjęcie zadania: maksymalna kwota w USD pozostaje zarezerwowana do rozliczenia. Po przyjęciu zadania rezerwujemy maksymalną kwotę wyceny na saldzie API. Po zakończeniu naliczamy opłatę za rzeczywiste użycie, nie wyższą niż rezerwacja, i zwalniamy resztę. Jeśli zadanie się nie powiedzie, rezerwacja zostaje zwolniona.

Sprawdź status

cURL
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

Odpytuj co kilka sekund, stopniowo wydłużając odstęp, i przestań, gdy state ma wartość succeeded, failed, canceled lub expired.

Gotowe zadanie

JSON
{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "task_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "model": "black-forest-labs/flux-3-klein/edit",
    "state": "succeeded",
    "output": {
      "assets": [
        {
          "url": "https://cdn.popnow.ai/tasks/task_01k3m8x9q2z4v7n5p6r8s0t1w3/output.png?signature=FROM_RESPONSE",
          "expiresAt": "2026-10-17T12:20:00Z",
          "mime": "image/png",
          "width": 1024,
          "height": 1024
        }
      ]
    },
    "settled": true
  },
  "request_id": "req_example_record"
}

Pobierz plik z url przed expiresAt. Potrzebujesz później nowego linku? Poproś o niego przez POST /common/download-url.

Weryfikacja callbacku

Node.js
import { createHash, createHmac, timingSafeEqual } from "node:crypto";
import express from "express";

const app = express();
// express.raw keeps the exact bytes that were signed; express.json would not match.
app.post("/hooks/popnow", express.raw({ type: "application/json" }), (req, res) => {
  const timestamp = req.header("X-Webhook-Timestamp");
  const signature = req.header("X-Webhook-Signature") ?? "";
  const body = JSON.parse(req.body.toString("utf8"));
  const taskId = body.data?.taskId ?? body.task_id;
  const digest = createHash("sha256").update(req.body).digest("hex");
  const expected = createHmac("sha256", process.env.POPNOW_WEBHOOK_SECRET)
    .update(`${taskId}.${timestamp}.${digest}`)
    .digest("base64");
  const ok = expected.length === signature.length && timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
  // Check the signature first, then reject anything older than five minutes.
  if (!ok || Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) return res.status(401).end();
  res.status(200).end(); // answer fast, then fetch the task and store its files
});

Gdy ustawisz callBackUrl, wyślemy ci gotowe zadanie. Zanim mu zaufasz, sprawdź podpis na surowym ciele żądania.

Wysyłanie pliku lokalnego

cURL
curl -X POST https://api.popnow.ai/api/v1/common/upload-url \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contentType": "image/png", "bytes": 482113}'

# PUT the file bytes to data.uploadUrl with every header in data.headers, then commit it:
curl -X POST https://api.popnow.ai/api/v1/files/$FILE_ID/commit \
  -H "Authorization: Bearer $POPNOW_API_KEY"
# The commit returns a popnow://f/... reference. Put it in any image, video or
# audio field of the task input instead of a public https URL.

Publiczne linki https działają bez zmian. Pliki lokalne przechodzą najpierw przez upload-url i commit.

O modelu FLUX 3 Klein

Szybkie obrazy FLUX 3 Klein i edycja z wieloma referencjami w 1K lub 2K.

Wywołujesz go nazwą modelu black-forest-labs/flux-3-klein/edit w POST /jobs/createTask, od 0,0192 USD.

Parametry żądania

ParametrWymaganyOpis
aspect_ratioNieKształt kadru: szeroki, kwadratowy albo pionowy. auto · 1:1 · 16:9 · 9:16 · 4:3 · 3:4 · 3:2 · 2:3 · 4:5 · 5:4 · 21:9 · 9:21 · 2:1 · 1:2 · 3:1 · 1:3 · custom · Domyślnie: auto
enable_prompt_expansionNieModel dopisuje szczegóły do krótkiego promptu. Domyślnie: false
heightNieOutput height in pixels when aspect_ratio is custom, 256 to 1024 (1024 if left out); width works the same way. The price still follows resolution. ≥ 256 · ≤ 1024
image_urlsTakZdjęcia do edycji lub połączenia. W prompcie napisz, co wnosi każde z nich.
output_formatNieFormat pliku wyniku. jpeg · png · webp · Domyślnie: jpeg
promptTakSay what to change and what must stay the same; name each source as <ref_image_1>, <ref_image_2>.
resolutionNieRozmiar wyniku. Większy jest ostrzejszy i droższy. 1k · 2k · Domyślnie: 1k
seedNieTa sama liczba daje powtarzalny wynik. ≥ 0 · ≤ 2147483647
widthNieOutput width in pixels when aspect_ratio is custom, 256 to 1024 (1024 if left out); height works the same way. The price still follows resolution. ≥ 256 · ≤ 1024

Ceny

Ceny podano w USD. API korzysta z oddzielnego salda w dolarach amerykańskich. Kredytów strony nie można używać w API ani zamieniać na saldo API. Nie można też zamieniać salda API na kredyty strony. Po przyjęciu zadania rezerwujemy maksymalną kwotę wyceny na saldzie API. Po zakończeniu naliczamy opłatę za rzeczywiste użycie, nie wyższą niż rezerwacja, i zwalniamy resztę. Jeśli zadanie się nie powiedzie, rezerwacja zostaje zwolniona.

OpcjaUSD za obraz
resolution 1K0,0192 USD
resolution 2K0,0768 USD

Przed uruchomieniem wyślij tę samą treść żądania do POST /jobs/quote, aby zobaczyć szacowaną i maksymalną opłatę w USD. Wycena nie uruchamia zadania ani nie obciąża salda.

Szybki start z API

Wywołaj API FLUX 3 Klein w trzech krokach

  1. Utwórz klucz API. Zaloguj się do PopNow i utwórz klucz w konsoli API. Klucze zaczynają się od sk-popnow-. Wywołania korzystają z oddzielnego salda w dolarach amerykańskich.
  2. Wyślij żądanie. Wyślij POST /jobs/createTask z model black-forest-labs/flux-3-klein/edit i obiektem input zgodnym z tabelą parametrów. Odpowiedź od razu zwraca ID zadania.
  3. Odbierz wynik. Odpytuj GET /jobs/recordInfo po ID zadania albo podaj callBackUrl, a wyślemy tam wynik. Gdy zadanie się powiedzie, pobierz pliki z linków wyjściowych.
# 1. Create the task. Keep the Idempotency-Key if you retry after a network error.
export IDEMPOTENCY_KEY="$(uuidgen)"
curl -X POST https://api.popnow.ai/api/v1/jobs/createTask \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -d '{
  "model": "black-forest-labs/flux-3-klein/edit",
  "input": {
    "prompt": "A ceramic teapot on a linen cloth, soft window light, muted palette",
    "image_urls": [
      "https://media.popnow.ai/influencer/examples/marco.webp"
    ],
    "aspect_ratio": "auto",
    "resolution": "1k",
    "output_format": "jpeg"
  }
}'

# 2. Copy data.taskId from the response, then poll until state is succeeded, failed, canceled or expired.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

Podmień prompt i linki na własne. Odniesienie do odpowiedzi, odpytywania i callbacku znajdziesz na karcie API.

Pytania o API FLUX 3 Klein

Ile kosztuje API FLUX 3 Klein?

FLUX 3 Klein kosztuje od 0,0192 USD za obraz – najtańsze zadanie to „Edytuj obraz”. Ceny według opcji: 1K 0,0192 USD za obraz, 2K 0,0768 USD za obraz. API korzysta z oddzielnego salda w dolarach amerykańskich. Kredytów strony nie można używać w API ani zamieniać na saldo API. Nie można też zamieniać salda API na kredyty strony. Po przyjęciu zadania rezerwujemy maksymalną kwotę wyceny na saldzie API. Po zakończeniu naliczamy opłatę za rzeczywiste użycie, nie wyższą niż rezerwacja, i zwalniamy resztę. Jeśli zadanie się nie powiedzie, rezerwacja zostaje zwolniona.

Jakie limity ma API FLUX 3 Klein · Edytuj obraz?

Rozdzielczości: 1K · 2K; Proporcje obrazu: auto · 1:1 · 16:9 · 9:16 · 4:3 · 3:4 +11; Obrazy referencyjne: 10; Długość promptu (znaki): 5,000; Największy przesyłany plik: 10 MB. Żądania poza tymi limitami są odrzucane, zanim cokolwiek zostanie pobrane.

Więcej o FLUX 3 Klein