Media generation

fal API for AI agents: what an image, a clip and a voice-over cost per output

How an agent runs fal's hosted image, video and speech models, what the queue returns, and the per-megapixel and per-second arithmetic behind each call.

#fal#ai-agents#image-generation#video-generation#text-to-speech#flux#kling#pricing

When an agent needs a picture, a short clip or a voice-over, fal is one API in front of hundreds of generation models. Each model is an endpoint ID such as fal-ai/flux/schnell: you send JSON, you get back URLs to the files, and you pay per output rather than per month. The catch is that "per output" means something different for every model. By the end of this guide you will know why 100 FLUX schnell images cost $0.30 while 100 Nano Banana images cost $3.98, and why one default-settings Kling clip costs as much as 233 schnell images.

$0.003per megapixel, FLUX.1 [schnell]rounded up, Oct 2026
$0.14per second, Kling 2.6 Pro with audio$0.07 with audio off
2concurrent requests on a new accountself-serve max 40
$0for HTTP 500+ and queue timeonly inference is billed

Why this matters for agents

A person generating images clicks, looks, and clicks again. An agent generates in loops, and three things about fal change the cost of those loops.

First, the unit of billing is not the request. Image models bill per image or per megapixel, video models per second of output, speech per 1,000 characters, and a few models fall back to GPU seconds (Model API pricing). An agent that picks a bigger image_size or flips generate_audio has changed the price without changing the number of calls.

Second, concurrency is tight at the start. Every new account begins with a limit of 2 concurrent requests, and self-serve limits scale up to 40 based on paid invoices from the last four weeks (rate limits). Over the limit you get a 429 with X-Fal-needs-retry: 1. The queue requeues submit and subscribe calls with no maximum retry count, so a 50-image batch at concurrency 2 does not fail, it just takes 25 rounds.

Third, failures are cheap but not free of consequence. fal does not charge for HTTP 500 and above or for time in the queue (pricing). But a request that succeeds with an image your safety checker flagged is still a successful output, and so is a video from a prompt you typed wrong. Validate the prompt before the call, not after.

Before spending, an agent should check the model page's unit price, the endpoint's default values (they are often the expensive ones), and whether the job needs the queue.

What fal returns

Every model has its own schema, but the shapes repeat. FLUX.1 [schnell] returns:

Field What it is
images[] Each with url, width, height and content_type
seed The seed used, so you can reproduce the result
has_nsfw_concepts[] One boolean per image from the safety checker (enable_safety_checker defaults to true)
prompt The prompt that was run
timings.inference Seconds spent on inference

Video models such as Kling Video v2.6 Pro return a single video object with url, content_type, file_name and file_size. Speech models such as MiniMax Speech 2.8 [HD] return audio.url and nothing else: no duration, no character count. If you need either, measure the file yourself.

Three surprises. The URLs point at hosted files on fal.media, so download anything you intend to keep. Nano Banana returns a description field that is empty in fal's own example. And when a job runs through the queue, the response you poll for has a status of IN_QUEUE (with queue_position), IN_PROGRESS or COMPLETED; a failed request still reaches COMPLETED and carries error and error_type, so check for error before reading images (Queue API).

The economics

fal prices "per output, per model" and draws from prepaid credits (fal pricing). List prices as of October 2026, from each model's page:

100 images at one megapixel eachfal list prices, October 2026
FLUX.1 [schnell]: $0.3 FLUX.1 [schnell] $0.3 FLUX.1 [dev]: $2.50 FLUX.1 [dev] $2.50 Ideogram V3 Turbo: $3 Ideogram V3 Turbo $3 Nano Banana: $3.98 Nano Banana $3.98 FLUX1.1 [pro]: $4 FLUX1.1 [pro] $4 Ideogram V3 Quality: $9 Ideogram V3 Quality $9 $0$5$10

Source: fal pricing · Per-megapixel models at exactly 1 MP; Nano Banana and Ideogram bill per image. Model pages in References.

