Skip to main content

Generate images from Python through Codex OAuth Responses.

Project description

codex-image-gen hero image

codex-image-gen

Generate images from Python through Codex OAuth Responses

English · 한국어

Tests Release License Python Model Dependencies


codex-image-gen is a tiny, dependency-clean Python library for generating high-quality images through Codex OAuth and the Responses API image_generation tool.

It uses your existing Codex login from ~/.codex/auth.json, sends a raw Responses payload to the Codex OAuth bridge, and returns Python dataclasses with decoded image bytes and metadata. It does not use OPENAI_API_KEY.

Demo

Generated app icon demo

Generated with codex-image-gen + gpt-image-2.

Quick Start

codex-image-gen quick start code card

uv add codex-image-gen

# or
pip install codex-image-gen
from pathlib import Path

from codex_image_gen import generate_image

result = generate_image(
    "A serene mountain landscape with a lake and pine trees, sunset light",
    size="1024x1024",
    output_format="png",
)

image = result.images[0]
Path("mountain.png").write_bytes(image.data)
print("saved:", image.mime_type, len(image.data), "bytes")

That's it. Your image is saved locally.

Features

codex-image-gen workflow diagram

High-quality images
Powered by gpt-image-2 through Codex OAuth Responses.
Multiple input types
Use local paths, URLs, data URLs, file IDs, and detail mappings.
Robust and reliable
Clear exceptions for OAuth bridge failures, invalid JSON, missing image results, and bad base64.
Focused parameter surface
Forward the gpt-image-2 options used by the Codex bridge.
Typed results
Frozen dataclasses with image bytes, MIME type, response ID, call ID, revised prompt, and partial images.
Zero heavy deps
Runtime uses only the Python standard library.

API Highlights

generate_image(
    prompt: str,
    *,
    images=None,
    model="gpt-5.5",
    size="auto",
    output_format="png",
    output_compression=None,
    background="auto",
    input_image_mask=None,
    moderation=None,
    partial_images=None,
    reasoning_effort=None,
    reasoning_summary=None,
    text_verbosity=None,
    instructions=None,
    timeout=300,
    oauth_base_url="https://chatgpt.com/backend-api/codex",
    auth_file=None,
)
  • Simple, composable function API.
  • Rich result objects with images, metadata, raw response data, and optional partial images.
  • Reference images can be local files, remote URLs, data: URLs, or file IDs.
  • Masked edits use input_image_mask; pass a mask as a local path, URL, data: URL, or file ID. The mask must match the edited image's dimensions and format, stay under 50 MB, and include an alpha channel.
  • Size, output format, output compression, background, moderation, partial images, reasoning settings, text verbosity, timeouts, and custom instructions are first-class options.

Examples

Edit With References

result = generate_image(
    "Edit the reference image into a watercolor postcard",
    images=[
        "reference.png",
        {"file_id": "file_123", "detail": "high"},
    ],
    output_format="webp",
    output_compression=75,
)

Path("postcard.webp").write_bytes(result.images[0].data)

Masked Edits

codex-image-gen masked edit workflow

The diagram is a workflow illustration. For an actual masked edit, use an alpha-channel mask with the same dimensions and format as the image you edit.

result = generate_image(
    "Replace only the masked logo area with a white star",
    images=["product.png"],
    input_image_mask="mask_alpha.png",
    background="opaque",
)

Path("edited.png").write_bytes(result.images[0].data)

Partial Images

result = generate_image(
    "Create a polished app icon of a glass bottle",
    partial_images=2,
)

for partial in result.partial_images:
    Path(f"partial-{partial.index}.png").write_bytes(partial.data)

Partial images are collected after the streaming Responses request completes. This function does not expose live streaming callbacks.

Reasoning Settings

result = generate_image(
    "Create a detailed concept sheet for a modular desk lamp",
    reasoning_effort="high",
    reasoning_summary="auto",
    text_verbosity="low",
)

reasoning_effort supports none, minimal, low, medium, high, and xhigh. text_verbosity supports low, medium, and high.

Compatibility

This library intentionally exposes only the parameters used by the Codex Responses bridge.

  • The default mainline Responses model is gpt-5.5.
  • The image generation tool always sends model="gpt-image-2".
  • input_image_mask is exposed because it is documented for the Responses image_generation tool. The library forwards your mask; it does not synthesize the required alpha channel.
  • background="transparent" is rejected before calling Codex.
  • input_fidelity is not exposed because gpt-image-2 rejects it.
  • previous_response_id and previous image_generation_call item references are not exposed. Use image bytes, local files, URLs, or file IDs for follow-up edits.

Development

git clone https://github.com/smturtle2/codex-image-gen.git
cd codex-image-gen
uv sync --dev
uv run ruff check .
uv run pytest
uv build

Project Links

Link Description
Documentation Full docs and guide
Examples Real-world usage snippets
Contributing Local development workflow
Issues Report bugs and request features
Discussions Ask questions
PyPI Published Python package
Release v0.2.1 Wheel and sdist artifacts

Release

v0.2.1 is available on PyPI and as a GitHub Release with wheel and sdist artifacts.

Install from PyPI:

uv add codex-image-gen

# or
pip install codex-image-gen

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

codex_image_gen-0.2.1.tar.gz (3.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

codex_image_gen-0.2.1-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file codex_image_gen-0.2.1.tar.gz.

File metadata

  • Download URL: codex_image_gen-0.2.1.tar.gz
  • Upload date:
  • Size: 3.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for codex_image_gen-0.2.1.tar.gz
Algorithm Hash digest
SHA256 b32a14eab6f945ab87e0d44389b6d4e61136aec5c184378656300337bca3fe80
MD5 18f1379fb28df7dc65260cf9cfa93592
BLAKE2b-256 ff2af85a482cec6ee0a13665ccdc1a6d8c97917eaae32db33f6c00be8cc534e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for codex_image_gen-0.2.1.tar.gz:

Publisher: workflow.yml on smturtle2/codex-image-gen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file codex_image_gen-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for codex_image_gen-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6650794e83d5f959b92b0f81c7c0266faf6a566942db00ec2ed2aa22ef63d33d
MD5 b0ffca5d20fa1f3a5c9dee780d527896
BLAKE2b-256 19fac8398c53a4cac34dc0dbb0c41bb301d81cdb4f78977fc05429020553ba2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for codex_image_gen-0.2.1-py3-none-any.whl:

Publisher: workflow.yml on smturtle2/codex-image-gen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page