PopNowAPI
Consigue tu clave API

FLUX 3 Klein LoRA API

de Black Forest Labs

Imágenes y ediciones con FLUX 3 Klein y hasta tres de tus LoRA

black-forest-labs/flux-3-klein-lora/text-to-image
  • Hasta 2K
  • Hasta 3 imágenes de referencia
  • 15 relaciones de aspecto
  • Carga tus propios LoRA
  • Crear imagen
  • Editar imagen

Llámalo con el nombre de modelo black-forest-labs/flux-3-klein-lora/text-to-image en POST /jobs/createTask, desde 0,018 US$.

Nombre del modeloblack-forest-labs/flux-3-klein-lora/text-to-image
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-lora/text-to-image",
  "input": {
    "prompt": "A ceramic teapot on a linen cloth, soft window light, muted palette",
    "aspect_ratio": "1:1",
    "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"

El input se genera a partir del esquema de abajo, así que pasa la validación tal cual. Cambia el prompt y los enlaces por los tuyos.

Precio

OpciónUSD por imagen
resolution 1K0,018 US$
resolution 2K0,054 US$

Facturación en USD · Todas las opciones y su precio: GET /models/black-forest-labs/flux-3-klein-lora/text-to-image

Límites

Resoluciones
1K · 2K
Relaciones de aspecto
1:1 · 16:9 · 9:16 · 4:3 · 3:4 · 3:2 +9
Longitud del prompt (caracteres)
5,000

Parámetros

Estos campos salen del mismo esquema con el que validamos cada petición. Los campos que no aparecen se rechazan.

  • promptstringObligatorio

    Describe the subject, setting, light and style in plain sentences. Put a LoRA trigger word first.

    Rango
    1 – 5000 chars
  • aspect_ratiostringOpcional

    La forma del encuadre: horizontal, cuadrado o vertical.

    Por defecto
    "1:1"
    Valores permitidos
    "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"
  • resolutionstringOpcionalCambia el precio

    Tamaño de salida. Más grande es más nítido y cuesta más.

    Por defecto
    "1k"
    Valores permitidos
    "1k""2k"
  • lorasarray<object>Opcional

    Carga tus archivos LoRA para fijar un estilo o un personaje.

    Por defecto
    []
    Rango
    0 – 3 items
    Campos internos
    • loras[].pathstringObligatorio

      Direct URL of a LoRA weights file.

      Rango
      1 – … chars · application/octet-stream
    • loras[].scalenumberObligatorio

      Weight strength from zero to four.

      Por defecto
      1
      Rango
      0 – 4
  • output_formatstringOpcional

    Tipo de archivo del resultado.

    Por defecto
    "jpeg"
    Valores permitidos
    "jpeg""png""webp"
  • seedintegerOpcional

    Repite el mismo número para obtener un resultado reproducible.

    Rango
    0 – 2147483647
Esquema JSON sin procesar
{
  "additionalProperties": false,
  "properties": {
    "aspect_ratio": {
      "default": "1:1",
      "description": "Output aspect ratio.",
      "enum": [
        "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"
      ],
      "type": "string"
    },
    "loras": {
      "default": [],
      "description": "Up to three LoRA weight files trained for FLUX 3 Klein (the Base or the distilled build), each with its own strength.",
      "items": {
        "additionalProperties": false,
        "properties": {
          "path": {
            "contentMediaType": [
              "application/octet-stream"
            ],
            "description": "Direct URL of a LoRA weights file.",
            "format": "uri",
            "minLength": 1,
            "type": "string"
          },
          "scale": {
            "default": 1,
            "description": "Weight strength from zero to four.",
            "maximum": 4,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "path",
          "scale"
        ],
        "type": "object"
      },
      "maxItems": 3,
      "type": "array"
    },
    "output_format": {
      "default": "jpeg",
      "description": "File format of the returned image.",
      "enum": [
        "jpeg",
        "png",
        "webp"
      ],
      "type": "string"
    },
    "prompt": {
      "description": "Describe the subject, setting, light and style in plain sentences. Put a LoRA trigger word first.",
      "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"
    }
  },
  "required": [
    "prompt"
  ],
  "type": "object"
}

Respuestas, consultas y callbacks

Todos los modelos funcionan igual: crea una tarea y luego consulta su estado o espera el callback.

Consulta el precio primero

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-lora/text-to-image",
  "input": {
    "prompt": "A ceramic teapot on a linen cloth, soft window light, muted palette",
    "aspect_ratio": "1:1",
    "resolution": "1k",
    "output_format": "jpeg"
  }
}'

Antes de ejecutar, envía el mismo cuerpo de petición a POST /jobs/quote para consultar el coste estimado y el máximo en USD. El presupuesto no ejecuta tareas ni carga tu saldo.

Aceptada

HTTP
HTTP/1.1 202 Accepted

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

HTTP 202 significa que la tarea está aceptada: el máximo en USD queda reservado hasta la liquidación. Al aceptar una tarea, reservamos el importe máximo del presupuesto en tu saldo de API. Al terminar, cobramos el uso real sin superar la reserva y liberamos el resto. Si la tarea falla, liberamos el importe reservado.

Consultar estado

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

Consulta cada pocos segundos espaciando cada vez más y para cuando state sea succeeded, failed, canceled o expired.

Tarea terminada

JSON
{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "task_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "model": "black-forest-labs/flux-3-klein-lora/text-to-image",
    "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"
}

Descarga desde la url antes de expiresAt. ¿Necesitas un enlace nuevo más tarde? Pídelo con POST /common/download-url.

Verificar un callback

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
});

