AI Headshot Generator API : créer une app de headshots

Créez une app de headshots fonctionnelle grâce à une API de génération de headshots par IA. Cet article présente le flux de requêtes, les modèles à privilégier, le choix des fonds, le code Python, les contrôles qualité et les règles de consentement qui protègent les photos de vos clients.

AI Headshot Generator API : créer une app de headshots
Cristian Da Conceicao
Fondateur de Picasso IA

Importez un selfie, récupérez un portrait digne d’un conseil d’administration. C’est la promesse de chaque AI headshot generator API, et elle est bien plus simple à mettre en œuvre que ce que la plupart des développeurs imaginent. Vous n’entraînez pas de modèle de visage, vous ne louez pas de GPU et vous ne réservez pas de photographe pour chaque client. Votre app envoie une photo et une instruction à un point de terminaison HTTP, attend quelques secondes et reçoit une image finie, prête pour un profil LinkedIn, une page d’équipe ou un dossier de presse.

Cet article détaille toute la construction : le flux de requêtes, les modèles qui valent la peine d’être utilisés, du code Python fonctionnel, les contrôles qualité qui empêchent les portraits faibles d’arriver chez les clients et les règles de consentement qui rendent le produit sûr. Tout ce qui suit repose sur l’API développeur de PicassoIA et sur les modèles listés sur la plateforme.

💡 En bref : hébergez le selfie sur votre propre stockage, appelez picassoia/picassoia-image-editor-pro avec ce selfie comme image 1, interrogez la prédiction jusqu’à ce qu’elle réussisse, lancez une vérification rapide, puis affichez le résultat.

Pourquoi construire sur une API

Portrait studio d’une femme assurée en blazer anthracite sur fond gris

Les portraits en studio coûtent de l’argent et du temps. Un photographe prend rendez-vous, un retoucheur travaille pendant des jours, et une équipe à distance de quarante personnes nécessite quarante rendez-vous. Une app de headshots transforme tout cela en un formulaire d’import et un bouton. Ce qui en fait une entreprise plutôt qu’une démo, c’est le contrôle : votre propre interface, vos propres fonds, votre propre tarif et vos propres règles de données.

Qui en a besoin

La demande est plus large qu’on ne le pense. Voici les produits qui réclament sans cesse une fonctionnalité de portrait :

  • Outils RH et d’intégration qui ont besoin d’un style de photo unique pour chaque nouvelle recrue
  • Créateurs de CV et job boards où une photo de profil change l’apparence d’une page
  • Plateformes de créateurs et de freelances qui veulent un avatar soigné dès l’inscription
  • Agences qui livrent des packs de portraits à leurs clients entreprises
  • Logiciels d’événementiel qui collectent les photos des intervenants dans toutes les conditions d’éclairage possibles

Construire ou acheter

OptionTemps de mise en placeContrôleIdéal pour
Site de headshots clé en mainQuelques minutesFaibleUne seule photo personnelle
Wrapper sans code autour d’un formulaireQuelques heuresMoyenOutils internes et tests rapides
Votre propre app sur une APIQuelques joursContrôle total du design, des tarifs et des donnéesProduits et plateformes

Si vous n’avez besoin que de votre propre photo, utilisez un site. Si les headshots sont une fonctionnalité intégrée à quelque chose que vous vendez, une API l’emporte en matière de tous les critères qui comptent après le lancement.

L’économie confirme ce constat. Un photographe facture par personne, donc le coût grandit avec chaque client. Un appel d’API est un logiciel : le travail investi dans le premier headshot sert aussi le dix-millième, et votre marge s’améliore à mesure que l’usage augmente au lieu de se réduire.

Le flux de requêtes en cinq étapes

Vue par-dessus l’épaule d’un développeur à un bureau debout avec deux écrans

Chaque app de headshots, quelle que soit la finition de son interface, suit la même boucle. L’API PicassoIA est asynchrone et de type Replicate : vous créez une prédiction, vous l’interrogez, puis vous lisez le résultat.

  1. Collectez le selfie dans votre frontend.
  2. Validez et stockez-le pour disposer d’une URL que l’API peut récupérer.
  3. Créez la prédiction avec une requête POST vers le point de terminaison du modèle.
  4. Interrogez la prédiction jusqu’à ce que son statut soit définitif.
  5. Vérifiez et livrez l’URL de sortie.

L’URL de base est https://api.picassoia.com/v1, et chaque requête porte un en-tête Authorization: Bearer pia_sk_.... Vous créez ces clés secrètes depuis la page API de picassoia.com, et un compte peut en détenir deux, si bien que l’une peut servir la production pendant que l’autre sert la préproduction.

