Skip to content

v0.1.0

Release Date: 2026-06-29

Initial release of OmniImage, a unified Go library for AI image generation.

Highlights

  • Unified interface for multiple image generation providers
  • OpenAI support with GPT Image and DALL-E models
  • Fal AI support with FLUX and Stable Diffusion models
  • Comprehensive MkDocs documentation site

Added

Core Library

  • Provider interface with Generate, Edit, Variations, and Upscale operations
  • Request/response types for all operations
  • Image size, quality, and style enums
  • Structured error types with provider-specific details
  • Client with automatic provider factory

OpenAI Provider

  • Image generation with GPT Image 2, GPT Image 1, DALL-E 3, and DALL-E 2 models
  • Image editing with mask support (DALL-E 2)
  • Image variations (DALL-E 2)
  • Quality levels: standard and HD
  • Response formats: URL and base64

Fal AI Provider

  • Image generation with FLUX Pro, FLUX Dev, FLUX Schnell, and SDXL models
  • Image upscaling with Clarity Upscaler
  • Negative prompts for content exclusion
  • Seed control for reproducible generation
  • Inference steps and guidance scale parameters
  • Custom image dimensions via ProviderOptions

Documentation

  • Getting started guide
  • Provider comparison and selection guide
  • API reference for client, types, and providers
  • Best practices for prompts, performance, and security
  • Error handling patterns
  • Image size reference

Installation

go get github.com/plexusone/omniimage

Quick Start

package main

import (
    "context"
    "fmt"
    "log"

    "github.com/plexusone/omniimage"
    "github.com/plexusone/omniimage/provider"
)

func main() {
    client, err := omniimage.NewClient(omniimage.ClientConfig{
        Providers: []omniimage.ProviderConfig{
            {Provider: omniimage.ProviderNameOpenAI},
        },
    })
    if err != nil {
        log.Fatal(err)
    }
    defer client.Close()

    resp, err := client.Generate(context.Background(), &provider.GenerateRequest{
        Model:  omniimage.ModelGPTImage2,
        Prompt: "A sunset over the ocean",
        Size:   provider.Size1024x1024,
    })
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(resp.Images[0].URL)
}