Referência
POST /v1/images/generations
Crie imagens a partir de um prompt de texto, no formato da OpenAI: o images.generate do SDK funciona só trocando a URL base. As imagens voltam na resposta, e não guardamos nenhuma cópia.
Verificado em 6 de novembro de 2026
Criar uma imagem
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 | Bom para | Por imagem | Tamanho | Prompt mais longo |
|---|---|---|---|---|
| chroma | Um modelo aberto que lê prompts longos e detalhados. | $0.03 | Até 1280 pixels por lado, devolvida a 1,5x | 7.500 caracteres |
| z-image-turbo | O mais rápido aqui, para imagens fotográficas em volume. | $0.03 | Até 1280 pixels por lado | 7.500 caracteres |
| wai-illustrious | Anime e ilustração. | $0.03 | Até 1280 pixels por lado | 1.500 caracteres |
| krea-2-turbo | Mantém personagens conhecidos e um estilo da casa, em 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 caracteres |
GET /v1/models lista os mesmos preços e limites.
Requisição
| Campo | Recebe | O que faz |
|---|---|---|
model | Obrigatório | Um dos ids de modelo acima. |
prompt | Obrigatório | O que desenhar, enviado ao modelo como foi escrito. Acima do limite do modelo é recusado, nunca cortado. |
size | WIDTHxHEIGHT ou auto | O tamanho da imagem. O padrão é 1024x1024. Veja Tamanhos. |
aspect_ratio | 1:1, 3:2, 2:3, 4:3, 3:4, 4:5, 16:9, 9:16, 21:9 | Uma proporção, no lugar de size. Ela vence quando as duas são enviadas. |
n | 1 a 4 | Quantas imagens. Você paga pelas que voltam. |
response_format | b64_json ou url | O padrão é b64_json. url devolve uma URL data:, não um link para um arquivo guardado. |
output_format | webp, png ou jpeg | O padrão é webp. |
resolution | 1K ou 2K | Só krea-2-turbo, e o preço depende dela. |
seed | Um número inteiro | O mesmo seed e prompt geram uma imagem parecida. Com n, cada imagem soma um ao seed. |
negative_prompt | Texto | O que deixar de fora. A verificação de limites rígidos não o lê, e nem todo modelo o considera. |
steps | 1 a 50 | Mais passos demoram mais. Nem todo modelo usa. |
cfg_scale | Acima de 0, até 20 | Quão de perto seguir o prompt. Nem todo modelo usa. |
Qualquer outro campo, como quality, style ou user, é descartado e informado no cabeçalho x-nokeep-ignored. Um campo que carrega uma imagem, como image, é recusado com 400 unsupported_input: estes modelos trabalham só com texto.
Tamanhos
- Um lado pode ter no mínimo 256 pixels, e o lado mais longo no máximo três vezes o mais curto. Fora disso é
400 unsupported_size. - Um tamanho maior é ajustado para caber em 1280 pixels por lado, mantendo a proporção. O 1536x1024 da OpenAI é desenhado em 1280x848, por exemplo.
chromadevolve 1,5x os pixels em que desenha, sem custo extra, então 1024x1024 volta como 1536x1536.krea-2-turbodesenha em proporções nomeadas, então umsizevira a mais próxima.- O
sizeouaspect_ratioda resposta sempre diz o que você recebeu.
Resposta
{
"created": 1793960000,
"data": [
{
"b64_json": "UklGRk…"
}
],
"model": "z-image-turbo",
"output_format": "webp",
"size": "1024x1024",
"usage": {
"images": 1,
"nokeep_credits": 30
}
}Os cabeçalhos x-nokeep-credits e x-nokeep-balance dizem quanto a chamada custou e quanto sobrou, como no chat. Uma imagem é cobrada quando volta. Uma imagem com falha ou recusada não custa nada.
O que os modelos geram
Conteúdo adulto está no escopo nos modelos que o host marca como sem censura. z-image-turbo não é um deles, e foi o que mais se conteve nos nossos testes, então pode voltar mais suave do que o pedido.
Quatro limites rígidos continuam: conteúdo sexual envolvendo menores, conteúdo sexual de pessoas reais, dano em massa e alvo sendo uma pessoa real. Um prompt que cruza um deles recebe 422 hard_limit e não custa nada. A verificação lê o prompt; veja Limites rígidos. O host de um modelo também pode recusar uma requisição ou segurar um resultado: isso é 422 content_refused, também sem custo.
Limites e erros
Uma chave pode fazer 60 requisições de imagem por minuto, dentro de suas 120 requisições no total. Passando disso vem 429 rate_limited com Retry-After. A página de erros lista todos os códigos.
Para testar seu código sem gastar nada, envie sk-nokeep-test como chave. Ela roda todas as verificações acima e responde com uma imagem de um 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
}'