Génération d’images avec OpenRouter : modèles, API et tarifs

OpenRouter réunit derrière un seul endpoint des modèles d’image de Google, OpenAI, Black Forest Labs, ByteDance et d’autres. Cet article présente le format des requêtes, les paramètres qui modifient la qualité et le coût, l’écart de prix entre les modèles, et les cas où une plateforme dédiée aux images convient mieux.

Génération d’images avec OpenRouter : modèles, API et tarifs
Cristian Da Conceicao
Fondateur de Picasso IA

OpenRouter s’est fait un nom comme porte d’accès unique à des centaines de modèles de texte, et il fait désormais de même pour les images. Un compte, une facture et une même structure de requête vous permettent de passer d’un modèle d’image à l’autre (Google, OpenAI, Black Forest Labs, ByteDance et d’autres) en changeant une seule chaîne de caractères. Ce confort est réel, mais quelques détails déterminent si une fonctionnalité d’image reste bon marché ou devient discrètement coûteuse.

Cet article vous guide dans la génération d’images avec OpenRouter, de la première requête à la facture mensuelle : les modèles au choix, l’appel API exact, les paramètres qui modifient la qualité et un regard franc sur le coût d’une image. Il montre aussi quand une plateforme dédiée comme PicassoIA convient mieux, si vous préférez un contrôle depuis le navigateur plutôt que du code.

Ce que fait la génération d’images avec OpenRouter

Un seul endpoint, de nombreux fournisseurs

La génération d’images sur OpenRouter passe par un endpoint dédié, POST /api/v1/images. Vous envoyez un slug de modèle model et un prompt, et les données d’image au format base64 vous sont renvoyées. Derrière cette porte unique se trouvent des fournisseurs distincts, chacun avec son propre modèle, ses limites et son prix. OpenRouter gère le routage, l’authentification et la facturation, si bien que votre code ne dialogue jamais directement avec ces fournisseurs.

Le catalogue est vaste. Au moment de la rédaction, il comprend des modèles d’image de Google, OpenAI, Black Forest Labs, xAI, ByteDance, Microsoft, Recraft, Krea et Sourceful, et la liste change souvent. Filtrer la liste publique des modèles d’OpenRouter par sortie image permet de voir ce qui est disponible à un moment donné.

À qui cela convient le mieux

Une passerelle unique est utile dans quelques situations :

  • Prototypage : testez cinq modèles avec le même prompt sans ouvrir cinq comptes.
  • Solutions de repli : si un fournisseur est lent ou en panne, envoyez la même requête ailleurs.
  • Facturation unifiée : une seule facture au lieu d’une par éditeur.
  • Pipelines mixtes : une application qui envoie déjà des prompts textuels via OpenRouter peut ajouter des images avec le même token.

Elle est moins utile lorsque vous avez besoin d’un éditeur visuel, d’une galerie des résultats passés ou d’un contrôle manuel de chaque réglage. C’est un travail pour le navigateur, auquel nous revenons vers la fin.

Mur d’objectifs photo dans une boutique de location, une passerelle vers de nombreux modèles d’image

Appeler l’endpoint images

La plus petite requête fonctionnelle

Il vous faut un compte OpenRouter, un token secret avec des crédits et un slug de modèle. Stockez le token dans une variable d’environnement. Cet article l’appelle OPENROUTER_TOKEN, mais vous êtes libre de choisir ce nom.

curl -X POST "https://openrouter.ai/api/v1/images" \
  -H "Authorization: Bearer $OPENROUTER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "bytedance-seed/seedream-4.5",
    "prompt": "a red panda astronaut floating in space"
  }'

C’est la requête complète. Le slug suit le modèle author/model-name, et ici il pointe vers Seedream 4.5. Tout le reste est facultatif, ce qui explique qu’un premier test prenne environ deux minutes.

Développeuse tapant une requête sur un bureau debout dans un loft lumineux

Les paramètres qui modifient le résultat

L’endpoint images accepte une longue liste de champs facultatifs. Voici ceux qui comptent le plus :

ParamètreCe qu’il contrôleValeurs d’exemple
resolutionPalier de taille de sortie512, 768, 1K, 2K, 4K
aspect_ratioForme du cadre1:1, 16:9, 9:16, 4:3, 3:4
sizeRaccourci pour un palier ou des pixels explicitesUn nom de palier ou une largeur et une hauteur
qualityEffort de renduauto, low, medium, high
output_formatType de fichierpng, jpeg, webp, svg
backgroundTransparenceauto, transparent, opaque
output_compressionTaille du fichier pour webp et jpeg0 à 100
nImages par requête1 à 10, si pris en charge
seedSortie reproductibleTout entier, si pris en charge
input_referencesImages de référence pour le travail image vers imageUne liste d’images
streamAperçus partiels via server-sent eventstrue ou false