View data
ItemValue
FLUX.1 [schnell]$0.3
FLUX.1 [dev]$2.50
Ideogram V3 Turbo$3
Nano Banana$3.98
FLUX1.1 [pro]$4
Ideogram V3 Quality$9

The megapixel multiplier. FLUX.1 [schnell] costs "$0.003 per megapixel" and "images are billed by rounding up to the nearest megapixel". FLUX.1 [dev] is $0.025 per megapixel and FLUX1.1 [pro] is $0.04, with the same rounding. So:

  • Default image_size of landscape_4_3 is 1024 × 768 = 0.79 MP, which rounds up to 1 MP: $0.003 per schnell image, $0.30 per 100.
  • A 1536 × 1536 image is 2.36 MP, which rounds up to 3 MP: $0.009 per schnell image, three times the price for 2.25 times the pixels.
  • num_images: 4 (the maximum on schnell) is four outputs, four charges.

Per-image models. Nano Banana is a flat "$0.0398" per image. Ideogram V3 depends on rendering_speed: "$0.03 with TURBO, $0.06 with BALANCED, and $0.09 with QUALITY". Same prompt, 3x price.

The per-second multiplier. Video is where cost compounds, because two parameters multiply:

Shortest clip each model will makeText to video on fal, October 2026
Kling 2.6 Pro, 5 s, no audio: $0.35 Kling 2.6 Pro, 5 s, no audio $0.35 Hailuo 02 Pro, 6 s: $0.48 Hailuo 02 Pro, 6 s $0.48 Kling 2.6 Pro, 5 s, audio on: $0.7 Kling 2.6 Pro, 5 s, audio on $0.7 $0$0.5$1

Source: Kling Video v2.6 Pro text to video · Hailuo 02 Pro from its own model page; see References.

View data
ItemValue
Kling 2.6 Pro, 5 s, no audio$0.35
Hailuo 02 Pro, 6 s$0.48
Kling 2.6 Pro, 5 s, audio on$0.7

Kling 2.6 Pro charges "$0.07 (audio off) or $0.14 (audio on)" for every second. In the endpoint's schema, duration defaults to "5" and generate_audio defaults to true, so a call with just a prompt costs 5 × $0.14 = $0.70, exactly fal's own example. Set duration: "10" and it is $1.40. Turn audio off and the same 10 seconds cost $0.70. Hailuo 02 Pro is "$0.08/sec", and its shortest clip is 6 seconds, so "a single 6 second video will cost $0.48/video".

Speech. MiniMax Speech 2.8 [HD] is "$0.1 per 1000 character". A 60-second voice-over is roughly 900 characters, so about $0.09; a 20,000-word article (about 120,000 characters) is $12.

Putting it together for a product-listing agent that makes 1 hero image, 3 variations and one 5-second clip per product: 4 schnell images at 1 MP = $0.012, plus one Kling clip with audio off = $0.35, so $0.36 per product and $36 per 100 products. Leave audio on and it is $71.

How to call it from your agent

AMXP is in private preview. Once it opens, the agent searches for the job, reads the model's schema and unit price, then runs it with fal's own parameter names:

ts
const [tool] = await amxp.discover({ query: "fast text to image", provider: "fal" })
const spec = await amxp.inspect(tool.id)   // schema, defaults and price per megapixel
const run = await amxp.execute(tool.id, {
  prompt: "A ceramic coffee mug on a walnut desk, soft morning light",
  image_size: "landscape_4_3",   // 1024 x 768, rounds up to 1 megapixel
  num_images: 1,
  num_inference_steps: 4,
  output_format: "jpeg",
  enable_safety_checker: true,
})
// run.output.images[0].url, run.output.has_nsfw_concepts[0]

The direct call with fal's client. subscribe submits to the queue and polls until the result is ready, which is the right default for anything that takes more than a few seconds:

ts
import { fal } from "@fal-ai/client"

const result = await fal.subscribe("fal-ai/kling-video/v2.6/pro/text-to-video", {
  input: { prompt: "Slow pan across a walnut desk", duration: "5", generate_audio: false },
})
// result.data.video.url

