Generate/edit images with Gemini 3.1 Flash Image Preview via OpenRouter. Use for image create/modify requests incl. edits. Supports text-to-image + image-to-image; 0.5K/1K/2K/4K; use --input-image.
1. --api-key argument (use if user provided key in chat)
INLINECODE9 environment variable
If neither is available, the script exits with an error message.
Preflight + Common Failures (fast fixes)
- Preflight:
- command -v uv (must exist)
- test -n "$OPENROUTER_API_KEY" (or pass --api-key)
- If editing: INLINECODE13
- Common failures:
- Error: No API key provided. → set OPENROUTER_API_KEY or pass --api-key
- Error loading input image: → wrong path / unreadable file; verify --input-image points to a real image
- "quota/permission/403" style API errors → wrong key, no access, or quota exceeded; try a different key/account
- Error: API request timed out → simplify the prompt or reduce resolution
Filename Generation
Generate filenames with the pattern: INLINECODE20
Format:{timestamp}-{descriptive-name}.png
- Timestamp: Current date/time in format yyyy-mm-dd-hh-mm-ss (24-hour format)
Name: Descriptive lowercase text with hyphens
Keep the descriptive part concise (1-5 words typically)
Use context from user's prompt or conversation
If unclear, use random identifier (e.g., x9k2, a7b3)
Examples:
- Prompt "A serene Japanese garden" → INLINECODE25
Prompt "sunset over mountains" → INLINECODE26
Prompt "create an image of a robot" → INLINECODE27
Unclear context → INLINECODE28
Image Editing
When the user wants to modify an existing image:
1. Check if they provide an image path or reference an image in the current directory
Use --input-image parameter with the path to the image
The prompt should contain editing instructions (e.g., "make the sky more dramatic", "remove the person", "change to cartoon style")
Common editing tasks: add/remove elements, change style, adjust colors, blur background, etc.
Prompt Handling
For generation: Pass user's image description as-is to --prompt. Only rework if clearly insufficient.
For editing: Pass editing instructions in --prompt (e.g., "add a rainbow in the sky", "make it look like a watercolor painting")
Preserve user's creative intent in both cases.
Prompt Templates (high hit-rate)
Use templates when the user is vague or when edits must be precise.