Importer et valider

Jeune homme en chemise bleu marine qui prend un selfie à côté d’une fenêtre de bureau

Rejetez les mauvaises entrées tôt. Acceptez le JPEG, le PNG et le WebP, gardez le fichier bien en dessous de la limite de 10 Mo pour le corps de requête, et fixez une résolution minimale pour que les visages ne soient pas plus petits qu’un timbre-poste. Ensuite, guidez l’utilisateur sur le même écran : placez-vous face à la fenêtre, tenez le téléphone à hauteur des yeux, une seule personne dans le cadre, pas de lunettes de soleil.

Une indication de dix secondes sur l’écran d’import évite plus de tickets de support que n’importe quel réglage de modèle. Un selfie flou dans un couloir sombre produit un headshot flou à chaque fois.

Créer la prédiction

Les points de terminaison des modèles suivent un seul schéma : POST /v1/models/{owner}/{name}/predictions. Le corps enveloppe chaque paramètre dans un objet input. Pour un headshot, l’input contient l’URL du selfie et une instruction textuelle. Vous recevez aussitôt un objet de prédiction avec un id et un status, bien avant que l’image n’existe.

Interroger, puis stocker

Appelez GET /v1/predictions/{id} toutes les deux ou trois secondes jusqu’à ce que le statut affiche succeeded, failed ou canceled. Si un client ferme l’onglet, POST /v1/predictions/{id}/cancel arrête la tâche. En cas de succès, téléchargez la sortie et copiez-la dans votre propre stockage pour que votre produit ne dépende jamais d’une URL tierce.

💡 Une prédiction peut durer jusqu’à 3 heures côté serveur. Votre interface devrait abandonner bien plus tôt. Les modifications se terminent normalement en quelques secondes, donc un délai d’attente côté client de 90 secondes, avec un bouton de nouvelle tentative bien visible, suffit largement.

Choisir des modèles adaptés

Vue à plat de cinq headshots imprimés sur des fonds différents

L’API et le connecteur MCP exposent actuellement quatre modèles. Deux comptent pour les headshots, et le reste de la plateforme vous aide à prototyper dans le navigateur.

ModèleRôle dans une app de headshotsOù l’utiliser
PicassoIA Image Editor ProTransforme un selfie en portrait soigné, remplace les fonds, retoucheAPI et web
PicassoIA ImageCrée des portraits d’exemple et des fonds à partir de texteAPI et web
Professional HeadshotUne photo en entrée, un portrait de studio en sortie, avec cinq préréglages de fondWeb
Bria Remove BackgroundDécoupe le sujet pour des fonds aux couleurs de la marqueWeb
Topaz Image UpscaleAugmente la résolution pour des portraits destinés à l’impressionWeb

Les trois derniers se trouvent dans l’app web. Consultez la documentation de l’API avant de les intégrer au code, car l’API publique ne liste aujourd’hui que quatre modèles.

Le fond mérite sa propre décision, car il change la façon dont le portrait se lit dans un cercle de profil. Une correspondance simple donne à vos utilisateurs une valeur par défaut raisonnable :

Cas d’usageFondPourquoi ça marche
LinkedIn et candidaturesGris neutreCalme, lisible en miniature
Annuaire d’entrepriseBlancIdentique pour toute l’équipe
Portfolio et travaux créatifsAnthraciteAjoute de la profondeur sans distraire
Ventes et immobilierBureau floutéParaît accessible et local

Éditeur ou texte vers image

Un client veut ressembler à lui-même, simplement mieux éclairé et mieux habillé. Le texte vers image invente une nouvelle personne, ce qui est le mauvais produit. Un modèle d’édition conserve le visage du selfie et modifie tout le reste, donc PicassoIA Image Editor Pro est le cheval de bataille. Utilisez PicassoIA Image pour les images dont votre marketing a besoin : exemples pour la page d’accueil, jeux de test et fonds de bureaux vides.

Nettoyage après l’édition

Deux petites étapes améliorent le résultat. Bria Remove Background offre aux clients une découpe transparente qu’ils peuvent placer sur la couleur de leur entreprise. Topaz Image Upscale pousse un portrait de taille web vers une résolution d’impression. Proposez-les en options supplémentaires une fois que le résultat principal semble correct.

Comment utiliser Image Editor Pro

Prototypez d’abord dans le navigateur. Cela prend cinq minutes et vous indique quelle formulation de prompt vaut la peine d’être codée en dur.

  1. Ouvrez la page PicassoIA Image Editor Pro.
  2. Importez le selfie comme première image de référence. Le modèle en accepte jusqu’à trois, et la première est la principale.
  3. Rédigez l’instruction et désignez le selfie par image 1.
  4. Choisissez le format, le format de sortie et la qualité.
  5. Générez, comparez les deux variantes si vous en avez demandé deux, et téléchargez la meilleure.