Tous les modèles n’acceptent pas tous les champs. Chaque modèle dispose d’une route endpoints qui liste les paramètres pris en charge, les tarifs et la disponibilité du streaming. Lisez-la avant de vous fier à un réglage. Le format de sortie svg n’a de sens qu’avec les modèles capables de produire du vectoriel.

Le streaming mérite une mention à part. Avec stream activé, l’endpoint envoie les images partielles au fur et à mesure de leur formation, si bien qu’une interface peut afficher un aperçu approximatif en quelques instants au lieu d’un simple spinner vide. Les aperçus sont gratuits : seule une image finie est facturée. Si votre application a un écran d’attente, c’est le moyen le moins cher de la rendre plus réactive.

💡 Astuce : Changez une seule chose à la fois. Si vous changez le modèle et le prompt ensemble, vous ne saurez pas lequel a modifié le résultat. Fixez un seed lorsque le modèle le permet et ne faites varier qu’un champ par essai.

Mains d’un photographe tournant la bague d’ouverture d’un objectif

Lire la réponse

Les images arrivent sous forme de texte base64 dans un tableau data. Chaque élément contient b64_json, les octets encodés, et media_type, comme image/png ou image/svg+xml. La réponse comprend aussi un objet usage, et usage.cost indique ce que cette tâche a facturé.

import base64, os, requests

resp = requests.post(
    "https://openrouter.ai/api/v1/images",
    headers={"Authorization": f"Bearer {os.environ['OPENROUTER_TOKEN']}"},
    json={
        "model": "bytedance-seed/seedream-4.5",
        "prompt": "a ceramic mug on a marble counter, soft window light",
        "aspect_ratio": "16:9",
    },
    timeout=120,
)
resp.raise_for_status()
body = resp.json()

image = body["data"][0]
with open("mug.png", "wb") as f:
    f.write(base64.b64decode(image["b64_json"]))

print(image["media_type"], body["usage"]["cost"])

Décodez les octets, écrivez-les sur le disque ou dans un stockage objet, et consignez usage.cost à côté du prompt qui les a produits. Après une semaine, ce journal est une liste de prix plus honnête que n’importe quelle page tarifaire.

Les tâches d’image prennent plus de temps que les appels de texte. Réglez donc un délai d’attente côté client généreux, comme le fait l’exemple ci-dessus avec 120 secondes. Un délai par défaut de quelques secondes couperait des résultats tout à fait valables.

Développeur branchant un disque externe sur un ordinateur portable pour enregistrer les images générées

Modèles à essayer

Les fournisseurs du catalogue

Voici comment s’alignent les principaux fournisseurs, avec les pages de modèles correspondantes sur PicassoIA lorsqu’elles existent :

  • Google : la famille d’images Gemini. Le slug google/gemini-2.5-flash-image apparaît dans les exemples d’OpenRouter, et le même modèle est disponible sur PicassoIA sous le nom Gemini 2.5 Flash Image.
  • OpenAI : GPT Image, où le réglage de qualité fait beaucoup varier le prix. Voir GPT Image 2.
  • Black Forest Labs : la gamme Flux, par exemple Flux 2 Pro.
  • ByteDance : Seedream, y compris Seedream 4.5.
  • Recraft : des modèles adaptés au vectoriel, capables de renvoyer du SVG, comme Recraft v4.1.
  • xAI, Microsoft, Krea et Sourceful : Grok Imagine, MAI-Image, les modèles de Krea et Riverflow, que vous ne trouverez le plus souvent qu’au travers de passerelles comme OpenRouter.

Pour récupérer la liste en direct depuis votre code, appelez la route des modèles. Pour examiner les fournisseurs, les paramètres et les prix d’un modèle, ajoutez son slug et /endpoints :

curl https://openrouter.ai/api/v1/images/models \
  -H "Authorization: Bearer $OPENROUTER_TOKEN"

curl "https://openrouter.ai/api/v1/images/models/bytedance-seed/seedream-4.5/endpoints"

Choisir selon la tâche

Aucun modèle ne gagne sur toutes les tâches. Ce tableau est un point de départ pour vos propres tests, pas un classement :

TâchePremier modèle à essayerPourquoi il mérite un test
Photos marketing photoréalistesSeedream 4.5Rendu net jusqu’en 4K
Affiches et texte dans les imagesGPT Image 2Bon respect d’une mise en page écrite
Brouillons rapidesGemini 2.5 Flash ImageDélai court pour itérer
Logos et icônesRecraft v4.1Résultats propres de style vectoriel
Modifications à partir de textes ou de photosFlux 2 ProFonctionne à partir de prompts et de photos de référence

