IronStratum Get an API key

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.

FactValueOwner of the number
FamilyFLUX, Black Forest Labs' text-to-image linepublisher, per the reseller catalog namespaces
Tier positioningfast; tailored for local development and personal useReplicate model page, read 2026-09-24
Parameters at falprompt, 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 output1024x1024 pxplatform measurement, 2026-09-24
Image hostfal; returned URLs live under fal.mediaplatform measurement, 2026-09-24
Compatibility targetOpenAI's images API shapeOpenAI 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:

ParameterRequiredLaw
modelyesthe model id, flux-1-schnell here
promptyesnon-empty string, forwarded as sent; no local length cap (fal enforces its own)
nnointeger 1 to 10, default 1; billed as returned, not as requested
sizenoWIDTHxHEIGHT, positive integers, forwarded as sent and applied (768x1344 receipt, 2026-09-24)
response_formatnourl, 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:

  1. The usage object is ours. The response's usage is 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.
  2. The URL is ephemeral. Fetch the bytes promptly. The platform neither proxies nor stores them. fal expires hosted media per the account's setting.
  3. 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:

MetricValueBasis
Time to first byte3.1 to 4.2 seconds across 7 schnell requestslive check, 2026-09-24
Size forwarding768x1344 requested, 768x1344 delivered (pixel-verified)live check, 2026-09-24
Default size1024x1024 when no size is sentlive check, 2026-09-24
Batch countn of 3 returned 3 data entrieslive check, 2026-09-24
First-byte budget30 s, sized with headroom over the measured 4.2 s worst caseroute setting
Refused parametersseed, quality-class extras, and b64_json each rejected by fal with a 400live check, 2026-09-24
Moderationa 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 zerolive 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.

What the platform serves

Specialty models — kind and unit price
ModelKindPrice
flux-1-schnellimages$0.003/image

The same data GET /v1/models serves. A dash means the value isn't set.

Questions

What is flux-1-schnell?
The fast tier of the FLUX text-to-image family from Black Forest Labs. Every reseller's catalog names that publisher in the family namespace. Replicate's model page, read 24 September 2026, positions the tier in its own words. It calls schnell tailored for local development and personal use. On this platform the alias answers over the images route. You send one OpenAI-shaped POST with a prompt. You get a hosted image URL back. The meter is per image, paid from a prepaid wallet. The images come from fal. Returned URLs live under fal.media. The platform checked fal's OpenAI-shaped endpoint live on 24 September 2026.
Is flux-1-schnell available on this platform?
It is live. The alias is in the /v1/models listing, in the catalog, and on this site. The route bills per image returned from a prepaid wallet, exactly as this page documents. Access in this phase starts at the console's invite flow. The platform runs as an invite-only beta. This page is the platform's written record of the lane. It holds the contract, the metering law, and the market basis of the price. The models index carries what the catalog serves today.
How do I call the images route?
POST /v1/images/generations with a Bearer key from the console. The accepted parameter set is strict. It takes model, prompt (required, non-empty), n as an integer from 1 to 10, size as a WIDTHxHEIGHT string, and response_format with the value url. Anything else is refused with a 400 naming the parameter. That includes quality, style, background, output_format, moderation, stream, and seed. Nothing is dropped silently. The strictness is deliberate. It matches the provider. fal's own API rejected quality and seed when the platform tested the route on 24 September 2026. So the door answers first. You get a clearer error than a buried provider refusal.
How does the size parameter work?
You send WIDTHxHEIGHT. The string forwards exactly as sent, and the provider applies it. The platform's test round requested 768x1344 on 24 September 2026 and received a 768x1344 pixel image. A request with no size returned the 1024x1024 default. Dimensions must be positive integers. A zero axis is refused as malformed. Pricing does not change with size day-one. The metering unit is the image, flat. That is this platform's own normalization of a market whose hosts bill per megapixel with rounding rules of their own.
How does billing work?
Per image returned, counted from the response's data array, not the requested n. A request for three that returns two bills two. A failed generation bills zero. It still writes its failure row. A request refused at the door bills nothing. Spend stops at the wallet. A request arriving after the balance is spent is refused with a named error before any work starts. Every response carries a usage object. Its images and cost fields are this platform's own numbers, the count and the retail at six decimals. They are never the provider's. Retries are covered by idempotency. The same Idempotency-Key with the same body replays the cached response and bills nothing a second time. The same key with a different body is a 409 conflict. A failed turn is never cached, so retrying after a failure re-executes rather than replaying the failure.
What about the returned URL?
The response carries a hosted URL under fal.media. It passes through unchanged. This platform does not proxy, cache, or rehost image bytes. Treat the URL as temporary. fal expires hosted media per the account's media-expiration setting. The market's documented analogue is OpenAI's own images API. Its specification states its url mode is valid for 60 minutes. Fetch the bytes promptly and store them on your side. Base64 responses are not offered on this route day-one. fal's API rejects the parameter. The response_format field accepts url. The expansion to b64_json is a documented flip. It lands with a dated receipt, never silently.
How fast is it, and what does it cost?
Time to first byte ran 3.1 to 4.2 seconds across the platform's seven test requests on 24 September 2026. That is fast enough for interactive loops. Cost is a flat per-image rate that does not move with size. It is published on the pricing page. That page renders from the same source the route meters against. For shape context, the hosts read the same day bill differently. fal direct bills schnell per megapixel rounded up to the nearest megapixel. Replicate bills per thousand output images. This platform's flat per-image meter is the number you can put in a budget before you send anything. The quality tier, flux-pro-1.1, is a separate page and a separate rate.