AI image generation
Generate images on demand from your app — mockups, hero art, avatars, OG images, and more
Overview
Your app can generate images using state-of-the-art models for product mockups, blog cover art, social media graphics, profile avatars, and more. Image jobs run asynchronously: your app submits a prompt, receives a job ID, and either polls or subscribes for the finished image.
What it supports
- Prompt-to-image generation — describe an image in plain text and get back a generated image stored in your app
- Configurable prompt styles — Pentoggle wraps each image channel in a prompt style (e.g., photorealistic, illustrated, flat icon) so generated images stay visually consistent
- Asynchronous jobs — generation runs in the background; your app polls or subscribes for completion so the UI stays responsive
- Activity dashboard — see recent jobs, their status, and cost-per-image inside the app's Settings tab
- Auto-storage — finished images land in a dedicated
generated-imagesstorage category and can be referenced anywhere in your app
Example prompts
"Add a 'Generate cover image' button on each blog post
that creates a hero image from the post title."
"Let users describe their dream product and generate three
photorealistic mockups they can choose from."
"Auto-generate a square OG image for every page on my
site using the page title and a brand-consistent style."Setup (none required)
Image generation is fully managed by Pentoggle. There's no provider account to create, no API key to paste, and no model to pick — the platform configures everything when you ask the agent to add image generation.
Fully managed: Image generation costs are metered as part of your normal usage — you can see per-job cost in the activity dashboard.
Image Generation settings
When your app uses image generation, an Image Generation card appears in your app's Settings tab. From there you can:
- View the configured image channel(s) — model, prompt style, size limits
- Preview a prompt style — see how a sample prompt is shaped before it's sent to the model
- Watch the activity dashboard — recent jobs, status, and cost-per-image
How it works
- Your app code (a button click, a scheduled task, etc.) calls the image-generation channel with a prompt and any options (size, count)
- Pentoggle wraps your prompt with the channel's configured style and submits the job to the underlying model provider
- A job record is created with status queued; your app receives the job ID immediately and updates its UI
- The model generates the image asynchronously; Pentoggle uploads the result to your app's
generated-imagesstorage category - The job status flips to complete with a URL to the stored image; your app picks it up via polling or a live subscription and renders it
- The job, prompt, and cost are recorded in the activity dashboard for later review
Where the images live
Generated images are uploaded automatically to a built-in generated-images storage category in your app's file storage. You can reference them by URL anywhere in your app, list previous generations, and clean up old ones — just like any other file in your storage.
Limitations
- Model is platform-managed — you can't pick a specific provider or model. Pentoggle chooses from a curated allowlist and rolls forward as better models ship
- Asynchronous only — there's no blocking generation; your app must handle the queued → complete transition
- Generation cost is metered — image generation consumes your app's live capacity, so high-volume usage will register on the usage dashboard
- Content policy applies — prompts that violate the underlying model's content policy will fail with a clear error; the agent can guide you on safer phrasing
Troubleshooting
- Job stuck in "queued" — check the activity dashboard for a model-provider error; transient failures are retried automatically
- Generated image doesn't match the prompt style — adjust the channel's style description in Settings, then ask the agent to "refine the image style" from chat for fuller control
- Image URL returns 404 — the image may still be uploading; wait for the job status to flip to complete, then re-fetch the URL
- Costs spiking unexpectedly — check the activity dashboard for high-volume callers (often a misconfigured loop) and rate-limit the calling code path