Les forces évoluent à chaque version, alors testez vos propres prompts avant de confier un projet à un seul modèle. Un test sérieux prend environ une heure :

  1. Rédigez dix prompts tirés de votre travail réel, pas d’exemples fictifs, dont deux avec du texte dans l’image et deux avec des personnes.
  2. Lancez chaque prompt sur les mêmes trois modèles avec des valeurs aspect_ratio et resolution identiques.
  3. Consignez usage.cost et le nombre de secondes pris par chaque tâche.
  4. Notez les résultats à l’aveugle, noms de modèles masqués, puis divisez le coût total par le nombre d’images que vous publieriez réellement.

Ce dernier chiffre, le coût par image utilisable, tranche le débat. Un modèle à $0.02 qui demande quatre essais pour atteindre le résultat coûte $0.08 par image utilisable, soit deux fois plus qu’un modèle à $0.04 qui y parvient du premier coup.

Panneau de liège avec vingt photographies dans des styles différents, une par modèle d’image

Le coût réel d’une image

L’écart de prix

Le tutoriel d’OpenRouter a chiffré une image aux réglages par défaut pour 20 modèles. La fourchette allait de $0.006 à $0.134, soit un écart de 22 fois. Les modèles les moins chers commencent autour d’un centime par image. Cet écart pèse bien plus sur votre facture que la longueur du prompt, les nouvelles tentatives ou une astuce de mise en cache ingénieuse.

Dans la pratique, cet écart répartit les modèles en deux groupes. Les modèles de brouillon, proches d’un centime par image, conviennent aux idées, aux miniatures et aux tests rapides. Les modèles premium, plus proches du haut de la fourchette, conviennent aux rendus finaux et aux visuels phares. Beaucoup d’équipes combinent les deux : brouillon avec les modèles bon marché, rendu avec les modèles premium.

Trois modes de facturation

Les modèles ne facturent pas tous de la même manière :

  1. À l’image : un prix forfaitaire pour chaque résultat, quelle que soit la taille.
  2. Au mégapixel : le prix augmente avec la résolution, donc la 4K coûte plus cher que la 1K.
  3. Au token : les tokens d’entrée et de sortie sont comptés. Selon les tarifs publiés au moment de la rédaction, GPT-5.4 Image 2 facture $8.00 par million de tokens d’entrée et $15.00 par million de tokens de sortie, la sortie image étant à $30.00 par million de tokens.

La facturation au token est la plus difficile à prévoir. La longueur du prompt, les images de référence et le réglage de qualité entrent tous dans le total, si bien que usage.cost est le seul chiffre vraiment fiable. Les prix changent : vérifiez la page du modèle avant de prévoir un budget.

Calculatrice, tickets de caisse et pièces de monnaie sur un bureau en bois

Les tâches échouées ne coûtent rien

La facturation est tout ou rien. Une génération soit se termine et est facturée en totalité, soit échoue et n’est pas facturée. Les streams annulés ne sont pas facturés non plus, et les aperçus partiels reçus avant la fin d’un stream ne créent pas de facturation partielle. Cela rend les nouvelles tentatives plus sûres qu’il n’y paraît : vous ne payez qu’une fois le résultat que vous gardez. Gérez malgré tout les erreurs correctement. Vérifiez le statut HTTP, attendez avant de relancer une tâche en échec, et arrêtez après quelques tentatives pour qu’un mauvais prompt ne tourne pas en boucle indéfiniment.

Calcul du budget pour 1 000 images

Prenez trois prix dans cette fourchette et multipliez-les :

Prix par image1 000 images10 000 images
$0.006$6$60
$0.04$40$400
$0.134$134$1 340

💡 Astuce : Ajoutez votre taux de nouvelles tentatives. Si un prompt sur trois nécessite une seconde tentative parce que le premier résultat est passé à côté, ajoutez environ un tiers au budget. Les tâches échouées ne coûtent rien, mais les résultats décevants, eux, coûtent.

Balance en laiton pesant des photographies contre des pièces de monnaie

3 erreurs qui gonflent votre facture

Laisser la qualité en mode automatique

Avec quality réglé sur auto, c’est le fournisseur qui décide de l’effort à fournir. Sur les modèles dont le prix suit la qualité, un résultat high peut coûter bien plus cher qu’un résultat low. Utilisez low pendant que vous itérez sur un prompt, et ne passez à high que pour le rendu final.

Stocker le base64 dans votre base de données