Con callBackUrl te enviamos la tarea terminada. Comprueba la firma sobre el cuerpo sin procesar antes de fiarte de ella.

Enviar un archivo local

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.

Los enlaces https públicos funcionan tal cual. Los archivos locales pasan antes por upload-url y commit.

Acerca de FLUX 3 Klein LoRA

Imágenes y ediciones con FLUX 3 Klein y hasta tres de tus LoRA.

Llámalo con el nombre de modelo black-forest-labs/flux-3-klein-lora/text-to-image en POST /jobs/createTask, desde 0,018 US$.

Parámetros de la petición

ParámetroObligatorioDescripción
aspect_ratioNoLa forma del encuadre: horizontal, cuadrado o vertical. 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 · Por defecto: 1:1
lorasNoCarga tus archivos LoRA para fijar un estilo o un personaje. Por defecto: []
output_formatNoTipo de archivo del resultado. jpeg · png · webp · Por defecto: jpeg
promptSíDescribe the subject, setting, light and style in plain sentences. Put a LoRA trigger word first.
resolutionNoTamaño de salida. Más grande es más nítido y cuesta más. 1k · 2k · Por defecto: 1k
seedNoRepite el mismo número para obtener un resultado reproducible. ≥ 0 · ≤ 2147483647

Precios

Los precios se indican en USD. La API utiliza un saldo independiente en dólares estadounidenses. Los créditos de la web no sirven para la API ni se pueden convertir en saldo de API; tampoco se puede convertir el saldo de API en créditos de la web. Al aceptar una tarea, reservamos el importe máximo del presupuesto en tu saldo de API. Al terminar, cobramos el uso real sin superar la reserva y liberamos el resto. Si la tarea falla, liberamos el importe reservado.

OpciónUSD por imagen
resolution 1K0,018 US$
resolution 2K0,054 US$

Antes de ejecutar, envía el mismo cuerpo de petición a POST /jobs/quote para consultar el coste estimado y el máximo en USD. El presupuesto no ejecuta tareas ni carga tu saldo.

Inicio rápido de la API

Llama a la API de FLUX 3 Klein LoRA en tres pasos

  1. Crea una clave de API. Inicia sesión en PopNow y crea una clave en la consola API. Las claves empiezan por sk-popnow-. Las llamadas utilizan tu saldo independiente en dólares estadounidenses.
  2. Envía la solicitud. Haz POST /jobs/createTask con model black-forest-labs/flux-3-klein-lora/text-to-image y un objeto input según la tabla de parámetros. La respuesta devuelve un ID de tarea al instante.
  3. Obtén el resultado. Consulta GET /jobs/recordInfo con el ID de tarea, o pasa una callBackUrl y te enviamos el resultado ahí. Descarga los enlaces de salida cuando la tarea termine bien.
# 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-lora/text-to-image",
  "input": {
    "prompt": "A ceramic teapot on a linen cloth, soft window light, muted palette",
    "aspect_ratio": "1:1",
    "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"

Sustituye el prompt y los enlaces por los tuyos. La pestaña API tiene la referencia de la respuesta, el sondeo y el callback.

Preguntas sobre la API de FLUX 3 Klein LoRA

¿Cuánto cuesta la API de FLUX 3 Klein LoRA?

FLUX 3 Klein LoRA cuesta desde 0,018 US$ por imagen con Crear imagen, su tarea más barata. Precios por opción: 1K 0,018 US$ por imagen, 2K 0,054 US$ por imagen. La API utiliza un saldo independiente en dólares estadounidenses. Los créditos de la web no sirven para la API ni se pueden convertir en saldo de API; tampoco se puede convertir el saldo de API en créditos de la web. Al aceptar una tarea, reservamos el importe máximo del presupuesto en tu saldo de API. Al terminar, cobramos el uso real sin superar la reserva y liberamos el resto. Si la tarea falla, liberamos el importe reservado.

¿Cuál es el nombre de modelo de FLUX 3 Klein LoRA en la API?

Pon black-forest-labs/flux-3-klein-lora/text-to-image para Crear imagen; black-forest-labs/flux-3-klein-lora/edit para Editar imagen en el campo model de POST /jobs/createTask.

¿Qué límites tiene la API de FLUX 3 Klein LoRA?

Resoluciones: 1K · 2K; Relaciones de aspecto: 1:1 · 16:9 · 9:16 · 4:3 · 3:4 · 3:2 +9; Longitud del prompt (caracteres): 5,000. Las peticiones fuera de estos límites se rechazan antes de cobrar nada.

Más sobre FLUX 3 Klein LoRA