Batch Banana FLUX 3 Image plus MCP: a second bulk-catalog leg in Bubble with BIAIG after promo pricing
After 8 Oct 2026 UTC, FLUX 3 routing is more than BFL API calculators. A Batch Banana MCP leg still needs the same Bubble job/ref model as your first leg—BIAIG-style scheduled API workflows.
Context after the promo window
Black Forest Labs shipped FLUX 3 Image on 1 Oct 2026. A ~50% launch discount on BFL API use ran through 8 Oct 2026, 15:00 UTC; after that, list/API pricing applies (BFL’s pricing page shows a calculator example around $0.048/image at 1K; full tiers vary by resolution).
FLUX 3 Image targets layout-heavy work: up to 10 reference images, bounding-box placement, unified generate/edit, and multi-resolution output. For me that shifted bulk-catalog design—not just cost—toward how you store refs and job state in Bubble. Worth reading next: After 8 Oct: FLUX 3.
Batch Banana added FLUX 3 Image the same day and exposes it via hosted MCP at https://mcp.batchbanana.com/mcp (OAuth, workspace credits, no API key in the client). Batch Banana bills FLUX 3 in credits (e.g. 6/12/72 for 1K/2K/4K per its release note)—a different billing shape than direct BFL USD API credits.
Two legs, one catalog
In this digest stack, BIAIG is an editorial label for the first leg: the familiar Bubble bulk-image path (API Connector/plugin plus Schedule API workflow on a list → parallel independent workflows, task/job IDs, polling, durable storage because provider URLs often expire). Scout did not find a public product literally named BIAIG—I treat it as your existing in-app/API route. Same topic: Tencent Hy Image 3.5 Preview.
The second leg is MCP-triggered batches: an agent calls Batch Banana tools, results land in the Batch Banana library, and your Bubble app must still mirror job IDs, ref slots, and final assets if the catalog lives in Bubble.
Aggregator legs (WaveSpeedAI submit/poll with ordered 1–10 refs; Vercel AI Gateway bfl/flux-3-image) stay relevant for post-promo cost/routing comparisons but are not MCP-native like Batch Banana.
BFL’s official MCP (https://mcp.bfl.ai, OAuth billed to the org) does not clearly list FLUX 3 Image on generate_image in the public tool docs I reviewed (often FLUX.2 image models plus FLUX 3 video). I verify live bfl://models or current Mintlify before I route anything.
Batch Banana MCP: what to actually call
From MCP tool documentation:
- Async flow:
generate_image→get_generation(do not assume a synchronous URL in Bubble without polling). - Library-backed refs:
search_library,import_image—refs live in the BB workspace, not automatically in your Bubble DB. - Quote before spend, request-key idempotency (
IDEMPOTENCY_CONFLICT; price changes can reject requests). - Caps: e.g. up to 8 images per
generate_image; bulkedit_imageup to 256 (free edits) / 40 (paid edits)—plan chunking for large catalogs. RATE_LIMITED: Bubble parallel scheduling can hit provider limits; use backoff and partial-failure handling.
Ops: whoever connects MCP to a workspace spends real credits; MCP does not delete work, but spend still happens.
Bubble data model (shared across both legs)
One bulk catalog → one canonical row (your internal catalog key), two entry points → two provider job namespaces. Without that, consistency checks (same prompt, refs, model, resolution) drift.
Minimum fields per catalog row
| Field | Purpose |
|---|---|
catalog_row_id |
Your canonical Bubble key |
leg |
biaig_api | batch_banana_mcp | (optional aggregator) |
provider_job_id |
BB generation/job ID, BFL request_id, WaveSpeed prediction id—do not mix types in one field; prefer typed subfields |
idempotency_key |
BB MCP request key plus Bubble-side dedup on agent/workflow retry |
status |
queued / running / succeeded / failed / expired_url |
model + resolution |
FLUX 3 Image tier (1K/2K/4K) |
prompt_hash |
Dedup and audit |
ref_slots[1..10] |
URL or file id after import to durable storage (S3/plugin file) |
layout_payload |
Bounding-box JSON (BFL-native)—do not assume 1:1 through BB MCP or aggregators without verification |
quoted_credits / quoted_usd |
Leg-specific quote snapshot before spend |
final_asset_url |
After copy from provider/BB library to your storage |
consistency_group_id |
When two legs generate the “same” SKU for A/B or failover |
Ref slots: normalize, do not blindly copy
- FLUX 3 / Batch Banana: up to 10 refs.
- BFL MCP snippet: up to 8
input_imageslots per request. - WaveSpeed edit: 1–10 ordered URLs.
In Bubble, store an ordered list with slot index and source (bubble_file, bb_library_id, external_url_temp). When switching legs, remap—do not silently truncate.
Consistency checks with two bulk entry points
Before marking catalog rows published:
prompt_hash,model,resolutionmatch within aconsistency_group_idwhen comparing legs.ref_slots: same count and order—or an explicitref_mapping_notewhen a leg shortens refs.- Every succeeded row’s
provider_job_idhas afinal_asset_urlon durable storage (not only BB library or a temp BFL URL). - Idempotency: agent retries or scheduled reruns do not double spend without a new key.
Bubble Schedule API workflow on a list and MCP batches are both parallel; rate limits and duplicate jobs are an ops design problem, not “free” MCP magic.
Post-promo routing (honest framing)
After the promo I stopped asking “cheapest row in a spreadsheet.” The real question is catalog of record and who polls and persists.
- BIAIG leg: control in Bubble workflows, direct BFL API or plugin—BFL USD/credits; you own polling.
- Batch Banana MCP leg: fast agent-driven bulk plus library refs, BB credit billing, documented async/idempotency—but Bubble mirroring is mandatory.
- Aggregator/Gateway: single API key, different ID shapes—a third leg only if already in your architecture (prior digest “Flare–Sunburst–WaveSpeedAI” routing is internal/compare context; Scout found no stable public product match under those names).
I would not build cross-leg failover without aligned ref/layout semantics—feature parity is not guaranteed.
Pre-production checklist
- Canonical
catalog_row_idplus typedprovider_job_idper leg. - Quote and idempotency key on every spend (MCP and API).
- Import refs to durable storage; document slot indices.
- Polling workflow or agent discipline for
get_generation/ plugin status. - Partial failure: which rows retry vs quarantine.
- Who holds OAuth on the BB workspace / BFL org.
| # | Pre-production check | Details |
|---|---|---|
| 1 | Canonical catalog_row_id plus typed provider_job_id per leg |
Per-leg identity |
| 2 | Quote and idempotency key on every spend | MCP and API |
| 3 | Import refs to durable storage | Document slot indices |
| 4 | Polling workflow or agent discipline | get_generation / plugin status |
| 5 | Partial failure policy | Which rows retry vs quarantine |
| 6 | OAuth ownership | BB workspace / BFL org |
Open questions (from Scout packet)
- What does BIAIG mean in your stack—plugin, custom workflow, or bulkimagegeneration.com?
- Does mcp.bfl.ai expose FLUX 3 Image on
generate_imagetoday? - Which identifier is canonical for audit—internal row key or provider id?
Sources: Batch Banana release and MCP docs, BFL model/pricing/MCP docs, Bubble bulk operations manual, WaveSpeed/Vercel changelog—see Scout packet. Pricing and tool catalogs are time-sensitive; verify before deploy.