Models and current API429 rates
These are exact image model IDs for this family. The public catalog and GET /v1/models for your key answer different questions: a published entry does not prove account access. Preserve hyphens, dots and versions exactly.
| Model / exact ID | API429: USD and billing units |
|---|---|
Flux.2 ProFLUX.2-pro | $0.009000000 / 1 images · 1 output MP, no reference images (1 MP = 1024 × 1024) $0.013500000 / 1 images · 2 output MP, no reference images (1 MP = 1024 × 1024) $0.022500000 / 1 images · 4 output MP, no reference images (1 MP = 1024 × 1024) |
Catalog data date: . Rates retain their catalog conditions; an absent row does not mean a free request.
Family pricing and calculator · Full catalog
Request a single 1024x1024 image with the literal FLUX.2-pro ID
Start your evaluation of Black Forest Labs on API429 with a simple, verifiable scene such as a ceramic cup on a wooden table in soft daylight. The example sends a single text-to-image request with n set to 1, size set to 1024x1024 and response_format set to b64_json. Preserve the exact uppercase and dot punctuation in FLUX.2-pro; do not substitute a URL slug or lowercase variant. Test with a synthetic prompt free of confidential assets until your client properly validates responses and writes files.
Understand megapixel billing and the reference_mp=0 condition
In the API429 catalog, image rates for FLUX.2-pro distinguish output megapixels (output_mp) and reference megapixels (reference_mp). A 1024x1024 output equals 1 megapixel. The rate rows displayed for this text-to-image workflow carry the condition reference_mp=0, meaning no reference images are supplied. Never apply a reference_mp=0 quotation to image editing or reference-guided calls, and do not multiply an arbitrary resolution by a single number without checking the published rate rules in the FLUX pricing guide.
Use POST /v1/images/generations without native BFL polling
Upstream Black Forest Labs documentation describes the manufacturer’s native endpoints, which often return a task ID that your code must poll asynchronously. Do not copy that native polling loop to API429. Here, your client calls POST /v1/images/generations and inspects the returned JSON payload directly: check top-level warnings and parameter_mismatches, verify that data contains exactly one item with non-empty b64_json, check metadata.outputs when present, and inspect the decoded PNG, JPEG or WebP magic bytes before choosing a file extension.
Verify key access in GET /v1/models before paid image generation
Create an API429 key in your dashboard and query GET /v1/models with that key to confirm that FLUX.2-pro is enabled for your account. Public catalog visibility does not guarantee key-level access. Store API429_API_KEY in server environment variables and keep it out of browser code, repositories and logs. After saving the decoded image, open the file and inspect composition and dimensions manually before launching batch generation.
Read live catalog rates and handle partial or failed calls safely
The pricing table renders fresh, unambiguous standard_public rates from the API429 catalog; hidden cells indicate unconfirmed pricing rather than free image generation. Log the exact FLUX.2-pro identifier, requested size, warnings and decoded byte length on every call. Because retrying a timed-out or rejected image request can create a new billable generation, inspect any returned error or warning fields before issuing another paid request.
Choose your next connection step
- FLUX API pricing
Review megapixel billing units, output_mp and reference_mp conditions, and cost comparisons for FLUX image models.
- API429 model catalog
Check the literal FLUX.2-pro identifier, image_generation capability and live catalog rate cards.
- API429 quickstart
Configure your server-side API429 key, check GET /v1/models and review documented API429 endpoints.
First image generation: curl, Python, JavaScript
- Create a key in your API429 account and add balance by Russian bank card, a business invoice, USDT or TON. A $10 test balance is available for subscribing to the Telegram channel through the bonus bot.
- Use the same key to verify
FLUX.2-proinGET https://gateway.api429.com/v1/models. - Set
API429_API_KEYon the server and send a small paid request. The example does not retry automatically. - Inspect one output, warnings,
parameter_mismatches,api429.outputsand the PNG, JPEG or WebP signature. A timeout does not prove that the operation was unbilled.
The example uses POST /v1/images/generations, n=1, size=1024x1024 and response_format=b64_json without reference images. Do not carry over output_mp rows with reference_mp=0 to reference-image requests. Python and JavaScript verify key access, output count and file signature; warnings and actual visual output still require inspection. For curl, check the model list and JSON response separately.
curl
curl --fail-with-body https://gateway.api429.com/v1/images/generations \
-H "Authorization: Bearer $API429_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"FLUX.2-pro","prompt":"A ceramic cup on a wooden table, neutral background, soft daylight.","n":1,"size":"1024x1024","response_format":"b64_json"}' \
--output image-response.jsonPython 3
import base64
import json
import os
import urllib.request
from pathlib import Path
key = os.environ["API429_API_KEY"]
base = "https://gateway.api429.com/v1"
headers = {"Authorization": "Bearer " + key, "Content-Type": "application/json"}
model = "FLUX.2-pro"
with urllib.request.urlopen(urllib.request.Request(base + "/models", headers=headers), timeout=30) as response:
available = {item["id"] for item in json.load(response)["data"]}
if model not in available:
raise ValueError("Model unavailable to this key")
payload = json.loads("{\"model\":\"FLUX.2-pro\",\"prompt\":\"A ceramic cup on a wooden table, neutral background, soft daylight.\",\"n\":1,\"size\":\"1024x1024\",\"response_format\":\"b64_json\"}")
request = urllib.request.Request(base + "/images/generations",
data=json.dumps(payload).encode("utf-8"), headers=headers, method="POST")
with urllib.request.urlopen(request, timeout=180) as response:
result = json.load(response)
if result.get("warnings") or result.get("api429", {}).get("parameter_mismatches"):
print("Inspect output warnings:", result.get("warnings"), result.get("api429"))
items = result.get("data", [])
if len(items) != 1 or not items[0].get("b64_json"):
raise ValueError("Missing image or partial result; inspect before retrying")
raw = base64.b64decode(items[0]["b64_json"], validate=True)
if raw.startswith(b"\x89PNG\r\n\x1a\n"):
extension = "png"
elif raw.startswith(b"\xff\xd8\xff"):
extension = "jpg"
elif raw.startswith(b"RIFF") and raw[8:12] == b"WEBP":
extension = "webp"
else:
raise ValueError("Unknown image MIME; inspect before saving")
Path("image." + extension).write_bytes(raw)
print(result.get("api429", {}).get("outputs"))JavaScript: Node.js 18+
import { writeFile } from "node:fs/promises";
const key = process.env.API429_API_KEY;
if (!key) throw new Error("Set API429_API_KEY");
const base = "https://gateway.api429.com/v1";
const headers = { Authorization: "Bearer " + key, "Content-Type": "application/json" };
const model = "FLUX.2-pro";
const available = await fetch(base + "/models", { headers, signal: AbortSignal.timeout(30000) });
if (!available.ok) throw new Error("Models HTTP " + available.status);
if (!(await available.json()).data.some(item => item.id === model)) throw new Error("Model unavailable to this key");
const payload = {"model":"FLUX.2-pro","prompt":"A ceramic cup on a wooden table, neutral background, soft daylight.","n":1,"size":"1024x1024","response_format":"b64_json"};
const response = await fetch(base + "/images/generations", {
method: "POST", headers, body: JSON.stringify(payload), signal: AbortSignal.timeout(180000)
});
if (!response.ok) throw new Error("Generation HTTP " + response.status);
const result = await response.json();
if (result.warnings || result.api429?.parameter_mismatches) console.warn("Inspect warnings", result.warnings, result.api429);
if (result.data?.length !== 1 || !result.data[0].b64_json) throw new Error("Missing image or partial result; inspect before retrying");
const bytes = Buffer.from(result.data[0].b64_json, "base64");
const hex = bytes.subarray(0, 8).toString("hex");
const extension = hex === "89504e470d0a1a0a" ? "png" : hex.startsWith("ffd8ff") ? "jpg" : bytes.toString("ascii", 0, 4) === "RIFF" && bytes.toString("ascii", 8, 12) === "WEBP" ? "webp" : undefined;
if (!extension) throw new Error("Unknown image MIME; inspect before saving");
await writeFile("image." + extension, bytes);
console.log(result.api429?.outputs);These examples do not prove access for your key; verify the exact ID before a paid request. API contract · Configure your client · Questions and support
Payment and a $10 test
- Russian bank card. Top up your balance in the account.
- Invoice for companies. Bank transfer with closing documents.
- USDT and TON. Top up in crypto.
$10 test credit. Subscribe to our Telegram channel through the bot and get $10 on your balance for the first requests. Get $10 in the bot
Frequently asked questions
Which exact model string is required for FLUX on API429?
Pass the exact case-sensitive string FLUX.2-pro after verifying that it appears in GET /v1/models for your API429 key.
What does reference_mp=0 mean in the FLUX rate table?
It indicates a text-to-image quotation with zero reference image megapixels. It does not cover image editing or requests that include reference images.
How should my code validate the b64_json image response?
Check warnings and parameter_mismatches, confirm one non-empty b64_json output, verify metadata.outputs if present, and match the decoded PNG, JPEG or WebP header bytes before saving.
Should I implement the native BFL async polling workflow here?
No. Use the documented API429 POST /v1/images/generations contract shown on this page rather than porting native Black Forest Labs polling endpoints.
Sources and editorial review
Manufacturer documentation describes its family and its own API rules. API429 IDs, rates and request contracts require separate catalog and documentation checks. The original source-review date below is retained; English publication does not renew the source review.
- Black Forest Labs documentation: generating images quickstart
- Black Forest Labs documentation: FLUX.2 overview
- API429 public catalog
- API429 public request contract
Source review: . To connect, create an API429 account and follow the quickstart instructions.