Raw HTTP authenticates with Authorization: Key $FAL_KEY and submits to https://queue.fal.run/<endpoint>, which returns request_id, status_url, response_url and cancel_url (Queue API).

What most people get wrong

Polling status in a tight loop. The queue has a /status/stream endpoint that sends server-sent events until the request completes, and a webhook_url option that POSTs the result to you (Queue API). Use one of those for video. If you must poll, back off: fal's own 429 guidance is exponential, 1 s, 2 s, 4 s, 8 s (rate limits).

Trusting the defaults on video. Kling 2.6 Pro defaults to audio on. That one boolean doubles every clip. Set generate_audio explicitly, and set duration explicitly too.

Sizing images by aspect ratio, not megapixels. Because fal rounds up to the whole megapixel, a 1.1 MP image costs the same as a 2 MP one. Either stay at or under 1 MP, or use the full 2 MP you are paying for.

Treating COMPLETED as success. A failed queue request also reports COMPLETED, with error and error_type in the body. Read error first.

Retrying on your side when fal already retries. Failed requests are requeued "up to 10 times" and concurrency 429s are requeued without limit. Adding your own retry loop multiplies work and, for non-idempotent webhooks, duplicates results. Use request_id as the idempotency key, and send X-Fal-No-Retry: 1 if you want to own retries yourself.

When to use something else

  • Your own fal account if fal is most of your media spend. Concurrency rises with paid invoices, so a $500-a-month account gets far more parallelism than a per-call marketplace user, and you can deploy your own models on fal's serverless GPUs.
  • Replicate, Runware or WaveSpeedAI when the model you want is hosted there and not on fal, or when the same model is cheaper there for your resolution.
  • Kling or MiniMax directly when you only use one video family and want the vendor's newest options first.
  • ElevenLabs when voice is the main job and you need voice cloning and per-character pricing tuned for long scripts.
  • Topaz Labs to upscale an image or clip you already have, instead of regenerating at a higher megapixel count.
  • Stability AI or Recraft when you want the model vendor's own endpoint and billing.

Common questions

How does fal charge for images?

Per output. FLUX models bill per megapixel, rounded up to the nearest whole megapixel, so a 1024 × 768 image is billed as 1 MP. Nano Banana and Ideogram bill a flat price per image. The unit and price are on each model's page, and GET https://api.fal.ai/v1/models/pricing?endpoint_id=... returns them as JSON (Model API pricing).

Do failed fal requests cost money?

HTTP 500 and above are never billed, and queue waiting time is free. A request that returns a result you do not like is billed like any other.

Can my agent call fal through AMXP today?

Not yet. AMXP is in private preview, and its API, CLI and MCP server are not public. The flow above shows how it works through AMXP once it opens.

References

  1. fal pricing, falfal.ai/pricing
  2. Model API pricing, falfal.ai/docs/model-apis/pricing
  3. Queue API, falfal.ai/docs/model-apis/model-endpoints/queue
  4. Rate limits and concurrency, falfal.ai/docs/model-apis/rate-limits
  5. FLUX.1 [schnell] API, falfal.ai/models/fal-ai/flux/schnell
  6. FLUX.1 [dev] API, falfal.ai/models/fal-ai/flux/dev
  7. FLUX1.1 [pro] API, falfal.ai/models/fal-ai/flux-pro/v1.1
  8. Nano Banana API, falfal.ai/models/fal-ai/nano-banana
  9. Ideogram V3 API, falfal.ai/models/fal-ai/ideogram/v3
  10. Kling Video v2.6 Pro text to video, falfal.ai/models/fal-ai/kling-video/v2.6/pro/text-to-video
  11. MiniMax Hailuo 02 Pro text to video, falfal.ai/models/fal-ai/minimax/hailuo-02/pro/text-to-video
  12. MiniMax Speech 2.8 [HD] API, falfal.ai/models/fal-ai/minimax/speech-2.8-hd

Cite as: AMXP, “fal API for AI agents: what an image, a clip and a voice-over cost per output,” AMXP, November 2, 2026. https://amxp.ai/blog/fal-api-for-ai-agents · Markdown version