FLUX 3 Video via API gebruiken: handleiding met Python-script
Genereer video's met FLUX 3 Video via de API van fal.ai. Inclusief kant-en-klaar Python-script, kostenoverzicht en tips voor prompts en gesproken tekst.

👁 117 keer gelezen
FLUX 3 Video heeft geen standaard webapp met een eenvoudig abonnement voor consumenten - Black Forest Labs levert het model via een API. Dat klinkt ingewikkelder dan het is: met een API-sleutel, een paar dollar saldo en een compact script ga je meteen aan de slag. Hieronder bespreken we drie opties (fal.ai, OpenRouter en de BFL-API), delen we een kant-en-klaar Python-script dat we in een schone map hebben getest, en geven we richtlijnen voor prompts. Onze vergelijkingen, tarieven en praktijktests vind je in de gids over FLUX 3 Video.
De bedragen in EUR zijn indicatieve omrekeningen van de gepubliceerde USD-prijzen tegen de ECB-referentiekoers van 2026-10-12: 1 EUR = 1.1181 USD. Dit zijn geen bevestigde lokale eindprijzen inclusief belastingen. De aanbieder en de bank kunnen andere koersen of kosten hanteren. ECB.
Wat heb je nodig?
- Een account bij fal.ai (of OpenRouter of de BFL-API) en een API-sleutel.
- Saldo: voor je eerste tests is 4,47 EUR (5 USD) al ruim voldoende. Een concept (draft) van 5 seconden kost bij fal.ai 0,15 USD, een volledige 720p-clip van 5 seconden 0,425 USD.
- Python 3.9+ met de bibliotheek
requests. - Geduld: het genereren van een 5-secondenclip duurde bij ons tussen de 37 en 98 seconden.
Aanbieders vergelijken: fal.ai, OpenRouter of BFL
| Provider | 5 s in 720p | Draft-modus | Ondersteunde modi | Geschikt voor |
|---|---|---|---|---|
| fal.ai | 0,3801 EUR (0,425 USD) | ja, 0,0268 EUR (0,03 USD)/s | tekst, beeld, keyframes, eerste en laatste frame, verlengen, bewerken | het voordeligst, meeste functionaliteit |
| OpenRouter | 0,7602 EUR (0,85 USD) | nee | tekst, eerste en laatste frame | één sleutel voor LLM’s en video |
| BFL-API | 0,7602 EUR (0,85 USD) | ja, 0,0537 EUR (0,06 USD)/s | alle opties, inclusief QHD en 4K | direct bij de bron, maximale controle |
Tarieven gecontroleerd op 11 oktober 2026. We genereerden zelf zes clips via OpenRouter en drie via fal.ai; alle details lees je in ons artikel over wat FLUX 3 Video kan. Het onderstaande script maakt gebruik van fal.ai, omdat dit platform het goedkoopst is en een voordelige draft-modus biedt.
Stappenplan: aan de slag met de API
- Maak een account aan op fal.ai, waardeer je saldo op onder “Billing” en genereer een sleutel onder “Keys”.
- Installeer de benodigde package:
pip install requests. - Download het script flux3_wideo.py (de volledige code staat hieronder).
- Sla je API-sleutel op in een omgevingsvariabele. In PowerShell:
$env:FAL_KEY="jouw_sleutel", in de macOS/Linux-terminal:export FAL_KEY="jouw_sleutel". - Maak een eerste draft:
python flux3_wideo.py "beschrijving van de scene" --szkic. Het script toont de geschatte kosten en vraagt om bevestiging. - Bevalt het resultaat? Voer hetzelfde commando uit zonder
--szkicom de video in volledige 720p-kwaliteit te genereren, of voeg--rozdz 1080ptoe voor 1080p. - Wil je een bestaande foto animeren? Voeg dan
--obraz https://voorbeeld.nl/afbeelding.jpgtoe. De afbeelding moet publiek toegankelijk zijn via een URL.
Onze praktijktest van het script
We draaiden het script op 11 oktober 2026 in een lege map, in draft-modus, met deze prompt:
python flux3_wideo.py "A red and cream tram passes along a rainy Krakow street at dusk, reflections of shop lights on the wet cobblestones, people with umbrellas wait at the stop. A sign on the tram stop reads "PLAC WOLNICA". Static camera, realistic. Sound: rain, tram bell, wheels on rails." --szkic --plik tramwaj_szkic.mp4 --tak
Het resultaat: een bestand van 4,8 MB, 5 seconden lang, 1280×704 pixels, inclusief audio, geleverd na 37 seconden. De rood-crème tram rijdt door het beeld, wachtenden met paraplu’s staan bij de halte en winkelverlichting weerspiegelt op de natte kasseien. De tekst PLAC WOLNICA (“Wolnicaplein”) op het haltebordje is in de draft-versie onleesbaar omdat het bord te klein in beeld staat. Wil je tekst scherp in beeld krijgen, beschrijf deze dan expliciet als een prominent onderdeel van het shot, zoals we deden bij een test met een schoolbord.
Het volledige Python-script
Download: flux3_wideo.py (91 regels). Het script leest je sleutel veilig uit de omgevingsvariabele, toont vooraf de kosten, probeert het opnieuw bij een tijdelijke netwerkstoring en slaat de video lokaal op als MP4.
"""flux3_wideo.py - video genereren met FLUX 3 Video via fal.ai (helderte.nl, 11.10.2026)
Vereisten: Python 3.9+ en de library requests (pip install requests).
Sleutel: omgevingsvariabele FAL_KEY (fal.ai -> Dashboard -> Keys). Zet je sleutel nooit hardcoded in de code.
Voorbeelden:
python flux3_wideo.py "A red tram passes through a rainy Krakow street at dusk" --szkic
python flux3_wideo.py "The camera slowly dollies forward..." --obraz https://domein.nl/afbeelding.jpg --czas 6
python flux3_wideo.py "..." --czas 10 --rozdz 1080p --proporcje 9:16 --bez-dzwieku
Tarieven (fal.ai op 11.10.2026): 0,085 USD per seconde voor volledige kwaliteit, 0,03 USD per seconde voor draft.
Het script toont vooraf een kostenraming en vraagt akkoord (sla dit over met de vlag --tak).
"""
import argparse, os, sys, time, pathlib
import requests
STAWKA = {'pelna': 0.085, 'szkic': 0.03} # USD per seconde, fal.ai, 11.10.2026
def main():
a = argparse.ArgumentParser(description='FLUX 3 Video via fal.ai')
a.add_argument('prompt', help='prompt in het Engels; gesproken zinnen tussen aanhalingstekens')
a.add_argument('--obraz', help='URL van startafbeelding (image-to-video)')
a.add_argument('--czas', type=int, default=5, help='lengte in seconden, 5-20 (standaard 5)')
a.add_argument('--rozdz', default='720p', choices=['720p', '1080p'])
a.add_argument('--proporcje', default='16:9', help='16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 2:1 of auto')
a.add_argument('--szkic', action='store_true', help='draft-modus: sneller en goedkoper om ideeen te testen')
a.add_argument('--bez-dzwieku', action='store_true', help='clip zonder geluidsspoor genereren')
a.add_argument('--plik', default='', help='naam van uitvoerbestand (standaard flux3_<timestamp>.mp4)')
a.add_argument('--tak', action='store_true', help='kostenbevestiging overslaan')
x = a.parse_args()
klucz = os.environ.get('FAL_KEY')
if not klucz:
sys.exit('Omgevingsvariabele FAL_KEY ontbreekt. Stel deze in, bijv. in PowerShell: $env:FAL_KEY="..."')
if not 5 <= x.czas <= 20:
sys.exit('Lengte moet tussen de 5 en 20 seconden liggen.')
tryb = 'image-to-video' if x.obraz else 'text-to-video'
endpoint = f'blackforestlabs/flux-3/{tryb}' + ('/draft' if x.szkic else '')
body = {'prompt': x.prompt, 'duration': x.czas, 'aspect_ratio': x.proporcje, 'generate_audio': not x.bez_dzwieku}
if x.obraz:
body['image_url'] = x.obraz
if not x.szkic:
body['resolution'] = x.rozdz # draft is altijd in 720p
koszt = x.czas * STAWKA['szkic' if x.szkic else 'pelna']
print(f'Model: {endpoint}nDuur: {x.czas} s, geschatte kosten: {koszt:.3f} USD')
if not x.tak and input('Verzenden? [j/N] ').strip().lower() not in ('j', 'y', 't'):
sys.exit('Geannuleerd.')
H = {'Authorization': 'Key ' + klucz, 'Content-Type': 'application/json'}
r = requests.post('https://queue.fal.run/' + endpoint, headers=H, json=body, timeout=120)
if r.status_code >= 300:
sys.exit(f'Fout {r.status_code}: {r.text[:400]}')
zad = r.json()
print('Taak geaccepteerd, wachten op resultaat...')
t0 = time.time()
while True:
time.sleep(8)
try:
s = requests.get(zad['status_url'], headers=H, timeout=60).json()
except requests.RequestException:
continue # tijdelijke netwerkstoring, we blijven pollen
stan = s.get('status')
print(f' {int(time.time() - t0)} s: {stan}')
if stan == 'COMPLETED':
break
if stan not in ('IN_QUEUE', 'IN_PROGRESS'):
sys.exit(f'Taak mislukt: {s}')
if time.time() - t0 > 1800:
sys.exit('Geen resultaat na 30 minuten. Handmatige controle via URL: ' + zad['response_url'])
for _ in range(6):
try:
wynik = requests.get(zad['response_url'], headers=H, timeout=90).json()
break
except requests.RequestException:
time.sleep(10)
else:
sys.exit('Kon resultaat niet downloaden. URL: ' + zad['response_url'])
url = wynik['video']['url']
plik = pathlib.Path(x.plik or f'flux3_{int(time.time())}.mp4')
plik.write_bytes(requests.get(url, timeout=300).content)
print(f'Klaar in {int(time.time() - t0)} s: {plik.resolve()} ({plik.stat().st_size // 1024} KB)')
if __name__ == '__main__':
main()
Tips voor betere prompts in FLUX 3 Video
- Houd de basis in het Engels: schrijf de scenebeschrijving in het Engels. Wil je gesproken tekst of tekst in beeld genereren, zet dat gedeelte dan tussen aanhalingstekens. We testten dit in het Pools met:
She says clearly in Polish: "...". Dat leverde in beide tests vlekkeloze Poolse spraak op. - Specificeer geluid expliciet: voeg achteraan “Sound:” toe. Let wel op: bij onze packshot van een koffiezetapparaat genereerde het model enkel vogelgeluiden op de achtergrond en geen stoomgeluid. Voor specifieke productgeluiden is nabewerking in een montageprogramma vaak veiliger.
- Maak tekst prominent: gebruik zinnen zoals “the chalkboard clearly shows exactly two lines of text”. Kleine uithangborden of bordjes op de achtergrond blijven wazig.
- Beschrijf camerabewegingen kort en bondig: gebruik “The camera slowly dollies forward”, “180-degree orbit at a constant speed” of “static camera”. Een orbit-beweging voerde FLUX 3 bij ons uit zonder dat het object vervormde.
- Meerdere shots combineren: splits opeenvolgende acties met “Hard cut. Shot 2:” en herhaal daarin de uiterlijke kenmerken van je personage.
- Negatieve instructies aan het eind: sluit desgewenst af met “no subtitles, no on-screen text, no music”.
- Stel de beeldverhouding handmatig in bij image-to-video. Bij de stand “auto” sneed het model onze bronfoto van een café deels af.
Overzicht van scriptparameters
| Parameter | Functie | Standaardwaarde |
|---|---|---|
prompt |
scènebeschrijving (verplicht) | - |
--obraz URL |
startafbeelding voor image-to-video | geen (text-to-video) |
--czas |
videoduur van 5 tot 20 seconden | 5 |
--rozdz |
resolutie: 720p of 1080p (draft altijd 720p) | 720p |
--proporcje |
16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 2:1 of auto | 16:9 |
--szkic |
snelle en voordelige draft (0,0268 EUR (0,03 USD)/s) | uitgeschakeld |
--bez-dzwieku |
video zonder geluidsspoor genereren | audio ingeschakeld |
--plik |
bestandsnaam voor de MP4 | flux3_<timestamp>.mp4 |
--tak |
sla de kostenbevestiging over | vraagt bevestiging |
Wat kost het genereren via API?
| Type clip | fal.ai | OpenRouter / BFL |
|---|---|---|
| Draft 5 s | 0,1342 EUR (0,15 USD) | BFL: 0,30 USD, OpenRouter: geen draft |
| 5 s, 720p | 0,3801 EUR (0,425 USD) | 0,7602 EUR (0,85 USD) |
| 10 s, 720p | 0,7602 EUR (0,85 USD) | 1,52 EUR (1,70 USD) |
| 20 s, 720p | 1,52 EUR (1,70 USD) | 3,04 EUR (3,40 USD) |
| 20 s, 1080p | geen data | 5,19 EUR (5,80 USD) |
Voor gegenereerde audio wordt geen meerprijs gerekend. Onze totale kosten voor alle negen geteste FLUX 3-clips kwamen uit op 6,10 USD.
Veelvoorkomende foutmeldingen oplossen
- “Omgevingsvariabele FAL_KEY ontbreekt”: je hebt de variabele waarschijnlijk in een ander terminalvenster ingesteld. Zorg dat je de variabele activeert in hetzelfde sessievenster waarin je het script draait.
- Fout 401 of 403: ongeldige sleutel of onvoldoende rechten. Maak een nieuwe sleutel aan in het dashboard van fal.ai.
- Foutmelding over saldo: je account heeft geen tegoed meer; waardeer je saldo op onder het tabblad Billing.
- Startafbeelding laadt niet: de URL moet direct publiek toegankelijk zijn (zonder login) en verwijzen naar een PNG-, JPEG- of WebP-bestand.
- Verbroken verbinding tijdens het downloaden: dit overkwam ons eenmaal; het script probeert het bestand opnieuw op te halen en toont uiteindelijk de URL van het resultaat. Je hoeft dus niet opnieuw te betalen om de video handmatig op te halen.
Veelgestelde vragen
Kan ik FLUX 3 Video gebruiken zonder code te schrijven?
Ja, via de online playgrounds van de aanbieders. Zowel op de modelpagina van fal.ai als in de webinterface van OpenRouter kun je prompts invoeren via een formulier. Ons script is vooral handig wanneer je meerdere clips geautomatiseerd wilt aanmaken en direct lokaal wilt opslaan.
Hoe maak ik een video die langer is dan 20 seconden?
Door clips te verlengen. fal.ai biedt hiervoor de modus extend-video, waarmee het einde van een eerdere clip als basis dient om er nog eens 5 tot 15 seconden aan vast te plakken. Bij BFL kost deze verlengingsoptie 0,3667 EUR (0,41 USD) per seconde in 720p.
Mag ik de gegenereerde videoclips commercieel inzetten?
De commerciële voorwaarden worden bepaald door BFL en de tussenpartij (de API-host) via wie je genereert. Raadpleeg voor commerciële producties of advertenties altijd de actuele licentievoorwaarden van het betreffende API-platform.
Meer video’s en promptvoorbeelden vind je in ons overzicht over de mogelijkheden van FLUX 3 Video. Benieuwd naar de concurrentie? Bekijk onze vergelijking FLUX 3 vs Wan 3.0 vs Seedance 2.5 en het overzicht van actuele AI-videogeneratoren.
Bronnen en verificatiedatum
- fal.ai: FLUX 3 text-to-video (parameters en tarieven)
- OpenRouter: FLUX.3 Video
- tarieven BFL-API en BFL: FLUX 3 Video (4 augustus 2026). Script getest op 11 oktober 2026 in een schone map (Windows 11
- Python 3.13
- draft-modus
- 0,1342 EUR (0,15 USD))
More on this from HELDER
handleidingen·Freepik AI Advanced Inpaint: productfoto’s bewerken zonder PhotoshopMet Freepik AI Advanced Inpaint verwijder je storende achtergronden en pas je belichting aan zonder Photoshop. Bekijk hoe deze workflow werkt.