Main tenant un smartphone affichant un portrait de headshot épuré

Vous ne voulez rien écrire ? Professional Headshot prend une seule photo et un choix de fond : blanc, noir, neutre, gris ou bureau. Il propose aussi 14 préréglages de format, un réglage de genre pour une meilleure précision faciale, une seed pour des résultats reproductibles et une sortie en PNG ou JPG. C’est le moyen le plus rapide de voir ce que donne chaque fond avant de construire votre propre sélecteur.

Réglages importants

ParamètreCe qu’il faitValeur par défaut raisonnable
imagesJusqu’à 3 références, la première est la principaleLe selfie en premier
promptLa modification, en désignant image 1, image 2Moins de 4 000 caractères
aspect_ratioForme de la sortiematch_input_image
output_formatWebP, JPG ou PNGPNG pour la livraison
output_quality0 à 100, JPG et WebP uniquement95
num_outputs1 ou 2 variantes par appel2 pour un bouton de nouvelle tentative
seedReproduit un résultat à l’identiqueLe stocker avec la tâche

Un prompt qui fonctionne

Mettez l’identité en premier, puis la scène. Nommez la tenue, le fond et la lumière pour que le modèle n’ait rien à deviner :

Turn image 1 into a professional corporate headshot of the same person.
Keep the face, skin tone, hair and expression natural and unchanged.
Dark navy blazer over a white shirt, seamless soft grey studio backdrop,
soft main light from the left, gentle fill from the right, 85mm portrait
lens look, natural skin texture with visible pores, sharp eyes.

Évitez les demandes vagues du type « faites-moi paraître formidable ». Elles invitent au lissage, et une peau lissée est le chemin le plus rapide vers un résultat plastique, manifestement faux.

Code Python fonctionnel

Les extraits ci-dessous suivent la structure de type Replicate décrite plus haut. La documentation officielle sur picassoia.com/en/api comprend des exemples en Python, Node et cURL : vérifiez les noms de champs là-bas avant de livrer.

La fonction principale

import os
import time
import requests

BASE = "https://api.picassoia.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['PICASSOIA_TOKEN']}"}
MODEL = "picassoia/picassoia-image-editor-pro"


def make_headshot(selfie_url: str, backdrop: str = "soft grey studio backdrop") -> str:
    prompt = (
        "Turn image 1 into a professional corporate headshot of the same person. "
        "Keep the face, skin tone and hair natural and unchanged. "
        f"Dark navy blazer, {backdrop}, soft main light from the left, "
        "85mm portrait lens look, natural skin texture."
    )
    created = requests.post(
        f"{BASE}/models/{MODEL}/predictions",
        headers=HEADERS,
        json={"input": {
            "images": [selfie_url],
            "prompt": prompt,
            "output_format": "png",
        }},
        timeout=30,
    )
    created.raise_for_status()
    prediction = created.json()

    deadline = time.time() + 90
    while prediction["status"] not in ("succeeded", "failed", "canceled"):
        if time.time() > deadline:
            requests.post(f"{BASE}/predictions/{prediction['id']}/cancel", headers=HEADERS, timeout=30)
            raise TimeoutError("Headshot took too long")
        time.sleep(3)
        prediction = requests.get(
            f"{BASE}/predictions/{prediction['id']}", headers=HEADERS, timeout=30
        ).json()

    if prediction["status"] != "succeeded":
        raise RuntimeError(prediction.get("error") or prediction["status"])
    return prediction["output"][0]

Le token provient d’une variable d’environnement, jamais du frontend. S’il est livré dans un bundle mobile ou un script de navigateur, n’importe qui peut le lire.

Respecter la limite de cinq tâches

Un compte exécute 5 prédictions à la fois, partagées entre tous les identifiants et toutes les connexions MCP. Un pic le jour du lancement heurtera ce mur, donc mettez les tâches en file d’attente de votre côté :

import asyncio

slots = asyncio.Semaphore(4)  # leave one slot for retries


async def run_job(selfie_url: str) -> str:
    async with slots:
        return await asyncio.to_thread(make_headshot, selfie_url)

Enregistrez chaque tâche dans une table avec son statut, puis montrez aux clients leur place dans la file. Une file visible semble rapide. Un spinner figé semble cassé.

Contrôles qualité avant livraison

Gros plan extrême des yeux et de la peau d’un homme plus âgé sur un headshot

