Vous voulez modifier par code un seul élément d’une photo : lumière, arrière-plan, tenue ou texte. Il vous faut un éditeur qui ne refuse pas l’instruction et ne l’atténue pas discrètement. Ce guide explique quel endpoint appeler, son prix, ses entrées, comment l’essayer dans le Playground puis par code ou avec un Agent, et comment réagir en cas d’échec.
En bref : un appel image vers image crée une tâche sur un endpoint dont l’ID de modèle se termine par /edit : envoyez un prompt et une image source, puis récupérez le fichier retouché. Pour une photo et une instruction, commencez par Qwen Image Edit Spicy : $0.038 par retouche, une source, sans masque ni réglage d’intensité. Pour plusieurs sources, utilisez Qwen Image 3.0, Seedream 5.0 Pro ou Wan 2.7. Pour un masque, choisissez Qwen Image 2.1 ou FLUX.1 Dev LoRA ; strength n’existe que sur FLUX.1 Dev LoRA et Z-Image Turbo LoRA.
Les prix et limites ci-dessous proviennent du catalogue actuel et de la documentation ; chaque tarif a fait l’objet d’un devis gratuit.
Ce que « sans censure » signifie pour une retouche
« Sans censure » est l’étiquette du catalogue pour un modèle qui déclare ne pas avoir de filtre de contenu : SpicyAPI n’ajoute aucune analyse de contenu au niveau de la plateforme, et le modèle décide du résultat. Cela ne garantit pas l’exécution de chaque instruction. Prévoyez deux issues :
- Un refus termine la tâche en
failedavecerrorCode: "content_rejected". La totalité du montant réservé sur votre solde est libérée. - Un résultat atténué est une image terminée, moins intense que demandé. La tâche a réussi et est donc facturée ; rien dans la réponse ne le signale. Seule l’inspection de l’image permet de le repérer.
Certaines limites s’appliquent à tous les modèles : aucune représentation sexualisée de mineur, quel que soit le style ; aucune représentation intime ou sexualisée d’une personne réelle identifiable sans consentement documenté (échange de visage et transfert d’apparence compris) ; aucune usurpation d’identité ni rien d’illégal là où vous exercez. La deuxième règle est facile à enfreindre en retouche, puisque la source est souvent une vraie photo. Selon la politique d’utilisation acceptable, une photo publique, la célébrité ou une relation passée ne valent pas consentement ; les contenus d’âge ambigu relèvent de la règle sur les mineurs, et vous ne devez pas téléverser de contenus privés sans droit de traitement.
SpicyAPI ne contrôle pas chaque requête. Si vos utilisateurs téléversent des photos, ces obligations vous reviennent : vérification de l’âge, attestation de consentement au téléversement conservée avec l’ID de tâche, refus des sources dont l’âge du sujet est incertain, blocage des retouches de personnes réelles identifiables sans consentement documenté et moyen de signaler du contenu. Ceci n’est pas un avis juridique.
Le service n’est pas disponible en Chine continentale, Russie, Biélorussie, Cuba, Iran, Corée du Nord ou Syrie, ni, selon les conditions, au Royaume-Uni, à Hong Kong, Macao, en Arabie saoudite, aux Émirats arabes unis, au Qatar, Koweït, Bahreïn, Oman, Pakistan, Bangladesh, Afghanistan, en Indonésie, Malaisie ou au Brunei. La politique de contenu et d’utilisation précise que la liste peut s’allonger. Les échanges de visage et de tête sont des endpoints distincts avec leur propre processus, présenté dans le workflow de l’API d’échange de visage par IA.
Choisir l’endpoint de retouche
Les endpoints diffèrent par le nombre de sources, les réglages supplémentaires et le format du résultat :
| Endpoint | Sources | Réglages hors prompt | Format du résultat | Prix par image |
|---|---|---|---|---|
Qwen Image Edit Spicy alibaba/qwen-image-spicy-edit/edit | Exactement 1 (image_url) | seed | Aucun champ de taille | $0.038 |
Qwen Image 2 alibaba/qwen-image-2/edit | Exactement 1 ; prompt de 800 caractères maximum | aspect_ratio, seed | Défini par aspect_ratio, 1:1 par défaut, ne suit pas la source | $0.035 |
Qwen Image 3.0 alibaba/qwen-image-3.0/edit | De 1 à 3 | negative_prompt, aspect_ratio, resolution (1k ou 2k), enable_prompt_expansion (activé par défaut), seed | Défini par aspect_ratio, 1:1 par défaut | $0.033 avec une source, $0.039 avec trois |
Seedream 5.0 Pro bytedance/seedream-5.0-pro/edit | De 1 à 10 | aspect_ratio, resolution, output_format ; pas de seed | auto (par défaut) choisit le ratio le plus proche de la première source | $0.036 à 1k, $0.072 à 2k (par défaut) ; +$0.003 par source supplémentaire |
Wan 2.7 alibaba/wan-2.7/edit | De 1 à 9 | bounding_boxes (jusqu’à 2 par image), color_palette, resolution (1k ou 2k, même prix), num_outputs (de 1 à 4), seed | Suit la dernière source sauf si aspect_ratio est défini | $0.03 par sortie (4 sorties $0.12), identique pour 1 à 9 sources |
Qwen Image 2.1 alibaba/qwen-image-2.1/edit | De 1 à 10 ; masque seulement avec exactement 1 | mask_url (PNG, JPEG ou WebP ; une seule source), resolution, aspect_ratio, enable_prompt_expansion (activé par défaut), seed | aspect_ratio, 1:1 par défaut | $0.036 à 1k avec une source, +$0.012 par source supplémentaire ; forfait $0.048 à 2k ; $0.072 à 1.5k |
FLUX.1 Dev LoRA black-forest-labs/flux-1-dev-lora/edit | Exactement 1 | mask_url, strength, steps, guidance_scale, jusqu’à 3 LoRAs, seed | Conserve le format de la source | $0.018 |
Les prix sont des devis pour une requête produisant une image. Seedream 5.0 Pro coûte deux fois plus à son palier 2k par défaut qu’à 1k ; Qwen Image 3.0 ajoute un coût par source. Les paliers de Qwen Image 2.1 ne sont pas croissants (1.5k est plus cher que 2k, et 2k reste forfaitaire quel que soit le nombre de sources). Demandez donc un devis pour le corps exact avant de budgéter.
Le catalogue comprend d’autres éditeurs étiquetés sans censure, dont Seedream 5.0 Flash, Qwen Image 3.0 Pro et Wan 2.7 Pro. Les endpoints de retouche GPT Image 2 et 2.5 et Nano Banana portent l’étiquette Filtered : ils ne conviennent pas si un résultat sans censure est l’objectif.
Une photo, une modification. Utilisez Qwen Image Edit Spicy. La requête entière comprend image_url, prompt et un seed facultatif ; l’instruction est le seul contrôle. Dire ce qui doit rester constitue donc aussi votre réglage de préservation. Son test indique environ 21 secondes pour une retouche typique. Qwen Image 2 reprend le principe à un prix légèrement inférieur, avec une seule source et un prompt limité à 800 caractères.
Plusieurs sources dans une retouche. Un visage d’une photo, un vêtement d’une autre, une pièce d’une troisième : Qwen Image 3.0 (trois sources), Seedream 5.0 Pro (dix) ou Wan 2.7 (neuf). Le prompt doit attribuer le rôle de chaque image. Seedream 5.0 Pro se rapproche par défaut du format de la première source, Wan 2.7 de la dernière, et Qwen produit par défaut un carré : un portrait envoyé à Qwen Image 3.0 sans aspect_ratio revient en 1:1.
Retouches locales avec masque ou réglage d’intensité. Qwen Image 2.1 et FLUX.1 Dev LoRA acceptent un masque via mask_url : une image noir et blanc aux dimensions de la source, dont le blanc est repeint et le noir conservé. strength (de 0 à 1, 0.8 par défaut, distance du résultat à la source) existe sur FLUX.1 Dev LoRA et l’endpoint de retouche Z-Image Turbo LoRA. Wan 2.7 délimite autrement les régions, avec jusqu’à deux rectangles de pixels par image dans bounding_boxes.
Résultats de contenu. D’après nos rapports publics de septembre 2026, chaque éditeur a passé cinq niveaux de contenu (L1 le plus modéré, L5 le plus intense), généralement avec trois essais par niveau.
| Endpoint | Retouches livrées comme demandé | Limites constatées |
|---|---|---|
| Qwen Image Edit Spicy | 18 sur 18 | Aucune |
| Qwen Image 3.0 | 17 sur 17 | Aucune |
| Qwen Image 2.1 | 18 sur 18 | Aucune |
| Qwen Image 2 | 16 sur 18 | Deux des trois essais au niveau L4 Intense ont été atténués |
| Seedream 5.0 Pro | 16 sur 17 | Une retouche L4 Intense a donné un simple portrait |
| Wan 2.7 | 11 sur 15 | Un essai sur trois conforme à L4 Intense et lors d’une épreuve L5 Extreme ; l’éditeur est plus permissif que le texte vers image du même modèle |
FLUX.1 Dev LoRA est la route la moins chère avec masque et strength, mais son rapport public concerne le texte vers image, où les niveaux les plus forts ont été atténués. Essayez donc votre niveau de contenu sur une retouche avant de vous engager.
Les détails sont sur les pages de test, par exemple Seedream 5.0 Pro ; le test sans censure de Qwen Image Edit montre des paires avant/après des éditeurs Qwen.
Local ou hébergé ? Avec un GPU d’au moins 8 GB de VRAM et des retouches en volume, exécuter un modèle local dans ComfyUI (Qwen Image Edit ou FLUX.2 Klein) est une vraie option. L’hébergement convient si vous ne voulez pas gérer de GPU, devez appeler un éditeur depuis une application ou préférez payer à l’image : de $0.018 à $0.072 par image, cent retouches coûtent $1.80 à $7.20 avant les nouvelles tentatives.
Essayer d’abord dans le Playground
Le moyen le plus rapide de voir ce qu’un éditeur fait de votre photo est le Playground de sa page, sans code ni gestion de clé.
- Ouvrez la page Qwen Image Edit Spicy et restez dans Playground, vue Form. Connectez-vous avec un compte approvisionné pour lancer.
- Dans Input image, déposez un fichier (JPG, PNG, WEBP ou GIF, jusqu’à 10 MB), ou utilisez Asset URL et Add URL pour un lien direct vers l’image.
- Dans Prompt, dites ce qui doit rester, puis la modification unique (les exemples de la section suivante donnent les formulations).
- Définissez éventuellement un Seed. Le réutiliser avec la même image et instruction rend deux formulations comparables.
- Appuyez sur Run model et regardez d’abord l’image dans Output : un résultat atténué est facturé comme les autres.
Les autres éditeurs ont leurs propres champs, comme des sources supplémentaires ou un masque pour Qwen Image 2.1. La vue JSON à côté de Form montre le corps exact ; les onglets de code voisins (JavaScript, Python, cURL et autres) présentent le même appel. Une configuration qui fonctionne ici peut être copiée dans votre projet.
Puis exécuter depuis le code
Installez le Python SDK (pip install spicyapi), définissez SPICY_API_KEY dans votre environnement et lancez une retouche. Le script téléverse la photo, affiche le prix et attend votre accord avant de créer la tâche :
import uuid
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
MODEL = "alibaba/qwen-image-spicy-edit/edit"
source = client.upload_file("photo.jpg") # or put a public HTTPS link in image_url
body = {
"image_url": source["uri"],
"prompt": "Keep the person, pose, framing and room exactly as they are. "
"Change only the light to warm late-afternoon sun from the window on the left.",
}
quote = client.quote_task(model=MODEL, input_data=body)
print("Estimated", quote["estimatedCost"], "maximum", quote["maxCharge"])
if input("Create the task? [y/N] ").strip().lower() != "y":
raise SystemExit
task = client.create_task(
model=MODEL,
input_data=body,
idempotency_key=str(uuid.uuid4()),
quote_id=quote["quoteId"],
expected_cost=quote["estimatedCost"],
)
print("Resume task:", task["taskId"], flush=True)
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
raise SystemExit(f"{task['taskId']} ended as {final['state']}: {final.get('errorCode')}")
assets = output_assets(final)
if not assets or any(a.get("pending") or a.get("unavailable") or not a.get("url") for a in assets):
raise RuntimeError(f"Task {task['taskId']} has no ready output; check this task before a new run")
print(assets[0]["url"]) # copy the image to your own storage nowLa référence du Python SDK et le guide des tâches couvrent la suite ; un service qui doit recevoir un rappel plutôt qu’attendre peut utiliser des webhooks.
Ou laisser un Agent l’exécuter
Lorsqu’un assistant doit faire les retouches, les trois outils officiels montrent le prix et demandent votre accord avant un appel payant.
- CLI. Téléversez la photo, placez l’adresse
spicy://reçue et votre prompt dansinput.jsonsousimage_urletprompt, puis :
``bash spicyapi files upload photo.jpg spicyapi tasks create --model alibaba/qwen-image-spicy-edit/edit --input-file input.json --wait ``
Consultez la documentation CLI ; npx @spicyapi/cli fonctionne sans installation.
- Serveur MCP. Ajoutez le serveur MCP à votre assistant, puis demandez : "Edit /path/to/photo.jpg with Qwen Image Edit Spicy: keep the person, pose and room, change only the light to warm late-afternoon sun." Il téléverse via
spicyapi_upload_file, appellespicyapi_task_create, qui s’arrête pour confirmer le prix, puisspicyapi_task_wait. - Skill.
npx skills add spicyapi-ai/spicy-skillinstalle l’Agent Skill, qui fait lire à l’assistant de code le schéma actuel au lieu de deviner les champs.
Ce que vous pouvez envoyer et son coût
Une image source peut parvenir à la tâche par trois voies :
- Une URL HTTPS publique, sans téléversement. Elle doit renvoyer directement le fichier sans identifiants ; une page de partage cloud ou d’album est une page web, refusée avec 400.
- Une petite image intégrée, notée
data:image/png;base64,...dans le même champ. Elle doit être JPEG, PNG, WebP ou GIF, au plus 1 MiB décodé et 8192 pixels par côté. - Un téléversement, pour les fichiers plus volumineux ou privés : JPEG, PNG, WebP ou GIF jusqu’à 10 MiB. Il est gratuit ; seule la tâche utilisant le fichier est payante. Il retourne une URI
spicy://valable un jour.
Qwen Image 2 n’accepte que JPEG, PNG et WebP. Les champs varient : Qwen Image Edit Spicy et FLUX.1 Dev LoRA prennent une chaîne image_url, les autres un tableau image_urls. Un endpoint refuse les champs absents de son schéma au lieu de les ignorer.
Le coût dépend du palier de résolution, du nombre de sources et, sur Wan 2.7, de num_outputs. Le prix affiché avant confirmation correspond à votre requête exacte. Voir les devis et le guide des médias.
Autres endpoints : seule l’entrée change
Les modèles acceptant un tableau utilisent image_urls, et le prompt attribue les rôles avec plusieurs sources. Utilisez le même code avec l’ID de modèle et le corps ci-dessous :
{
"model": "alibaba/qwen-image-3.0/edit",
"input": {
"prompt": "Use the person from the first image and the jacket from the second. Keep her face, hair and pose from the first image. Change nothing else.",
"image_urls": ["spicy://f/fil_...", "spicy://f/fil_..."],
"aspect_ratio": "3:4",
"resolution": "2k"
}
}Une retouche masquée sur FLUX.1 Dev LoRA ajoute le masque et l’intensité à un corps à une source :
{
"model": "black-forest-labs/flux-1-dev-lora/edit",
"input": {
"prompt": "A black satin jacket with a high collar, same light as the rest of the photo.",
"image_url": "spicy://f/fil_...",
"mask_url": "spicy://f/fil_...",
"strength": 0.9,
"seed": 7
}
}Un strength plus faible reste plus proche de l’original ; la valeur par défaut est 0.8. Copiez les valeurs du schéma actuel de chaque page modèle ; le guide de génération d’images explique les différences entre endpoints.
Rédiger l’instruction : ce qui reste, puis ce qui change
Un endpoint redessine ce que vous ne précisez pas : dites d’abord ce qui doit rester identique, puis la modification unique. Énumérer plus d’éléments à préserver ne coûte rien de plus. Sur Qwen Image 3.0 et 2.1, définissez enable_prompt_expansion sur false pour une retouche fidèle : activé par défaut, il développe le prompt en description de scène et peut diluer la consigne de préservation.
- Lumière seulement : “Keep the person, pose, framing and room exactly as they are. Change only the light to warm late-afternoon sun from the window on the left. Keep the colour grade and film grain.”
- Arrière-plan seulement : “Keep the subject, outfit and crop. Replace the studio wall with dark theatre curtains. Add no logos or text.”
- Plusieurs sources : “Use the person from the first image, the jacket from the second and the street from the third. Keep her face and pose from the first image. Change nothing else.”
Changez une chose par passe ; combiner changements de style et de texte favorise la dérive d’identité. Si le résultat manque la cible :
| Ce que vous voyez | Cause probable | Prochain essai |
|---|---|---|
| Résultat carré ou recadré | aspect_ratio vaut 1:1 par défaut sur Qwen Image 2, 2.1 et 3.0 | Envoyer explicitement le ratio source |
| Après fusion, le visage est proche mais n’est pas le sien | Le prompt n’attribue pas le visage à une source ; plus de sources favorisent la dérive | Réduire les sources, nommer celle du visage dès la première phrase, une modification par passe |
| Meubles ou fenêtres déplacés sans demande | Le rapport Qwen Image 2 note que les retouches complexes peuvent reconstruire la pièce | Diviser en deux passes ; lister les objets à garder |
| Image plus modérée ou plus simple que demandé | Résultat atténué ; la tâche a malgré tout réussi | Relire le prompt pour une seule modification claire, ou choisir un endpoint mieux testé à ce niveau |
| Texte d’une enseigne incorrect | Les chaînes courtes fonctionnent mieux | Citer l’ancien et le nouveau texte dans la phrase ; confier les textes denses à Qwen Image 3.0 |
En cas d’échec
Ces erreurs sont propres à la retouche. Aiguillez selon le code numérique ou l’errorCode de la tâche, pas le texte du message.
| Ce que vous voyez | Signification | Action |
|---|---|---|
400 strength: is not a supported field | Champ d’un autre endpoint ; les champs inconnus sont refusés, pas ignorés | Le retirer, ou utiliser FLUX.1 Dev LoRA si nécessaire |
400 image_urls: must contain at most 1 items | Qwen Image 2 et l’éditeur Spicy prennent une source | En envoyer une, ou choisir un endpoint multi-source |
400 Reference asset not found or does not belong to this account | URI spicy:// non validée, expirée ou appartenant à un autre compte | Téléverser à nouveau |
400 The file linked in image_urls was not found ou ... opens a web page | Lien HTTPS erroné, hors ligne ou page de visualisation | Utiliser un lien direct ou téléverser |
Tâche failed, invalid_asset | Lien HTTPS vers une page de visualisation ou expiré | Téléverser et créer une nouvelle tâche avec la nouvelle URI |
Tâche failed, content_rejected | Le modèle a refusé le contenu | Ne pas renvoyer sans changement ; modifier le prompt ou le modèle. Vérifier settled et cost |
Les erreurs de solde, de délai et autres erreurs générales figurent dans la référence des erreurs.
Ce que deviennent les fichiers
Les photos téléversées restent un jour et les résultats jusqu’à 14 jours. Copiez donc un résultat à garder dans votre stockage dès la réussite de la tâche. Pour une conservation plus courte, la documentation de rétention explique comment réduire la fenêtre ou détruire les médias et le prompt d’une tâche terminée. Voir aussi téléversements temporaires et livraison durable et le guide de démarrage des API image et vidéo.
Questions fréquentes
Existe-t-il une API image vers image sans censure avec réglage d’intensité ?
Oui : FLUX.1 Dev LoRA (strength de 0 à 1, 0.8 par défaut, avec masque facultatif) et l’endpoint de retouche Z-Image Turbo LoRA. Sur les autres, l’instruction est le contrôle ; envoyer strength retourne 400 strength: is not a supported field.
Dois-je téléverser la photo ?
Non. Un lien HTTPS public ou une image intégrée jusqu’à 1 MiB convient ; téléversez les fichiers plus gros ou privés.
Une retouche refusée ou échouée est-elle payante ?
Normalement non : une tâche échouée libère toute la réservation, une erreur de création ne facture rien. Un résultat atténué est une image terminée et est facturé.
La retouche préservera-t-elle le visage et la pose ?
Ce n’est pas garanti. Précisez ce qui reste, une modification par passe, et une seule source si possible. Seedream 5.0 Pro a préservé la personne lors des changements de lumière et de tenue, mais a placé le visage moins précisément en intégrant la personne dans un décor d’une deuxième photo. Qwen Image 2 a bien géré les retouches simples, mais a reconstruit certains meubles lors des retouches complexes.
Puis-je retoucher la photo d’une personne réelle ?
Uniquement avec son consentement documenté, et jamais de façon sexualisée sans celui-ci. Cela vaut pour tout modèle ; conservez la preuve dans votre système.
Par quel endpoint commencer ?
Qwen Image Edit Spicy pour une photo et une modification. Ne changez que si le travail demande plusieurs sources, un masque ou strength. Faites une retouche et regardez l’image avant de changer d’endpoint.
Pour continuer
Lancez une retouche dans le Playground avec une photo de test inoffensive et lisez le prix avant confirmation. Choisissez ensuite le palier de résolution à payer et décidez si la production doit utiliser un webhook plutôt qu’attendre.
Pour les prompts du Spicy en détail, consultez le workflow Qwen Image Edit Spicy de préservation de la source. Pour comparer les éditeurs d’images existantes au-delà de l’API, voyez les meilleurs éditeurs d’images IA sans censure. Le catalogue d’API image sans censure répertorie tous les modèles appelables, leur étiquette de contenu et leur tarif actuel.












