Créer des portraits
POST/images/edits
Crée des portraits avec PhotoMaker V2 à partir de 1 à 4 photos de visage et d'un prompt qui contient le mot déclencheur img juste après le sujet. Même clé et même crédit que le chat ; facturé à la seconde de génération.
BientôtOuverture prochaine : ce qui suit décrit le service tel qu'il fonctionnera.
https://evanesca.app/api/v1/images/editsOuvre au lancementBearer $EVANESCA_API_KEYAuthorizationstringrequisBearer suivi de votre clé, qui commence par sk-eva-.
Content-TypestringrequisMultipart, comme le contrat d'OpenAI — ou JSON, avec les photos en data URLs.
Corps de la requête
multipart/form-datamodelstringrequisPhotoMaker V2, de TencentARC.
promptstringrequis350 caractères au plus, avec le mot déclencheur img juste après le sujet : « a woman img as an astronaut ».
image[]fichierrequis1 à 4 photos de visage, JPEG ou PNG, un champ par photo.
imagestableau de chaînesDans un corps JSON, à la place d'image[] : les photos en data URLs base64.
nintegerCombien d'images créer.
sizestringLa taille de chaque image, en pixels.
Où l'appel tourne, ce qu'il coûte
Evanesca · au dossier
- Exécuté
- Infomaniak · Suisse
photomaker-v2
- Infomaniak · Suisse
- L'opérateur garde
Infomaniak annonce que les requêtes ne sont ni enregistrées ni utilisées pour entraîner des modèles (Infomaniak AI Tools).
- Coût
- 0,0092 € la seconde de génération, TVA comprise, arrondie à la seconde supérieure, une seconde au moins ; usage.generation_seconds est ce qui est facturé. Environ 5 secondes, soit environ 0,05 €, pour un portrait PhotoMaker V2 typique. Une requête refusée ne coûte rien.
- En-têtes de réponse
x-evanesca-operator: infomaniakx-evanesca-location: switzerland
Ce qui sort d'Evanesca
Le prompt et les photos de visage partent chez Infomaniak, en Suisse — hors de l'UE, sous décision d'adéquation de l'UE ; les images reviennent dans la réponse et Evanesca n'en conserve aucune. Les images portent des métadonnées IPTC qui les marquent comme générées par une IA (AI Act, art. 50(2)) — des métadonnées, pas un filigrane, qu'une capture d'écran ou un réencodage peut effacer (Images).
Une photo de visage est une donnée personnelle : n'envoyez que des photos que vous avez le droit d'utiliser. Les conditions interdisent l'image d'une personne réelle sans son consentement, et toute image sexuelle ou intime d'une personne réelle, même avec son consentement.
Erreurs
| Statut | type | Signification |
|---|---|---|
| 400 | invalid_ | Un prompt sans img ou de plus de 350 caractères, aucune photo ou plus de 4, un fichier ni JPEG ni PNG, n ou size hors limites — le champ param dit lequel (limites). |
| 401 | invalid_ | Pas de clé, une clé malformée, ou une clé révoquée. |
| 402 | insufficient_ | Votre crédit est à zéro ou en dessous. Rechargez pour continuer. |
| 404 | model_ | Identifiant inconnu, modèle qu'Evanesca ne sert pas, ou flux-schnell, servi par /images/generations. |
| 502 | upstream_ | L'opérateur est injoignable, a renvoyé une réponse illisible, ou a refusé le compte d'Evanesca elle-même. Votre clé n'est pas en cause : réessayez. |
Les autres erreurs d'opérateur vous parviennent avec son statut et son corps, et Retry-After quand il en envoie un (erreurs).
curl https://evanesca.app/api/v1/images/edits \
-H "Authorization: Bearer $EVANESCA_API_KEY" \
-F model=photomaker-v2 \
-F "prompt=a woman img as an astronaut" \
-F "image[]=@face-1.jpg" \
-F "image[]=@face-2.jpg"import os
import requests
res = requests.post(
"https://evanesca.app/api/v1/images/edits",
headers={"Authorization": f"Bearer {os.environ['EVANESCA_API_KEY']}"},
data={"model": "photomaker-v2", "prompt": "a woman img as an astronaut"},
files=[
("image[]", open("face-1.jpg", "rb")),
("image[]", open("face-2.jpg", "rb")),
],
)
print(res.status_code, res.json()["usage"])import { readFile } from "node:fs/promises";
const form = new FormData();
form.append("model", "photomaker-v2");
form.append("prompt", "a woman img as an astronaut");
for (const name of ["face-1.jpg", "face-2.jpg"]) {
form.append("image[]", new Blob([await readFile(name)], { type: "image/jpeg" }), name);
}
const res = await fetch("https://evanesca.app/api/v1/images/edits", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.EVANESCA_API_KEY}` },
body: form,
});
console.log(res.status, (await res.json()).usage);{
"created": 1791763200,
"model": "photomaker-v2",
"data": [{ "b64_json": "/9j/4AAQSkZJRgABAQ…" }],
"usage": { "generation_seconds": 5, "images": 1 }
}{
"error": {
"message": "\"photomaker-v2\" needs the trigger word \"img\" right after the subject in the prompt, e.g. \"a woman img as an astronaut\". Nothing was charged.",
"type": "invalid_request",
"param": "prompt"
}
}