Ir al contenido
Toda la documentación

Referencia

POST /v1/images/generations

Genera imágenes desde un prompt de texto, en el formato de OpenAI: images.generate del SDK funciona cambiando solo la URL base. Las imágenes llegan en la respuesta, y no guardamos ninguna copia.

Revisado el 6 de noviembre de 2026

Genera una imagen

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))

Modelos

ModeloIdeal paraPor imagenTamañoPrompt más largo
chromaUn modelo abierto que lee prompts largos y detallados.$0.03Hasta 1280 píxeles por lado, devuelta a 1.5x7,500 caracteres
z-image-turboEl más rápido aquí, para imágenes fotográficas en volumen.$0.03Hasta 1280 píxeles por lado7,500 caracteres
wai-illustriousAnime e ilustración.$0.03Hasta 1280 píxeles por lado1,500 caracteres
krea-2-turboMantiene personajes conocidos y un estilo de casa, en 1K o 2K.$0.08 (1K), $0.12 (2K)1:1, 3:2, 16:9, 21:9, 9:16, 2:3, 3:4, 4:55,000 caracteres

GET /v1/models muestra los mismos precios y límites.

Solicitud

CampoRecibeQué hace
modelObligatorioUno de los ids de modelo de arriba.
promptObligatorioLo que se dibuja, enviado al modelo tal cual. Si supera el límite del modelo se rechaza, nunca se corta.
sizeWIDTHxHEIGHT o autoEl tamaño de la imagen. El valor por defecto es 1024x1024. Ver Tamaños.
aspect_ratio1:1, 3:2, 2:3, 4:3, 3:4, 4:5, 16:9, 9:16, 21:9Una proporción, en lugar de size. Gana cuando se envían los dos.
nDe 1 a 4Cuántas imágenes. Pagas por las que llegan.
response_formatb64_json o urlEl valor por defecto es b64_json. url devuelve una URL data:, no un enlace a un archivo guardado.
output_formatwebp, png o jpegEl valor por defecto es webp.
resolution1K o 2KSolo para krea-2-turbo, y es lo que define su precio.
seedUn número enteroLa misma semilla y el mismo prompt dan una imagen parecida. Con n, cada imagen suma uno a la semilla.
negative_promptTextoLo que se quiere excluir. La comprobación de límites no lo lee, y no todos los modelos lo tienen en cuenta.
stepsDe 1 a 50Más pasos tardan más. No todos los modelos lo usan.
cfg_scaleMayor que 0, hasta 20Qué tan fielmente sigue el prompt. No todos los modelos lo usan.

Cualquier otro campo, como quality, style o user, se descarta y se nombra en el encabezado x-nokeep-ignored. Un campo que lleva una imagen, como image, se rechaza con 400 unsupported_input: estos modelos trabajan solo con texto.

Tamaños

  • Un lado puede medir al menos 256 píxeles, y el lado más largo no más de tres veces el más corto. Fuera de eso es 400 unsupported_size.
  • Un tamaño mayor se ajusta dentro de 1280 píxeles por lado, manteniendo su forma. Por ejemplo, el 1536x1024 de OpenAI se dibuja a 1280x848.
  • chroma devuelve 1.5x los píxeles que dibuja, sin costo extra, así que 1024x1024 llega como 1536x1536.
  • krea-2-turbo dibuja en formas con nombre, así que un size se convierte en la forma más cercana.
  • El size o aspect_ratio de la respuesta siempre indica lo que recibiste.

Respuesta

JSON
{
  "created": 1793960000,
  "data": [
    {
      "b64_json": "UklGRk…"
    }
  ],
  "model": "z-image-turbo",
  "output_format": "webp",
  "size": "1024x1024",
  "usage": {
    "images": 1,
    "nokeep_credits": 30
  }
}

Los encabezados x-nokeep-credits y x-nokeep-balance indican cuánto costó la llamada y cuánto queda, igual que en chat. Una imagen se cobra cuando llega. Una imagen fallida o rechazada no cuesta nada.

Lo que generan los modelos

El contenido para adultos está dentro del alcance en los modelos que el host marca como sin censura. z-image-turbo no es uno de ellos, y fue el que más se contuvo en nuestras pruebas, así que puede salir más suave de lo pedido.

Se mantienen cuatro límites estrictos: contenido sexual con menores, contenido sexual de personas reales, daño masivo y apuntar contra una persona real. Un prompt que cruza uno recibe 422 hard_limit y no cuesta nada. La comprobación lee el prompt; ver Límites estrictos. El host de un modelo también puede rechazar una solicitud o retener un resultado: eso es 422 content_refused, también gratis.

Límites y errores

Una clave puede hacer 60 solicitudes de imagen por minuto, dentro de sus 120 solicitudes en total. Pasado eso, 429 rate_limited con Retry-After. La página de errores lista cada código.

Para probar tu código sin gastar nada, envía sk-nokeep-test como clave. Ejecuta todas las comprobaciones de arriba y responde con una imagen de un píxel.

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
}'