<!-- https://zerolog.ch/docs/images · Docs / Media -->
# Image generation

Describe a picture and get one back. One image engine, three formats, a fixed price per image.

## Make an image

Open **Images** in the sidebar. Write what you want (up to 400 characters), pick a format and press **Generate image**. The button shows the price in CHF. It comes off your ZeroLog balance when the image is done. If generation fails, nothing is charged.

There is no model to choose. Every image comes from one engine, Flux, run by Infomaniak, and your description is sent to them. An image can't be edited: each request makes a new one.

***Square** The default shape.*

***Wide** Banners and backgrounds.*

***Tall** 1024 × 1792.*

## Keep it

- **Download** the file to your device.
- **To container** copies it into the container of one of your chats.
- **Delete** it whenever you like. Images are removed after 30 days anyway.

## Let the AI make images

Off by default. Switch on **Allow AI to generate and inspect images** on the Images page, or type `/image on` (`/image off` turns it off). The AI can then generate an image, look at it and copy it into the chat's container. Each image costs the same fixed price and counts against the chat's spending limit.

Limits: one image at a time per account, six per minute, and a daily cap for the whole service.

## What it costs

Each image has a fixed price, shown before you press the button. See [Cost](https://zerolog.ch/docs/cost).

## How an image request runs

Mermaid source of the diagram on this page:

```mermaid
%% Image generation: from a request to a stored image. Facts from server/images-core.js (take, start), images-router.js, delegation.js.
flowchart TB
  a["You: Images page<br/>description up to<br/>400 characters, one format"]
  b["The AI in a chat:<br/>generate_image, only if<br/>you switched it on"]

  subgraph SV["ZeroLog server"]
    c["1. Check the price you saw<br/>is current and your balance<br/>covers it"]
    d["2. Reserve the price<br/>on your balance<br/>(held, not charged yet)"]
    e["3. One engine makes<br/>the image: Flux via<br/>Infomaniak, one job<br/>per account"]:::hot
    f["4. Charge the price,<br/>store the image 30 days"]
  end

  x["Refused, nothing charged<br/>(price changed, balance<br/>too low, too many requests)"]
  r["Reservation released,<br/>nothing charged"]
  g["Download"]
  h["To container"]
  i["Delete any time"]

  a --> c
  b --> c
  c -->|ok| d
  c -->|not ok| x
  d --> e
  e -->|failed| r
  e -->|done| f
  f --> g
  f --> h
  f --> i

  classDef hot stroke:#8f7ac9
```
