feat(black-forest-labs): add video model support (FLUX 3) - #18417
Merged
Conversation
joshualipman123
force-pushed
the
feat/bfl-flux-3-video
branch
from
August 4, 2026 18:14
3f28aa5 to
fc66c87
Compare
joshualipman123
marked this pull request as ready for review
August 4, 2026 18:28
joshualipman123
marked this pull request as draft
August 4, 2026 18:29
joshualipman123
force-pushed
the
feat/bfl-flux-3-video
branch
from
August 4, 2026 18:32
a42bb84 to
8fdc784
Compare
joshualipman123
force-pushed
the
feat/bfl-flux-3-video
branch
from
August 4, 2026 20:32
8fdc784 to
1f7048d
Compare
joshualipman123
marked this pull request as ready for review
August 4, 2026 21:00
Ref: contributing/providers.md#workflow-serialization Reason: video models must cross workflow steps
Ref: https://docs.bfl.ai/api-reference/utility/generate-a-video-with-flux-3 Reason: API requires 1-10 homogeneous ordered keyframes
Ref: https://docs.bfl.ai/api-reference/utility/generate-a-video-with-flux-3 Reason: 3+ untimed frames require duration
Ref: https://docs.bfl.ai/api-reference/utility/generate-a-video-with-flux-3 Reason: current contract only accepts latest
Ref: packages/ai/src/generate-video/generate-video.ts; https://docs.bfl.ai/flux_3/flux3_video Reason: Core downloads signed provider URLs
Ref: packages/black-forest-labs/src/black-forest-labs-video-model.ts Reason: mapping uses 720px threshold, not nearest tier
Ref: Lint & Format CI; .oxfmtrc.jsonc Reason: oxfmt requires canonical layout
Ref: packages/provider-utils/src/serialize-model-options.ts Reason: test filtering with non-serializable values
Ref: #12515 Ref: https://docs.bfl.ai/api-reference/utility/generate-a-video-with-flux-3 Reason: expose polling_url through doStart/doStatus
gr2m
approved these changes
Aug 4, 2026
Contributor
|
|
gr2m
added a commit
that referenced
this pull request
Aug 4, 2026
Contributor
|
🚀 Published in:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Background
FLUX 3 is Black Forest Labs' first video model.
@ai-sdk/black-forest-labsonly exposed image models, soblackForestLabs.video(...)did not exist and FLUX 3 was unreachable throughgenerateVideo.Summary
Adds
BlackForestLabsVideoModel(Experimental_VideoModelV4) and wiresvideo/videoModelonto the provider.The API is one endpoint with a
modediscriminator, and the spec has nomodecall option, so the mode is derived from which inputs are set:t2vprompti2vimage/frameImages, orproviderOptions.blackForestLabs.keyframeskeyframesv2vinputReferencesentrystart_videodraft_enhanceproviderOptions.blackForestLabs.draftCachedraft_cacheMapping decisions (for review):
resolution— the API takes a named tier (hd/fhd) while the call option is{width}x{height}. Named tiers are accepted case-insensitively; dimensions resolve by their shorter side, with acompatibilitywarning onlywhen the value snaps (
1280x720/1920x1080are silent).keyframes—image/frameImagescover one and two keyframes. The shapes those options can't express (3+ images, images pinned to a second) go throughproviderOptions.blackForestLabs.keyframes. 3+ untimed keyframes without adurationget anotherwarning, since the API rejects that combination.inputReferences— FLUX 3 has no reference-image concept, so image references warn and point at the keyframe inputs; a reference with nomediaTypeis treated as the video to continue from, with a warning.Follow-ups
Route multi-image keyframes through
inputReferences. Right nowimageandframeImagescover one and two keyframes, and everything richer (3+ images, images pinned to a second) goes throughproviderOptions.blackForestLabs.keyframes. That leaves a bad seam — two imagesis a top-level field, three is a provider option, though nothing about the caller's intent changed — and, more importantly, conditioning images hidden in
providerOptionsare invisible to anything downstream that meters inputs, which matters because FLUX 3 reportsinput_mpand bills for them.inputReferencesis already an ordered array of image-or-video files, which is the shape a keyframe list wants.