Référence
POST /v1/images/generations
Créez des images à partir d’un prompt texte, au format OpenAI : le images.generate du SDK fonctionne en changeant seulement l’URL de base. Les images reviennent dans la réponse, et nous n’en gardons aucune copie.
Vérifié le 6 novembre 2026
Créer une image
import base64
import os
from openai import OpenAI
client = OpenAI(
base_url="https://nokeep.ai/v1",
api_key=os.environ["NOKEEP_API_KEY"],
)
result = client.images.generate(
model="z-image-turbo",
prompt="A lighthouse on a rocky coast at dusk",
size="1024x1024",
)
with open("picture.webp", "wb") as f:
f.write(base64.b64decode(result.data[0].b64_json))Modèles
| Modèle | Pour | Par image | Taille | Prompt le plus long |
|---|---|---|---|---|
| chroma | Un modèle ouvert qui lit de longs prompts détaillés. | 0,03 $ | Jusqu’à 1280 pixels de côté, renvoyée à 1,5x | 7 500 caractères |
| z-image-turbo | Le plus rapide ici, pour des images photographiques en volume. | 0,03 $ | Jusqu’à 1280 pixels de côté | 7 500 caractères |
| wai-illustrious | Anime et illustration. | 0,03 $ | Jusqu’à 1280 pixels de côté | 1 500 caractères |
| krea-2-turbo | Tient les personnages connus et un style maison, en 1K ou 2K. | 0,08 $ (1K), 0,12 $ (2K) | 1:1, 3:2, 16:9, 21:9, 9:16, 2:3, 3:4, 4:5 | 5 000 caractères |
GET /v1/models affiche les mêmes prix et limites.
Requête
| Champ | Valeur attendue | Ce qu’il fait |
|---|---|---|
model | Obligatoire | L’un des identifiants de modèle ci-dessus. |
prompt | Obligatoire | Ce qu’il faut dessiner, envoyé au modèle tel quel. Au-delà de la limite du modèle, la requête est refusée, jamais tronquée. |
size | WIDTHxHEIGHT ou auto | La taille de l’image. La valeur par défaut est 1024x1024. Voir Tailles. |
aspect_ratio | 1:1, 3:2, 2:3, 4:3, 3:4, 4:5, 16:9, 9:16, 21:9 | Un format, à la place de size. Il l’emporte quand les deux sont envoyés. |
n | 1 à 4 | Le nombre d’images. Vous payez celles qui reviennent. |
response_format | b64_json ou url | La valeur par défaut est b64_json. url renvoie une URL data:, et non un lien vers un fichier stocké. |
output_format | webp, png ou jpeg | La valeur par défaut est webp. |
resolution | 1K ou 2K | krea-2-turbo uniquement, et c’est lui qui fixe le prix. |
seed | Un nombre entier | La même graine et le même prompt donnent une image proche. Avec n, chaque image ajoute un à la graine. |
negative_prompt | Texte | Ce qu’il faut éviter. La vérification des limites strictes ne le lit pas, et tous les modèles n’en tiennent pas compte. |
steps | 1 à 50 | Plus d’étapes prennent plus de temps. Tous les modèles ne l’utilisent pas. |
cfg_scale | Supérieur à 0, jusqu’à 20 | Le degré de fidélité au prompt. Tous les modèles ne l’utilisent pas. |
Tout autre champ, comme quality, style ou user, est ignoré et nommé dans l’en-tête x-nokeep-ignored. Un champ qui transporte une image, comme image, est refusé avec 400 unsupported_input : ces modèles travaillent à partir de texte seulement.
Tailles
- Un côté doit faire au moins 256 pixels, et le côté le plus long ne doit pas dépasser trois fois le plus court. Au-delà, c’est
400 unsupported_size. - Une taille plus grande est ajustée pour tenir dans 1280 pixels de côté, en gardant ses proportions. Le 1536x1024 d’OpenAI est dessiné en 1280x848, par exemple.
chromarenvoie 1,5x les pixels qu’il dessine, sans surcoût : 1024x1024 revient en 1536x1536.krea-2-turbodessine selon des formats nommés : unesizedevient le format le plus proche.- Le
sizeou l’aspect_ratiode la réponse indique toujours ce que vous avez obtenu.
Réponse
{
"created": 1793960000,
"data": [
{
"b64_json": "UklGRk…"
}
],
"model": "z-image-turbo",
"output_format": "webp",
"size": "1024x1024",
"usage": {
"images": 1,
"nokeep_credits": 30
}
}Les en-têtes x-nokeep-credits et x-nokeep-balance indiquent ce que l’appel a coûté et ce qui reste, comme sur chat. Une image est facturée quand elle revient. Une image en échec ou refusée ne coûte rien.
Ce que les modèles produisent
Le contenu adulte est dans le périmètre sur les modèles que l’hébergeur marque comme non censurés. z-image-turbo n’en fait pas partie, et c’est lui qui a le plus retenu dans nos vérifications : il peut donc revenir plus doux que demandé.
Quatre limites strictes restent : contenu sexuel impliquant des mineurs, contenu sexuel de personnes réelles, dommages de masse et viser une personne réelle. Un prompt qui en franchit une reçoit 422 hard_limit et ne coûte rien. La vérification lit le prompt ; voir Limites strictes. L’hébergeur d’un modèle peut aussi refuser une requête ou retenir un résultat : c’est 422 content_refused, également gratuit.
Limites et erreurs
Une clé peut faire 60 requêtes d’image par minute, dans sa limite de 120 requêtes au total. Au-delà, c’est 429 rate_limited avec Retry-After. La page des erreurs liste tous les codes.
Pour tester votre code sans rien dépenser, envoyez sk-nokeep-test comme clé. Elle exécute toutes les vérifications ci-dessus et répond par une image d’un pixel.
curl https://nokeep.ai/v1/images/generations \
-H "Authorization: Bearer $NOKEEP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "chroma",
"prompt": "A lighthouse on a rocky coast at dusk",
"n": 2,
"aspect_ratio": "16:9",
"output_format": "png",
"seed": 42
}'