Cette API permet d'interagir programmatiquement avec le moteur de génération d'images.
- URL de base :
http://your-internal-ip:8000 - Format : JSON
- CORS : Activé (toutes origines autorisées)
POST /generate
Génère une image à partir d'un texte (Text2Img) ou d'une image existante (Img2Img).
| Champ | Type | Défaut | Description |
|---|---|---|---|
prompt |
string | (Obligatoire) | Description textuelle de l'image souhaitée. |
num_inference_steps |
int | 4 | Nombre d'étapes (1-10). Flux-schnell excelle à 4. |
width |
int | 1024 | Largeur de l'image (multiple de 64). |
height |
int | 1024 | Hauteur de l'image (multiple de 64). |
seed |
int | null | Pour la reproductibilité (optionnel). |
no_text |
boolean | false | Si vrai, ajoute des contraintes au prompt pour éviter le texte. |
performance_mode |
string | "balanced" | "balanced" (économe) ou "fast" (plus rapide, consomme plus de VRAM). |
image |
string | null | Image de référence encodée en Base64 (Data URL). |
mask |
string | null | Masque de retouche encodée en Base64 (Zones blanches = à modifier). |
strength |
float | 0.6 | Force de transformation (0.01 à 1.0). |
model |
string | "flux" | Moteur d'inpainting : "flux" (Haute qualité) ou "lama" (Ultra-rapide/Eraser). |
{
"url": "/outputs/a1b2c3d4.png",
"seed": 12345
}Note: L'image est accessible à http://your-internal-ip:8000/outputs/a1b2c3d4.png.
POST /upscale
Multiplie par 4 la résolution d'une image en restaurant les détails via Real-ESRGAN.
| Champ | Type | Description |
|---|---|---|
image |
string | Image à agrandir en Base64 (Data URL). |
{
"url": "/outputs/upscale_x1y2z3.png"
}const response = await fetch("http://your-internal-ip:8000/generate", {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
prompt: "A neon sign in a rainy street",
no_text: true,
width: 512,
height: 512
})
});
const data = await response.json();
console.log("URL Image:", data.url);import requests
payload = {
"prompt": "An oil painting of a cat",
"num_inference_steps": 4,
"performance_mode": "fast"
}
r = requests.post("http://your-internal-ip:8000/generate", json=payload)
print(r.json())const response = await fetch("http://your-internal-ip:8000/upscale", {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
image: "data:image/png;base64,iVBORw0..." // Votre image source
})
});
const data = await response.json();
window.open(data.url); // Ouvre l'image agrandie x4Si votre application React (Vite) affiche une erreur Content-Security-Policy avec la directive connect-src, cela signifie que le navigateur bloque la requête vers votre serveur local pour des raisons de sécurité définies dans votre projet React.
Vous devez modifier la directive connect-src dans votre application cliente pour autoriser :
- L'IP de votre Z440.
- Les schémas
data:(si vous envoyez des images en Base64).
Modifiez votre balise Meta CSP ou votre configuration de headers pour inclure votre IP locale :
<!-- Exemple de directive connect-src mise à jour -->
<meta http-equiv="Content-Security-Policy" content="
default-src 'self';
connect-src 'self'
https://router.huggingface.co
https://*.supabase.co
http://your-internal-ip:8000
data:;
...
">Tip
Si vous utilisez un framework comme Supabase ou un template Hugging Face, vérifiez les fichiers de configuration (comme vercel.json, netlify.toml ou les réglages de headers dans votre code React) pour y ajouter l'adresse de votre serveur local.