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
| Modelo | Ideal para | Por imagen | Tamaño | Prompt más largo |
|---|---|---|---|---|
| chroma | Un modelo abierto que lee prompts largos y detallados. | $0.03 | Hasta 1280 píxeles por lado, devuelta a 1.5x | 7,500 caracteres |
| z-image-turbo | El más rápido aquí, para imágenes fotográficas en volumen. | $0.03 | Hasta 1280 píxeles por lado | 7,500 caracteres |
| wai-illustrious | Anime e ilustración. | $0.03 | Hasta 1280 píxeles por lado | 1,500 caracteres |
| krea-2-turbo | Mantiene 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:5 | 5,000 caracteres |
GET /v1/models muestra los mismos precios y límites.
Solicitud
| Campo | Recibe | Qué hace |
|---|---|---|
model | Obligatorio | Uno de los ids de modelo de arriba. |
prompt | Obligatorio | Lo que se dibuja, enviado al modelo tal cual. Si supera el límite del modelo se rechaza, nunca se corta. |
size | WIDTHxHEIGHT o auto | El tamaño de la imagen. El valor por defecto es 1024x1024. Ver Tamaños. |
aspect_ratio | 1:1, 3:2, 2:3, 4:3, 3:4, 4:5, 16:9, 9:16, 21:9 | Una proporción, en lugar de size. Gana cuando se envían los dos. |
n | De 1 a 4 | Cuántas imágenes. Pagas por las que llegan. |
response_format | b64_json o url | El valor por defecto es b64_json. url devuelve una URL data:, no un enlace a un archivo guardado. |
output_format | webp, png o jpeg | El valor por defecto es webp. |
resolution | 1K o 2K | Solo para krea-2-turbo, y es lo que define su precio. |
seed | Un número entero | La misma semilla y el mismo prompt dan una imagen parecida. Con n, cada imagen suma uno a la semilla. |
negative_prompt | Texto | Lo que se quiere excluir. La comprobación de límites no lo lee, y no todos los modelos lo tienen en cuenta. |
steps | De 1 a 50 | Más pasos tardan más. No todos los modelos lo usan. |
cfg_scale | Mayor que 0, hasta 20 | Qué 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.
chromadevuelve 1.5x los píxeles que dibuja, sin costo extra, así que 1024x1024 llega como 1536x1536.krea-2-turbodibuja en formas con nombre, así que unsizese convierte en la forma más cercana.- El
sizeoaspect_ratiode la respuesta siempre indica lo que recibiste.
Respuesta
{
"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 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
}'