Image Providers
Le moteur AI peut générer les images via 7 providers : Pollinations (gratuit, lazy URL), Nano Banana (Gemini 2.5 Flash, near-free), gpt-image-1 (ChatGPT-native, $0.011-$0.167), DALL-E 3 (legacy, URL expire en 1h), FLUX via fal.ai ($0.003-$0.025), Replicate, et Ideogram (text-in-image $0.008).

Concept
Le AI Landing Builder a besoin de 1-4 images par landing (hero + benefit images + product). Au lieu de te demander d'uploader, il appelle un image provider et injecte les URLs ou data:URLs dans le HTML directement.
Tous les providers respectent le même contrat interne :
async function imgProvider(apiKey, prompt, opts) {
return { url: '...', provider: 'name' }; // remote URL
// OU
return { dataUrl: 'data:image/png;base64,...', provider: 'name' }; // inline
}
Le dataUrl est persistent dans le HTML (l'image vit dans le DOM, plus besoin du provider). Le url peut expirer (DALL-E !) ou être servi à chaque request par le provider (Pollinations).
Source : ai-landing.js lignes 210-410.
Comparatif rapide
| Provider | Coût/image | Persistence | Key requise | Quand l'utiliser |
|---|---|---|---|---|
pollinations |
Gratuit | Lazy URL (re-fetch) | Non | Default. Tests rapides, prototypes |
nano_banana |
~Gratuit | data:URL (forever) | gemini key |
Best quality/price ratio, embedding-friendly |
openai_gpt_image |
$0.011-$0.167 | Base64 → forever | openai key |
Production, text-in-image rendering |
openai_dalle |
~$0.04 | URL 1h expire | openai key |
Legacy. Préfère gpt-image-1 |
flux_fal |
$0.003-$0.025 | URL persistent | fal key |
Volume, vitesse, photoréalisme |
replicate |
$0.003-$0.10 | URL persistent | replicate key |
Flexibilité modèles, FLUX/SDXL/etc. |
ideogram |
$0.008 | URL persistent | ideogram key |
Badges, overlays "30% OFF", texte dans l'image |
Détail par provider
1. pollinations (default)
Endpoint : https://image.pollinations.ai/prompt/<prompt>?width=...&height=...&seed=...
- Coût : 0 €.
- Clé API : aucune.
- Persistence : URL lazy — le navigateur fetch l'image au render. Si Pollinations tombe, l'image est cassée.
- Sortie :
{ url, provider: 'pollinations' }. - Qualité : variable. SDXL-based, parfois excellent, parfois "DeviantArt 2010".
- Quand l'utiliser : tests, prototypes, A/B archetype où la qualité photo n'est pas critique.
- Code :
ai-landing.js:213.
{ "image_provider": "pollinations" }
2. nano_banana (Google Gemini 2.5 Flash Image)
Endpoint : https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image:generateContent
- Coût : ~$0.005-0.01 par image (selon usage).
- Clé API :
image_keys.geminidans Settings → AI. - Persistence : data:URL — embeddé inline en base64 dans le HTML. Forever.
- Sortie :
{ dataUrl, provider: 'nano_banana' }. - Qualité : très bon ratio prix/qualité. Photoréalisme correct, prompt understanding solide.
- Quand l'utiliser : production cost-conscious, on veut du persistent.
- Code :
ai-landing.js:223.
{ "image_provider": "nano_banana" }
3. openai_gpt_image (gpt-image-1, lancé 2025)
Endpoint : https://api.openai.com/v1/images/generations avec model: 'gpt-image-1'.
- Coût : tiered selon
quality:low→ $0.011medium(default) → $0.042high→ $0.167auto→ modèle pick
- Clé API :
image_keys.openaidans Settings → AI. - Persistence : base64 → converti en data:URL → forever.
- Sortie :
{ dataUrl, provider: 'openai_gpt_image' }. - Sizes supportées :
1024x1024(square),1024x1536(portrait),1536x1024(landscape). Trackily snap automatiquement selon le ratio demandé. - Qualité : haut de gamme. Excellent text rendering dans l'image (un gros progrès vs DALL-E 3 qui produit du gibberish).
- Quand l'utiliser : production premium, brand-forward, landings avec badges/labels qui doivent être lisibles.
- Code :
ai-landing.js:287.
{ "image_provider": "openai_gpt_image" }
4. openai_dalle (DALL-E 3, legacy)
Endpoint : https://api.openai.com/v1/images/generations avec model: 'dall-e-3'.
- Coût : ~$0.04 par 1024x1024.
- Clé API :
image_keys.openai. - Persistence : ⚠️ URL OpenAI qui EXPIRE EN 1 HEURE. Au-delà, l'image est cassée — il faut soit re-générer, soit downloader/stocker.
- Sortie :
{ url, provider: 'openai_dalle' }. - Quand l'utiliser : très peu de raisons.
gpt-image-1est meilleur partout sauf si tu veux EXACTEMENT le style DALL-E. - Code :
ai-landing.js:248.
{ "image_provider": "openai_dalle" }
⚠️ Si tu utilises DALL-E sur une landing destinée à vivre longtemps, déclenche rerender_landing_from_meta régulièrement OU stocke l'asset via le downloadAndStoreAssets pipeline.
5. flux_fal (FLUX via fal.ai)
Endpoint : https://fal.run/fal-ai/flux/schnell (default) ou https://fal.run/fal-ai/flux/dev.
- Coût :
- schnell (fast) → $0.003 par image
- dev (high quality) → $0.025 par image
- Clé API :
image_keys.faldans Settings. - Persistence : URL persistent (CDN fal.ai).
- Sortie :
{ url, provider: 'flux_fal' }. - Qualité : FLUX = state-of-the-art photoréalisme depuis 2024. Schnell suffit pour 80 % des cas.
- Quand l'utiliser : volume + photoréalisme. Hero photo product, lifestyle shots.
- Code :
ai-landing.js:327.
{ "image_provider": "flux_fal" }
6. replicate (FLUX / SDXL / autres via Replicate)
Endpoint : https://api.replicate.com/v1/models/<model>/predictions.
- Coût : $0.003-$0.10 selon le modèle (FLUX schnell = $0.003, FLUX dev = $0.025, SDXL = $0.0025, Imagen 3 = $0.05).
- Clé API :
image_keys.replicate. - Persistence : URL persistent.
- Sortie :
{ url, provider: 'replicate' }. - Quand l'utiliser : flexibilité modèles (tu veux tester Imagen 3 ou Stable Diffusion 3).
- Code :
ai-landing.js:352.
{ "image_provider": "replicate" }
7. ideogram (text-in-image specialist)
Endpoint : https://api.ideogram.ai/generate.
- Coût : $0.008 par image.
- Clé API :
image_keys.ideogram. - Persistence : URL persistent.
- Sortie :
{ url, provider: 'ideogram' }. - Qualité : THE provider quand tu veux du TEXTE LISIBLE dans l'image (badges "Sale 30%", overlay text, fake logo, sticker price). Aucun autre provider ne rend le texte aussi bien.
- Quand l'utiliser : landings tabloid avec badges geants, packshots avec étiquette prix, hero avec overlay "Try Risk-Free".
- Code :
ai-landing.js:376.
{ "image_provider": "ideogram" }
Fallback automatique
ai-landing.js enrobe chaque appel image avec un try/catch. En cas d'erreur (rate limit, clé invalide, API down) le système fallback silencieusement sur Pollinations.
Conséquence pratique : tu peux configurer image_provider: openai_gpt_image sans clé — la landing s'génère quand même, juste avec des images Pollinations. Vérifie toujours meta.image_provider dans la réponse si tu doutais.
Recommandations par cas d'usage
| Cas | Recommandation |
|---|---|
| Test rapide, A/B archetype | pollinations (gratuit) |
| Production cost-conscious | nano_banana |
| Production premium brand-forward | openai_gpt_image (medium) |
| Landings tabloid avec badges textuels | ideogram |
| Photoréalisme volume (e-com) | flux_fal schnell |
| Photoréalisme premium (luxury) | flux_fal dev OU openai_gpt_image high |
| Test d'un modèle exotique | replicate |
| Legacy / compat | openai_dalle |
Configuration des clés API
UI : Settings → AI → Image Providers.
Chaque provider a son propre champ (gemini, openai, fal, replicate, ideogram). Les valeurs sont stockées chiffrées en DB (jamais loggées en clair, jamais retournées par MCP).
Exemples
Génération avec gpt-image-1 medium
{
"name": "generate_ai_landing",
"arguments": {
"description": "MemoMind cognitive supplement, premium look",
"vertical": "memory",
"engine": "v2",
"force_archetype": "wellness",
"image_provider": "openai_gpt_image"
}
}
Landing tabloid avec badges textuels Ideogram
{
"name": "generate_ai_landing",
"arguments": {
"description": "Win a $1000 Amazon gift card sweepstakes",
"vertical": "sweepstakes",
"engine": "v2",
"force_archetype": "tabloid",
"image_provider": "ideogram"
}
}
Génération budget Pollinations
{
"name": "generate_ai_landing",
"arguments": {
"description": "Crypto trading platform demo",
"vertical": "crypto",
"engine": "v2",
"force_archetype": "dark_tech",
"image_provider": "pollinations"
}
}
Production photoréalisme FLUX
{
"name": "generate_ai_landing",
"arguments": {
"description": "Premium organic skincare cream",
"vertical": "skin",
"engine": "v2",
"force_archetype": "wellness",
"image_provider": "flux_fal"
}
}
Erreurs courantes
- DALL-E URL morte : tu vois
<img src="https://oaidalleapi…/abc.png">mais l'image renvoie 403. C'est l'expiration 1h. Re-render viarerender_landing_from_meta(qui re-générera l'image) ou switch suropenai_gpt_image. - Pas de clé : silently fallback sur Pollinations. Si tu attendais du premium, vérifie
meta.image_providerdans la réponse. - Coût qui explose : 4 images × $0.167 (gpt-image-1 high) = $0.67 par landing. Si tu génères 100 landings par jour, ça monte. Use
mediumpar défaut. - Texte gibberish dans image : tu utilises Pollinations / FLUX / DALL-E avec du texte attendu (
"Sale 30%"). Switch sur Ideogram ou gpt-image-1. - Image floue / artefacts : Pollinations a parfois des hits/miss. Re-génère avec un seed différent ou switch provider.
- CSP qui bloque data:URL : si tu sers via un domaine avec CSP strict,
data:images peuvent être bloquées. Configureimg-src 'self' data: https:. - HTML qui devient énorme : data:URLs gpt-image-1 medium = ~200-400 KB par image. Une landing avec 4 images peut peser 2 MB. C'est le prix de la persistence. Pour landings push haute volumétrie, préfère
flux_fal(URLs externes légères dans le HTML).
Voir aussi
- AI Builder — le wrapper qui appelle ces providers
- Types —
type='ai'qui stocke le rendered HTML - Re-render zero cost —
rerender_landing_from_meta - Code source :
ai-landing.js:210-410,Settings → AI → Image Providers