flux-1-schnell: Black Forest Labs' fast FLUX tier as a metered API
flux-1-schnell is this platform's alias for the fast tier of the FLUX text-to-image family from Black Forest Labs. One OpenAI-shaped POST carries a prompt. The answer is a hosted image URL. The meter is the image, flat, from a prepaid wallet. The lane is live. Every contract claim on this page is backed by the platform's own dated test round of 24 September 2026. The alias is listed in the catalog and served over the images route, billed per image from a prepaid wallet. The models index carries the catalog's current state.
This page covers what the model is, the family split that confuses most searches, the exact call and its laws, and two layers of evidence. The first layer is the platform's own dated measurements. The second is the host pages read at source.
Last verified: 2026-09-24
What it is
FLUX is Black Forest Labs' text-to-image family, and schnell is its speed tier. The clearest one-line positioning is a reseller's. It is the tier's own framing, adopted by the catalog that sells it. Replicate's model page, read 24 September 2026, calls schnell tailored for local development and personal use. That positioning is what separates the tiers. schnell is the tier you can run yourself. The quality tier, flux-pro-1.1, is the one you rent. The family's name travels under two spellings across hosts. fal serves fal-ai/flux/schnell. Replicate serves black-forest-labs/flux-schnell. Both are the same publisher's line.
| Fact | Value | Owner of the number |
|---|---|---|
| Family | FLUX, Black Forest Labs' text-to-image line | publisher, per the reseller catalog namespaces |
| Tier positioning | fast; tailored for local development and personal use | Replicate model page, read 2026-09-24 |
| Parameters at fal | prompt, image_size, num_inference_steps (1 to 4, default 4), num_images, seed, safety checker, output_format (PNG default) | fal model page, read 2026-09-24 |
| Default output | 1024x1024 px | platform measurement, 2026-09-24 |
| Image host | fal; returned URLs live under fal.media | platform measurement, 2026-09-24 |
| Compatibility target | OpenAI's images API shape | OpenAI OpenAPI specification, fetched 2026-09-24 |
One ownership note on the hosted side. This platform's images route is a synchronous, OpenAI-shaped endpoint reached through the platform's own fal account. The images it returns are fal-hosted. The platform resells hosted access to fal's service. It runs no image hardware of its own. That is exactly why the meter, the wallet guard, and the failure billing law below are this platform's own. You can audit them in every response's usage object.
Use cases
The tier's profile is fast, per-image metered generation with a prepaid wallet as the spend boundary. The rate is one you can budget before you send anything. The metered unit is the image. The rate sits on the pricing page.
- Prototyping and iteration. Time to first byte ran 3.1 to 4.2 seconds across the platform's seven schnell test requests on 24 September 2026. That is fast enough for interactive loops.
- Batch asset generation. n up to 10 in one request, billed per image returned, with partial returns billing what returned.
- Pipelines with budget ceilings. The wallet is the hard stop. At zero balance the next request is refused with a named error before any work starts. A runaway loop cannot spend past it.
- Agent-generated imagery. Idempotency keys make retry-safe tool calls cheap to write correctly. The same key with the same body replays instead of double-billing.
- Local-first projects that need overflow. The tier's own positioning is local development. A metered lane covers the spikes and the occasions the local GPU is busy elsewhere.
The fast lane and the quality lane
This platform's images catalog carries both FLUX tiers over one route, and the split is the family's own. The fast lane (flux-1-schnell, this page) is the speed tier. It carries fewer inference steps, a per-image meter, and the local-development positioning quoted above. The quality lane (flux-pro-1.1) is FLUX 1.1 Pro. That is the tier fal sets up for quality work. Its knobs include explicit width and height and a guidance scale. Both lanes answer the same call shape. Both bill the same per-image meter. Both return hosted URLs from the same host. A pipeline can sit on the fast lane and hand the quality lane the renders that matter. The choice is workload, not contract.
Self-host, fal direct, or a metered lane
The tier's positioning makes the self-host road a real option rather than a gesture. For this model that is the reseller's own framing. fal also sells schnell direct. It bills per megapixel rounded up to the nearest megapixel, through a queue-first API documented at fal's model endpoints, read 24 September 2026. Replicate bills per thousand output images through its prediction API, per its schnell page read the same day.
The decision rule is the usual one. Self-host when the machine is already there and the tier's local-development framing fits. Use a host direct when you want that host's queue machinery and per-megapixel metering. Call a metered lane when you want the runtime, the metering, and the measurements to be someone else's maintenance. Your cost per image becomes a number you can put in a budget. This platform's lane bills per image from a prepaid wallet, flat in size. Nothing about your spend depends on a rate limit changing.
API usage
The route is OpenAI-shaped, so the OpenAI SDK drives it with a base-url override. Plain HTTP works with a Bearer key:
| Parameter | Required | Law |
|---|---|---|
model | yes | the model id, flux-1-schnell here |
prompt | yes | non-empty string, forwarded as sent; no local length cap (fal enforces its own) |
n | no | integer 1 to 10, default 1; billed as returned, not as requested |
size | no | WIDTHxHEIGHT, positive integers, forwarded as sent and applied (768x1344 receipt, 2026-09-24) |
response_format | no | url, the day-one value; b64_json is refused with a named error on provider basis, dated receipt |
Every other parameter is refused with a 400 that names the parameter. That includes quality, style, background, output_format, output_compression, moderation, stream, partial_images, user, and seed. The strictness matches fal's own behavior, measured in the test round. fal's API rejected quality and seed with bare 400s. So the platform's door answers first with the clearer error.
Three laws save debugging time:
- The usage object is ours. The response's
usageis an images count and a cost figure. The count comes from the response's data array. The cost is this platform's retail at six decimals. fal's token-shaped usage block is noise and never billing truth here. - The URL is ephemeral. Fetch the bytes promptly. The platform neither proxies nor stores them. fal expires hosted media per the account's setting.
- Failures bill zero and stay retryable. A failed generation writes a failure row and bills nothing. It is never cached. A retry with the same idempotency key re-executes as a fresh attempt rather than replaying the failure.
curl
curl -X POST "https://api.ironstratum.com/v1/images/generations" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"model": "flux-1-schnell", "prompt": "a small red wooden cube on a white table, soft studio light", "n": 1}'
python
import os
import requests
resp = requests.post(
"https://api.ironstratum.com/v1/images/generations",
headers={"Authorization": "Bearer " + os.environ["KEY"]},
json={
"model": "flux-1-schnell",
"prompt": "a small red wooden cube on a white table, soft studio light",
"n": 1,
"size": "1024x1024",
},
timeout=60,
)
resp.raise_for_status()
answer = resp.json()
print("images:", answer["usage"]["images"], "cost:", answer["usage"]["cost"])
print("url:", answer["data"][0]["url"]) # fetch promptly; hosted URLs are temporary
openai-sdk
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.ironstratum.com/v1",
api_key=os.environ["KEY"],
)
result = client.images.generate(
model="flux-1-schnell",
prompt="a small red wooden cube on a white table, soft studio light",
n=1,
)
print(result.data[0].url)
Benchmarks
Both evidence layers below carry their dates.
The platform's own measurements. From the platform's test round against the live route, 24 September 2026. These are the same records that sized the route's timeouts:
| Metric | Value | Basis |
|---|---|---|
| Time to first byte | 3.1 to 4.2 seconds across 7 schnell requests | live check, 2026-09-24 |
| Size forwarding | 768x1344 requested, 768x1344 delivered (pixel-verified) | live check, 2026-09-24 |
| Default size | 1024x1024 when no size is sent | live check, 2026-09-24 |
| Batch count | n of 3 returned 3 data entries | live check, 2026-09-24 |
| First-byte budget | 30 s, sized with headroom over the measured 4.2 s worst case | route setting |
| Refused parameters | seed, quality-class extras, and b64_json each rejected by fal with a 400 | live check, 2026-09-24 |
| Moderation | a policy-refusing prompt returned a content-policy violation naming the input at fal; through the route it surfaces as the generic upstream_rejected error, billed zero | live check, 2026-09-24 |
Read the latency row for what it is. It is single-request time to first byte on one account, one region, one day. It sizes the timeout honestly. The route's first-byte budget carries seven times the worst measured case. It is not a throughput benchmark. Your acceptance test is your own prompts at your own sizes.
The market's own pages. From fal's schnell page and Replicate's schnell page, both read 24 September 2026, and the OpenAI OpenAPI specification, fetched the same day. fal bills schnell per megapixel rounded up to the nearest megapixel. It sets the model's knobs with image_size presets and an inference-step count of 1 to 4 (default 4). Replicate bills per thousand output images. It carries the local-development positioning quoted above. OpenAI's specification is the compatibility target this route mirrors. It documents n up to 10 and a 60-minute validity on its own url mode. None of those pages speaks for this platform's metering. The pricing page does.
Getting started
- Open an account through the console's invite flow. The platform runs as an invite-only beta in this phase. The console holds the wallet, the keys, and the spend history.
- Create an API key. Keys are revocable on the spot and stand alone. One key per project keeps a leaked one from touching anything else. The wallet balance, not a per-key cap, is the spend boundary.
- Check the rate once. Metering is per image, flat in size. The pricing page answers the budget question. Images times rate, known before you send.
- Make the first call. The curl tab is the whole contract. A key, the alias, and a prompt. When one image comes back clean, the rest is n and size arithmetic.
The images category lays out the platform's text-to-image models, including the quality tier. The models index lists everything the catalog serves. The pricing page answers the budget question for every lane.