Unified Go library for image generation across multiple providers.
| Provider | Models | Generate | Edit | Variations | Upscale |
|---|---|---|---|---|---|
| OpenAI | DALL-E 2, DALL-E 3 | Yes | Yes | Yes | No |
| Fal AI | FLUX Pro/Dev/Schnell, SDXL | Yes | No | No | Yes |
go get github.com/plexusone/omniimagepackage main
import (
"context""fmt""log""github.com/plexusone/omniimage""github.com/plexusone/omniimage/provider"
)
funcmain() {
// Create client with OpenAI providerclient, err:=omniimage.NewClient(omniimage.ClientConfig{
Providers: []omniimage.ProviderConfig{
{
Provider: omniimage.ProviderNameOpenAI,
APIKey: "sk-...", // or use OPENAI_API_KEY env var
},
},
})
iferr!=nil {
log.Fatal(err)
}
deferclient.Close()
// Generate an imageresp, err:=client.Generate(context.Background(), &provider.GenerateRequest{
Model: omniimage.ModelDALLE3,
Prompt: "A serene mountain landscape at sunset",
Size: provider.Size1024x1024,
Quality: provider.QualityHD,
})
iferr!=nil {
log.Fatal(err)
}
fmt.Printf("Generated image: %s\n", resp.Images[0].URL)
}client, _:=omniimage.NewClient(omniimage.ClientConfig{
Providers: []omniimage.ProviderConfig{
{
Provider: omniimage.ProviderNameOpenAI,
APIKey: "sk-...", // or OPENAI_API_KEY env var
},
},
})
// DALL-E 3 - high quality, single imageresp, _:=client.Generate(ctx, &provider.GenerateRequest{
Model: omniimage.ModelDALLE3,
Prompt: "A futuristic cityscape",
Size: provider.Size1024x1024,
Quality: provider.QualityHD,
Style: provider.StyleVivid,
})
// DALL-E 2 - multiple images, edit, variationsresp, _:=client.Generate(ctx, &provider.GenerateRequest{
Model: omniimage.ModelDALLE2,
Prompt: "A cute robot",
N: 4,
Size: provider.Size512x512,
})client, _:=omniimage.NewClient(omniimage.ClientConfig{
Providers: []omniimage.ProviderConfig{
{
Provider: omniimage.ProviderNameFal,
APIKey: "...", // or FAL_KEY env var
},
},
})
// FLUX Pro - high qualityresp, _:=client.Generate(ctx, &provider.GenerateRequest{
Model: omniimage.ModelFluxPro,
Prompt: "A photorealistic portrait",
Size: provider.Size1024x1024,
})
// FLUX Schnell - fast generationresp, _:=client.Generate(ctx, &provider.GenerateRequest{
Model: omniimage.ModelFluxSchnell,
Prompt: "Abstract art",
N: 4,
})
// Upscale an imageupscaled, _:=client.Upscale(ctx, &provider.UpscaleRequest{
Model: omniimage.ModelClarityUpscaler,
Image: "https://example.com/image.png",
Scale: 2,
})| Field | Type | Description |
|---|---|---|
Model | string | Model ID (required) |
Prompt | string | Text description (required) |
NegativePrompt | string | What to avoid (Fal only) |
N | int | Number of images |
Size | ImageSize | Image dimensions |
Quality | ImageQuality | "standard" or "hd" |
Style | ImageStyle | "vivid" or "natural" |
Seed | *int64 | For reproducibility |
Steps | *int | Inference steps (Fal) |
GuidanceScale | *float64 | Prompt adherence (Fal) |
Size256x256,Size512x512,Size1024x1024Size1024x1792(portrait),Size1792x1024(landscape)Size768x1024,Size1024x768
OpenAI:
ModelDALLE3- DALL-E 3 (highest quality, n=1 only)ModelDALLE2- DALL-E 2 (edit, variations support)
Fal AI:
ModelFluxPro- FLUX Pro (high quality)ModelFluxDev- FLUX Dev (balanced)ModelFluxSchnell- FLUX Schnell (fast)ModelSDXL- Stable Diffusion XLModelClarityUpscaler- Image upscaling
| Variable | Provider | Description |
|---|---|---|
OPENAI_API_KEY | OpenAI | API key for DALL-E |
FAL_KEY | Fal AI | API key for Fal |
MIT