Une image 2K encodée en base64 représente souvent plusieurs Mo de texte. Enregistrer cette chaîne dans une ligne de base de données ralentit chaque requête qui la traverse. Écrivez le fichier dans un stockage objet, ne gardez que son URL dans la base, et utilisez webp ou jpeg avec output_compression lorsque la taille du fichier compte davantage que le détail sans perte.

Ignorer le routage des fournisseurs

Plusieurs fournisseurs peuvent servir le même modèle, et leurs endpoints peuvent différer par le prix et les paramètres pris en charge. Si vous ne définissez aucune préférence, OpenRouter choisit à votre place. Fixez l’ordre et décidez si les solutions de repli sont acceptables :

{
  "model": "google/gemini-2.5-flash-image",
  "prompt": "A minimalist logo for a coffee roaster",
  "provider": {
    "order": ["google-ai-studio", "google-vertex"],
    "allow_fallbacks": true
  }
}

Désactivez allow_fallbacks lorsque vous avez besoin d’une sortie et d’un prix identiques à chaque appel, et laissez-le activé lorsque la disponibilité compte davantage.

Utiliser Seedream 4.5 sur PicassoIA

Si vous préférez vous passer du code, le même modèle que dans les exemples d’OpenRouter est disponible dans le navigateur. Seedream 4.5 crée des images allant jusqu’en 4K à partir d’un prompt textuel, sans rien installer.

  1. Ouvrez la page du modèle de Seedream 4.5 et connectez-vous.
  2. Rédigez le prompt en quatre parties : sujet, décor, lumière et objectif. Essayez : une tasse à café en céramique sur un plan de travail en marbre, lumière douce de fenêtre venant de la gauche, objectif 85 mm, faible profondeur de champ, grain de film Kodak Portra 400.
  3. Choisissez le format : 16:9 pour les en-têtes de blog, 1:1 pour les vignettes produit, 9:16 pour les publications verticales.
  4. Générez et examinez. Modifiez un seul détail, puis relancez, comme vous le feriez pour un seul champ d’API.
  5. Téléchargez le meilleur résultat, ou lancez le même prompt sur Flux 2 Pro, GPT Image 2 et Nano Banana Pro pour une comparaison côte à côte.

💡 Astuce : Les idées vagues donnent des prompts faibles. Demandez à un grand modèle de langage comme Claude Sonnet 5 ou Gemini 3.5 Flash de développer une idée d’une ligne en prompt photo détaillé, avec lumière, objectif et texture, puis collez le résultat dans le modèle d’image.

L’API développeur de PicassoIA

PicassoIA propose aussi sa propre API développeur pour les pipelines et les scripts. L’URL de base est https://api.picassoia.com/v1, et les requêtes s’authentifient avec un token bearer qui commence par pia_sk_. Le flux est asynchrone et vous paraîtra familier si vous avez utilisé d’autres API de type prédiction : vous créez une tâche, vous l’interrogez, puis vous récupérez le résultat.

  • POST /v1/models/{owner}/{name}/predictions crée une tâche.
  • GET /v1/predictions/{id} vérifie son statut et renvoie le résultat.
  • POST /v1/predictions/{id}/cancel arrête une tâche encore en cours.
  • GET /v1/predictions liste vos tâches récentes.

Pour les images, l’API propose PicassoIA Image et PicassoIA Image Editor Pro, ainsi que deux modèles vidéo. Un compte peut lancer 5 prédictions simultanément, et les prompts sont limités à 4 000 caractères. L’accès à l’API dépend de formules précises : vérifiez laquelle sur la page tarifaire avant de construire quoi que ce soit dessus. Le catalogue du navigateur est bien plus large, avec plus de 200 modèles de texte vers image à tester avant d’en choisir un pour un script.

Graphiste examinant un grand tirage de paysage côtier dans un studio ensoleillé

Créez vos premières images dès aujourd’hui

La meilleure façon de trancher la question de la passerelle est de tester un même prompt dans les deux sens. Envoyez-le via l’endpoint images d’OpenRouter, consignez usage.cost, puis collez le même texte sur une page de modèle sur PicassoIA et comparez le rendu, la vitesse et l’effort demandé.

Choisissez un prompt issu de votre travail : une photo produit, un en-tête de blog, un portrait pour une page d’accueil. Essayez deux ou trois modèles sur PicassoIA, modifiez un détail par essai, et gardez les résultats que vous publieriez vraiment. Vous saurez en un après-midi quelle voie convient à votre projet, et vous aurez de vraies images à montrer.

Trois collègues triant des photographies fraîchement imprimées autour d’une table

Partager cet article

Choisissez votre langue