## Create a generation `client.Generations.New(ctx, body) (*Generation, error)` **post** `/generations` Submit an image generation or edit job. Returns immediately with an opaque job ID to poll via GET /generations/{id}. ### Parameters - `body GenerationNewParams` - `Prompt param.Field[string]` Text prompt - `AspectRatio param.Field[GenerationNewParamsAspectRatio]` Output aspect ratio - `const GenerationNewParamsAspectRatio3_1 GenerationNewParamsAspectRatio = "3:1"` - `const GenerationNewParamsAspectRatio2_1 GenerationNewParamsAspectRatio = "2:1"` - `const GenerationNewParamsAspectRatio16_9 GenerationNewParamsAspectRatio = "16:9"` - `const GenerationNewParamsAspectRatio3_2 GenerationNewParamsAspectRatio = "3:2"` - `const GenerationNewParamsAspectRatio1_1 GenerationNewParamsAspectRatio = "1:1"` - `const GenerationNewParamsAspectRatio2_3 GenerationNewParamsAspectRatio = "2:3"` - `const GenerationNewParamsAspectRatio9_16 GenerationNewParamsAspectRatio = "9:16"` - `const GenerationNewParamsAspectRatio1_2 GenerationNewParamsAspectRatio = "1:2"` - `const GenerationNewParamsAspectRatio1_3 GenerationNewParamsAspectRatio = "1:3"` - `ImageRef param.Field[[]GenerationNewParamsImageRef]` Reference images for style/content guidance. Up to 9 for type 'image', up to 8 for type 'image_edit'. - `Data string` Base64-encoded image data - `MediaType string` MIME type (e.g. image/jpeg). Required with data. - `URL string` Publicly accessible image URL - `Model param.Field[Model]` Model identifier. `uni-1` is the default tier; `uni-1-max` produces higher-quality output than `uni-1` at a higher per-image price. Both models are available to all accounts — see Pricing for per-image rates. - `OutputFormat param.Field[GenerationNewParamsOutputFormat]` Output image format - `const GenerationNewParamsOutputFormatPng GenerationNewParamsOutputFormat = "png"` - `const GenerationNewParamsOutputFormatJpeg GenerationNewParamsOutputFormat = "jpeg"` - `Source param.Field[GenerationNewParamsSource]` Reference image for guided generation. Provide either url or inline base64 data (not both). - `Data string` Base64-encoded image data - `MediaType string` MIME type (e.g. image/jpeg). Required with data. - `URL string` Publicly accessible image URL - `Style param.Field[GenerationNewParamsStyle]` Style preset (auto, manga) - `const GenerationNewParamsStyleAuto GenerationNewParamsStyle = "auto"` - `const GenerationNewParamsStyleManga GenerationNewParamsStyle = "manga"` - `Type param.Field[GenerationNewParamsType]` The kind of generation to perform - `const GenerationNewParamsTypeImage GenerationNewParamsType = "image"` - `const GenerationNewParamsTypeImageEdit GenerationNewParamsType = "image_edit"` - `UserID param.Field[string]` Your end-user's stable opaque identifier (no PII). Forwarded to upstream model providers as their per-user tagging field so trust & safety violations can be attributed to a specific end-user rather than the whole API account. Also used for per-end-user usage breakdowns in /v1/usage. Strongly recommended for partner integrations. - `WebSearch param.Field[bool]` Enable web search grounding — the agent can search the web and download reference images before generating. ### Returns - `type Generation struct{…}` Generation status and output - `ID string` Generation identifier - `CreatedAt string` Creation timestamp - `Model Model` Model used - `const ModelUni1 Model = "uni-1"` - `const ModelUni1Max Model = "uni-1-max"` - `State GenerationState` Current state of the generation - `const GenerationStateQueued GenerationState = "queued"` - `const GenerationStateProcessing GenerationState = "processing"` - `const GenerationStateCompleted GenerationState = "completed"` - `const GenerationStateFailed GenerationState = "failed"` - `Type GenerationType` The kind of generation to perform - `const GenerationTypeImage GenerationType = "image"` - `const GenerationTypeImageEdit GenerationType = "image_edit"` - `FailureCode GenerationFailureCode` Machine-readable failure code for programmatic handling - `const GenerationFailureCodeContentModerated GenerationFailureCode = "content_moderated"` - `const GenerationFailureCodeGenerationFailed GenerationFailureCode = "generation_failed"` - `const GenerationFailureCodeBudgetExhausted GenerationFailureCode = "budget_exhausted"` - `const GenerationFailureCodeOutputNotFound GenerationFailureCode = "output_not_found"` - `const GenerationFailureCodeImageTooLarge GenerationFailureCode = "image_too_large"` - `const GenerationFailureCodeUnsupportedFormat GenerationFailureCode = "unsupported_format"` - `const GenerationFailureCodeCorruptInput GenerationFailureCode = "corrupt_input"` - `const GenerationFailureCodeInvalidRequest GenerationFailureCode = "invalid_request"` - `const GenerationFailureCodeRateLimited GenerationFailureCode = "rate_limited"` - `FailureReason string` Human-readable failure description - `Output []GenerationOutput` Generated outputs (populated on completion) - `Type string` Media type (e.g. image) - `URL string` Presigned URL (1hr expiry) ### Example ```go package main import ( "context" "fmt" "github.com/lumalabs/luma-agents-go" "github.com/lumalabs/luma-agents-go/option" ) func main() { client := lumaagents.NewClient( option.WithAuthToken("My Auth Token"), ) generation, err := client.Generations.New(context.TODO(), lumaagents.GenerationNewParams{ Prompt: lumaagents.F("A glass of iced coffee on a marble countertop, morning light streaming through a window"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", generation.ID) } ``` #### Response ```json { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "created_at": "created_at", "model": "uni-1", "state": "queued", "type": "image", "failure_code": "content_moderated", "failure_reason": "failure_reason", "output": [ { "type": "type", "url": "https://example.com" } ] } ```