Aller au contenu
Toute la documentation

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èlePourPar imageTaillePrompt le plus long
chromaUn modèle ouvert qui lit de longs prompts détaillés.0,03 $Jusqu’à 1280 pixels de côté, renvoyée à 1,5x7 500 caractères
z-image-turboLe plus rapide ici, pour des images photographiques en volume.0,03 $Jusqu’à 1280 pixels de côté7 500 caractères
wai-illustriousAnime et illustration.0,03 $Jusqu’à 1280 pixels de côté1 500 caractères
krea-2-turboTient 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:55 000 caractères

GET /v1/models affiche les mêmes prix et limites.

Requête

ChampValeur attendueCe qu’il fait
modelObligatoireL’un des identifiants de modèle ci-dessus.
promptObligatoireCe 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.
sizeWIDTHxHEIGHT ou autoLa taille de l’image. La valeur par défaut est 1024x1024. Voir Tailles.
aspect_ratio1:1, 3:2, 2:3, 4:3, 3:4, 4:5, 16:9, 9:16, 21:9Un format, à la place de size. Il l’emporte quand les deux sont envoyés.
n1 à 4Le nombre d’images. Vous payez celles qui reviennent.
response_formatb64_json ou urlLa valeur par défaut est b64_json. url renvoie une URL data:, et non un lien vers un fichier stocké.
output_formatwebp, png ou jpegLa valeur par défaut est webp.
resolution1K ou 2Kkrea-2-turbo uniquement, et c’est lui qui fixe le prix.
seedUn nombre entierLa même graine et le même prompt donnent une image proche. Avec n, chaque image ajoute un à la graine.
negative_promptTexteCe qu’il faut éviter. La vérification des limites strictes ne le lit pas, et tous les modèles n’en tiennent pas compte.
steps1 à 50Plus d’étapes prennent plus de temps. Tous les modèles ne l’utilisent pas.
cfg_scaleSupérieur à 0, jusqu’à 20Le 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.
  • chroma renvoie 1,5x les pixels qu’il dessine, sans surcoût : 1024x1024 revient en 1536x1536.
  • krea-2-turbo dessine selon des formats nommés : une size devient le format le plus proche.
  • Le size ou l’aspect_ratio de la réponse indique toujours ce que vous avez obtenu.

Réponse

JSON
{
  "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
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
}'