Un headshot qui semble correct à 95 % reste une demande de remboursement. Les gens remarquent les visages avec une sensibilité presque surnaturelle, donc vérifiez chaque résultat avant qu’il n’atteigne un client.

Ressemblance et peau

Parcourez cette liste sur un jeu de test de cinquante selfies avant le lancement :

  • La forme du visage et la couleur des yeux correspondent au selfie
  • La peau garde ses pores, les fines rides et le teint, sans flou cireux
  • Les contours des cheveux sont nets, sans halo sur le fond
  • Les dents, les oreilles et les lunettes ont le bon nombre d’éléments et une symétrie correcte
  • Les bijoux et les cols ne sont pas fondus dans le cou
  • Le fond est assez uni pour une miniature de photo de profil

Regardez le résultat en miniature et en taille réelle. Beaucoup de défauts n’apparaissent qu’à l’une des deux.

Constituez le jeu de test volontairement. Incluez les pièces sombres, les lunettes, les barbes, les cheveux longs, les chapeaux et les personnes photographiées légèrement par en dessous. Consignez la seed et le prompt pour chaque exécution, afin que, lorsqu’un client signale un portrait étrange, vous puissiez le reproduire en une minute et corriger l’instruction au lieu de deviner.

Contrôle automatisé

Retoucheur comparant deux tirages de portraits sous une lampe de jour

Les grands modèles de langage aident à deux endroits. D’abord, ils peuvent transformer les choix du formulaire (fond, tenue, ambiance) en instruction finale, afin que les équipes produit puissent modifier la formulation sans déploiement. Gemini 3.5 Flash est une option rapide pour ce travail, et Claude Sonnet 5 convient aux règlements plus longs. Ensuite, Llama Guard 4 12B peut filtrer le texte libre que les utilisateurs saisissent dans les champs d’instruction personnalisés.

L’API publique liste quatre modèles, donc pour ces étapes, appelez votre propre fournisseur de LLM ou testez d’abord les prompts dans l’app web de PicassoIA.

Prévoyez aussi une solution de repli humaine. Donnez à chaque résultat un bouton Réessayer qui relance le même selfie avec une nouvelle seed, et un lien Signaler qui permet à un client de signaler un mauvais portrait.

Règles de consentement et de confidentialité

Six collègues debout ensemble dans un hall de bureau lumineux

Un visage est une donnée personnelle. Traitez-la ainsi dès le premier jour, car une app de headshots qui gère mal les photos n’a pas de seconde chance.

Consentement et stockage

  • Demandez aux utilisateurs de confirmer que la photo les montre eux-mêmes ou une personne qui a donné son accord
  • Supprimez le selfie original dès que le portrait final est livré
  • Ne réutilisez jamais les photos des clients pour des exemples ou du marketing sans autorisation écrite
  • Indiquez dans votre app que le résultat est généré par IA, car certaines plateformes et certains employeurs y sont attentifs
  • Publiez une page de confidentialité en langage clair qui indique combien de temps les fichiers sont conservés

Limites à anticiper

LimiteValeurQue faire
Prédictions simultanées5 par compteMettre les tâches en file et limiter les workers à 4
Corps de requête10 MoRedimensionner les grands selfies dans le navigateur
Longueur du prompt4 000 caractèresLimiter votre générateur d’instructions
Délai d’expiration d’une prédiction3 heuresAnnuler vous-même les tâches obsolètes
Identifiants API2 par compteUn pour la production, un pour la préproduction

💡 Vérifiez les tarifs avant de promettre un prix. La page API indique que les prédictions sont actuellement gratuites, alors que la page tarifs liste l’accès API sur les forfaits Pro+, Elite et Infinite. Lisez les deux avant de fixer ce que paieront vos clients.

Créez votre premier headshot dès aujourd’hui

Homme souriant en costume bleu marine debout dans un couloir de bureau en verre ensoleillé

Inutile de rédiger des documents de planification. Ouvrez PicassoIA Image Editor Pro, importez un selfie et testez trois versions du prompt ci-dessus : un fond gris, un fond blanc, un fond de bureau. Choisissez la gagnante, copiez sa formulation dans la fonction Python, et vous avez l’ossature d’un produit fonctionnel.

À partir de là, ajoutez un écran d’import, une file d’attente, un bouton de nouvel essai et une case de consentement. C’est toute la liste. Créez vos propres images avec PicassoIA, poussez les prompts jusqu’à ce que les portraits ressemblent à de vraies photographies, et livrez la première version cette semaine. Vos clients se soucieront bien plus d’un résultat propre et rapide que de n’importe quelle fonctionnalité que vous pourriez ajouter plus tard.

Partager cet article

Choisissez votre langue