---
title: "New banners in the design of a banner you already have"
method: POST
path: "/v1/banner/clone"
tags: ["Banners"]
---

# New banners in the design of a banner you already have

`POST /v1/banner/clone`

## Request

- Base URL: `https://apihub.co.il`
- URL: `https://apihub.co.il/v1/banner/clone`
- Auth: HTTP bearer

Send one banner whose design you love (`reference` — an ad you made, or one you liked) and what you need now (`brief`), and get new banners that look like the same designer made them: the same layout, type, colours, decorations and photo style, with your new words, photo and offer. Several at once: `variants` (one banner per offer — three products, three sales) or `count` (different angles of one brief), each in every size of `formats` (1:1, 4:5, 9:16 story, 16:9 web; the first size is drawn from the reference, the others from that finished first one). How it works: an art director (Gemini 3.1 Pro) studies the reference and writes every banner's exact words — prices, numbers, dates and places ONLY from your brief, never invented — the photo, the colours (yours with `brand_id`, or the business's own) and the props; the picture model (Nano Banana Pro, or Nano Banana 2.1 with `quality: "fast"`) draws the whole ad, words included; then every picture is READ BACK by a second model and corrected until it says exactly what was planned (a misspelled word, a wrong figure, a copied word of the reference, a broken hand), a few rounds at most — a picture still not exact is delivered with a warning naming what is off. Your photos (`images`) are used as the real subject. Your logo (`logo_url`, or the brand's) is never drawn by the model: the design leaves a calm corner and the real file is laid there on a small white badge. Every banner comes with a ready caption and at most 5 hashtags. Asynchronous: the call answers 202; poll GET /v1/executions/{id} — `output.progress` counts the finished pictures, and `output.banners[].pictures[]` holds the files (JPEG, about 2K). The files are kept 24 hours. The price is the real cost of what ran (the director, each picture and correction, each read-back) times the standard markup; the estimate is the worst case (every correction round used) and is what is reserved.

**Billing:** Real cost of the run × the standard markup: the director, each picture and correction, each read-back — per picture delivered · **Rate limit:** 6/min · **Asynchronous**

## Headers

- `Idempotency-Key` string
- `X-Tag` string
- `x-wait-ms` integer

## Request body

- object
  - `brief` string: What the new banner is for, in your words: the business, the offer, the price, the place, the gift, who it is for. Prices, numbers and places come ONLY from here (and from `variants`) — nothing is invented
  - `count` integer: Without `variants`: how many different banners to make from the one brief (each with its own headline angle and photo, the same facts)
  - `colors` 'auto' | 'reference': auto = the business's own colours where they differ from the reference (a brand's colours when there is one) · reference = keep the reference's colours exactly
  - `images` string[]: Your own photos to put in (the product, the place, a person) — they stay recognisable
  - `formats` string[]: The sizes of every banner: 1:1 (feed), 4:5 (feed, taller), 9:16 (story / reels), 16:9 (web / YouTube). The first is drawn from the reference, the others from that finished first one
  - `quality` 'best' | 'fast': best = Nano Banana Pro (the sharpest words and photos) · fast = Nano Banana 2.1 (about a third of the price)
  - `brand_id` string: A brand of yours (GET /v1/brands): its name, colours, tone and logo — `default` = your default brand
  - `language` 'he' | 'en'
  - `logo_url` string, uri: Your logo (PNG with transparency is best): the real file is laid on the corner the design leaves calm, on a small white badge — never drawn by the model
  - `variants` string[]: Several offers at once, each its own banner in the same design — e.g. three products or three sales. `brief` then holds what they share (the business, the place)
  - `reference` string, uri, required: The banner whose design you want (JPEG / PNG / WebP): an ad you made or liked. Its layout, type, colours, decorations and photo style are copied — never its words
  - `photo_direction` string: A line on what the photo should show (who, where, the mood)

## Response `200`

Completed (or 202 while processing)

- object
  - `id` string: Execution id — stable across internal retries; use it with GET /v1/executions/{id}
  - `status` 'pending' | 'processing' | 'completed' | 'partial' | 'failed' | 'cancelled' | 'timeout'
  - `operation` string
  - `tag` string, nullable: Your X-Tag, if sent
  - `created_at` string, date-time
  - `completed_at` string, date-time, nullable
  - `output` object: Operation result (see each operation). While a Studio render is processing: `stage` (queued · transcribing · downloading · preparing · cleaning_voice · mixing_audio · rendering · finishing), `phase` (the engine's: download · prepare · voice · audio · encode · qa · upload, or null), `progress` (a percent, 0–100) and `progress_fraction` (0–1), `eta_seconds` (seconds left, never below 0) and `estimate_seconds`
  - `error` string, nullable
  - `usage` object
    - `credits_charged` number, nullable
    - `credits_reserved` number
    - `estimated_credits` number
    - `cost_source` 'provider_reported' | 'calculated' | 'estimated' | 'null', nullable
    - `provider_usage` object, nullable: Normalised consumption, e.g. { VIDEO_SECOND: 22.4 }
  - `balance` object
    - `available` number
    - `reserved` number

## Other responses

- `202`: Processing — poll GET /v1/executions/{id}
- `400`: Invalid input
- `402`: Insufficient credits / project budget
- `404`: Resource not found (or not yours)
- `429`: Rate limited
- `503`: Service temporarily paused

---

[API](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai.md) · [All operations](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/llms.txt) · [OpenAPI document](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/revisions/a8caa42835ce?raw)
