Skip to content

Images

Uncensored image generation API

Make pictures from text on named open models, with your prompt sent as written and no blur added. It speaks OpenAI’s format, and each picture comes back in the response, so there is no copy of it for us to keep.

Checked 6 November 2026

image models, each by name
4
an image, the cheapest
$0.03
pictures or prompts stored by us
0
hard limits, each a 422 that costs nothing
4

The models and what they cost

ModelGood forPer imageSizeLongest prompt
chromaAn open model that reads long, detailed prompts.$0.03Up to 1280 pixels a side, returned at 1.5x7,500 characters
z-image-turboThe fastest here, for photographic pictures at volume.$0.03Up to 1280 pixels a side7,500 characters
wai-illustriousAnime and illustration.$0.03Up to 1280 pixels a side1,500 characters
krea-2-turboHolds known characters and a house style, at 1K or 2K.$0.08 (1K), $0.12 (2K)1:1, 3:2, 16:9, 21:9, 9:16, 2:3, 3:4, 4:55,000 characters

Paid from prepaid credits: 1,000 credits are $1, from $5, and they never expire. A failed or refused picture costs nothing.

Make a picture

Any OpenAI client works with its base URL set to https://nokeep.ai/v1. Send sk-nokeep-test as the key to try the request free.

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="chroma",
    prompt="A portrait photograph of a woman in her thirties, window light",
    size="1024x1024",
)

with open("picture.webp", "wb") as f:
    f.write(base64.b64decode(result.data[0].b64_json))

Every field is in the reference.

What uncensored means here

  • No blur and no added prompt. The safety blur is off, and your prompt goes to the model as you wrote it.
  • Adult content is in scope on the models the host marks uncensored. In our checks on 6 November 2026, adult prompts came back unblurred on all four, and z-image-turbo, which isn’t marked uncensored, held back the most.
  • A model’s host can still refuse. That is a 422 content_refused error that costs nothing, never a quietly different picture.

Four hard limits stay: sexual content involving minors, sexual content of real people, mass-casualty harm and targeting a real person. A prompt that crosses one gets 422 hard_limit and costs nothing. The rules are in the terms and Hard limits.

Text to image only

These routes take a prompt and nothing else. A request with a picture in it is refused, which also rules out editing a photo of a real person. To send pictures for a model to read, use chat.

What is kept

Pictures come back as base64 in the response, not as a link to a file on a server. The models run on a private tier that stores no prompts or results. We keep one row of counts per call for billing: key, model, credits, status and time. What we keep has the details.

Questions

Does it work with the OpenAI SDK?

Yes. Set the base URL and key, and call images.generate as usual. We return b64_json. If you ask for response_format: "url", you get a data: URL, because there is no stored file to link to.

Which model should I start with?

z-image-turbo is the fastest for general pictures, chroma for adult photographs and long prompts, wai-illustrious for anime, and krea-2-turbo for known characters or 2K.

How fast is it?

About 3 to 7 seconds a picture in our checks on 6 November 2026, and about 13 seconds at 2K.

Can I edit a photo or use a reference image?

No. These routes are text only, so a photo of a real person can’t be turned into something they never agreed to.

Do you keep my prompts or pictures?

No. We keep a row of counts for billing, never the prompt or the picture. See What we keep.