Skip to content
IMAGE GENERATION

Image GenerationStandard & Uncensored.

Generate standard or uncensored images with the same Outrun key. Start in Playground or connect your own app.

Before you start

Have your API key and some Outrun credit ready. Keep your key private.

Optional setup helperUse an AI assistant to walk through these steps

Copy the setup instructions into an AI assistant you already use. Review any file changes it suggests before allowing them.

Enter your API key directly in the app or local settings. Keep it out of the assistant’s chat.

Connection settingsShow
Connection settings
Base URL: https://api.outrun.to/v1
Images endpoint: https://api.outrun.to/v1/images/generations
Standard model ID: gemini-3-pro-image
Uncensored model ID: vision-image-uncensored

Get your key from Outrun → API keys and enter it privately in the app or local settings. A returned image confirms the connection. Generation uses credit; check Activity before retrying.

Setup Steps

  1. 1
    Choose where to generate

    For the quickest start, open Playground and select Images. In another app, choose a custom OpenAI-compatible Images provider, set the base URL below and enter your Outrun key in its API key field. The app must support image generation, not only chat completions.

  2. 2
    Choose an image model

    For standard images, start with gemini-3-pro-image. For uncensored text-to-image, start with vision-image-uncensored. Expand the model lists below to copy an exact ID. Seedream Edit needs a reference image and an app that supports its edit inputs.

  3. 3
    Generate one image

    Describe the image and generate once. Each generated image uses Outrun credit. If you are using the optional AI helper, let it prepare the script first; generate only when you ask it to.

  4. 4
    View or save the result

    Download the image in your app or use the Python example to save it locally. Responses can contain base64 image data or a private image URL. If the request is interrupted or uncertain, check Activity before generating again.

Standard image model IDsShow

Use any of these with the text-to-image examples below.

Nano Banana Pro / Gemini 3 Pro Image

gemini-3-pro-image

Nano Banana / Gemini 3.1 Flash Image

gemini-3.1-flash-image

GPT Image 2

gpt-image-2

Grok Imagine Image

grok-imagine-image
Uncensored image model IDsShow

Start with Vision Image Uncensored. Use the same API key, base URL and Images endpoint.

Vision Image Uncensored

vision-image-uncensored

Chroma Uncensored

chroma-uncensored

Anime Image Uncensored

anime-image-uncensored

Lustify SDXL Uncensored

lustify-sdxl-uncensored

Vision Pro Image Uncensored

vision-pro-image-uncensored
Uncensored image editingShow

Seedream requires a reference image. Qwen accepts an optional reference image for editing; without one it generates a new image. In Playground, Qwen uses 1K resolution at $0.075/image.

Seedream 5.0 Lite Edit Uncensored

seedream-5.0-lite-edit-uncensored

Qwen Image 2.1 Uncensored

qwen-image-2.1-uncensored
Manual settings and examplesShow
Install Command
pip install openai
macOS / Linux · key for scripts
# For scripts and the cURL test (replace KEY with your own key)
export OUTRUN_API_KEY="KEY"

Replace KEY with your own key only in your local app, editor or terminal. Never send that key to an AI chat. Copy one command block at a time.

Configuration Template

Config Python
# Python (pip install openai). Enter your key locally as OUTRUN_API_KEY.
import base64, os
from pathlib import Path
from urllib.parse import urlsplit
from urllib.request import urlopen
from openai import OpenAI

client = OpenAI(api_key=os.environ["OUTRUN_API_KEY"], base_url="https://api.outrun.to/v1", max_retries=0)
result = client.images.generate(
    model="gemini-3-pro-image",  # uncensored: vision-image-uncensored or another text-to-image ID above
    prompt="A watercolor fox reading a book",
    n=1,
)
image = result.data[0]
if image.b64_json:
    content = base64.b64decode(image.b64_json)
elif image.url:
    url = urlsplit(image.url)
    if url.scheme != "https" or url.hostname not in {"api.outrun.to", "outrun.to"} or url.username or url.password:
        raise RuntimeError("Use your app to open this image. Automatic downloads require an Outrun HTTPS media URL.")
    try:
        with urlopen(image.url, timeout=60) as response:
            content = response.read()
    except Exception:
        raise RuntimeError("Image download failed. Check Activity before generating again.") from None
else:
    raise RuntimeError("No image data returned. Check Activity before trying again.")
Path("image.png").write_bytes(content)
print("Saved image.png")
Optional: test with a script (uses credit)Show
Test cURL
curl https://api.outrun.to/v1/images/generations \
  -H "Authorization: Bearer $OUTRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"vision-image-uncensored","prompt":"A watercolor fox reading a book","n":1}' \
  --output image-response.json
# The JSON contains base64 data or a private image URL. Keep this file private.
# The Python example handles both formats and saves image.png.

If something goes wrong

Key missing or rejected (401)

Copy your current key from API keys. Paste it only into the app’s key field or your local key variable, then save and reopen the app.

Not enough available credit (402)

Check Balance and the key’s spending cap. Another request may have temporarily reserved credit; read the message before adding funds.

Wrong URL, model or limit (400/404)

Use the exact model ID from the lists above. Your app must support the Images API. The base URL ends in /v1; the full request endpoint ends in /v1/images/generations. An edit model also needs a reference image and supported edit inputs.

Busy or rate limited (429)

Wait for the active request to finish or the rate limit to reset. Avoid repeatedly submitting the same request.

Interrupted request or uncertain charge

Check Activity first. Keep the request ID for support; never include your key in a message or screenshot.

Model choices and service notes

Standard and uncensored images use the same Outrun key and POST /v1/images/generations. Use an app with a custom OpenAI-compatible Images provider; a chat-only provider cannot call this endpoint. Model IDs are exact and lowercase. Check Models & Pricing for rates and current availability. Generated images use Outrun credit. Check Activity before retrying an interrupted or uncertain request; do not automatically repeat it. Qwen Image 2.1 supports input.image_urls and input.resolution (1K or 2K). For video, Wan 3.0 Video Uncensored uses /v1/videos with seconds (2–30), resolution (480p, 720p or 1080p), and a text prompt.

Contact @outrunsupport