{"id":"banner-clone","kind":"banner","name":{"he":"שכפול הבאנר שלכם","en":"Clone your banner"},"one_line":{"he":"שולחים באנר אחד שאוהבים ומה צריך עכשיו, ומקבלים באנרים חדשים שנראים כאילו אותו מעצב עשה אותם: הטקסט שלכם, המבצע שלכם, כל הגדלים","en":"Send one banner you love and what you need now: new banners that look like the same designer made them — your words, your offer, every size"},"listed":true,"version":"1.0","updated":"2026-10-09","when_to_use":["The customer shows an ad they love (theirs or one they liked) and wants new ones like it: another offer, several products at once, or every size (feed, story, web).","A whole set of banners in one design: `variants` (one per offer) × `formats`."],"when_not_to_use":["There is no banner to start from: a banner style (/skills/banner.md) designs one from the brief.","The customer wants a video: an animated banner style fits better."],"example":{"video_url":null,"image_url":"https://media.apihub.co.il/lookbook/examples/banner/clone-gallery/b1-1x1.jpg","credits":86,"seconds":196},"preview":null,"price":{"unit":"banner","from":82,"to":143,"note":"per picture — what the real examples took, every correction and read-back included"},"inputs":[{"name":"reference","type":"image","required":true,"limits":"JPEG / PNG / WebP","notes":"the banner whose design is copied — never its words"},{"name":"brief","type":"text","required":true,"limits":null,"notes":"the business and the offer in the customer's words: what, the price, a gift, the place, who it is for — prices, gifts, numbers and places are taken only from here"},{"name":"variants · count · formats","type":"json","required":false,"limits":"at most 12 pictures a call","notes":"several offers (one banner each) or angles, in 1:1 · 4:5 · 9:16 · 16:9"},{"name":"images · logo_url · brand_id","type":"images","required":false,"limits":null,"notes":"the customer's own photos; the real logo is laid on a calm corner, never drawn"}],"outputs":[{"name":"output.banners[].pictures[]","type":"image","required":true,"limits":"JPEG about 2K, each with `exact`","notes":"deleted after 24 hours: download them"},{"name":"output.banners[].caption · hashtags","type":"text","required":true,"limits":"at most 5 hashtags","notes":null},{"name":"cost","type":"number","required":true,"limits":null,"notes":"GET /v1/usage?tag=<job name> → totals.credits: quote this, not the estimate"}],"steps":[{"method":"POST","path":"/v1/banner/clone/estimate","what":"The price (the same body) — the worst case, every correction round","body":{"reference":"<a link to the banner whose design you want>","brief":"<the business and the offer, in the customer's words>","formats":["1:1","9:16"],"quality":"best","language":"he"},"async":false,"optional":false},{"method":"POST","path":"/v1/banner/clone","what":"The banners in the reference's design","body":{"reference":"<a link to the banner whose design you want>","brief":"<the business and the offer, in the customer's words>","formats":["1:1","9:16"],"quality":"best","language":"he"},"async":true,"optional":false},{"method":"GET","path":"/v1/executions/{id}","what":"Poll a call that answered processing until it is completed (the file is output.url)","body":null,"async":false,"optional":false},{"method":"GET","path":"/v1/usage","what":"?tag=<job name>: what the whole job cost — quote it to the customer","body":null,"async":false,"optional":false}],"rules":["Show the customer the price (POST <path>/estimate with the same body, or the price above) and wait for their OK before any paid call.","Send Idempotency-Key: <job>-<step> on every POST. After a timeout send the same call with the SAME key — you get the same job back, never a second charge.","A long call answers status processing: poll GET /v1/executions/{id} every 5–10 s (or send x-wait-ms, up to 90000). Never send the job again to see whether it finished.","Send the same X-Tag: <job name> on every call of one job; GET /v1/usage?tag=<job name> is then what it really cost.","Prices, numbers, dates and places come ONLY from the customer's brief; the reference's words are never copied.","Publish, post or send only when the customer asked for exactly that — never on your own."],"common_errors":[{"code":"invalid_input","why":"400: a field is missing, misspelled or out of range — the message names it","fix":"Fix exactly that field and send again; send only the fields the recipe or the docs show."},{"code":"unauthorized","why":"401: the API key is missing, wrong or revoked","fix":"Ask the customer for a valid key (keys are made at /api-keys); never print it back."},{"code":"insufficient_credits","why":"402: the balance does not cover the estimate (details.required_credits)","fix":"Tell the customer the price and that the balance is short; do not retry until they top up."},{"code":"rate_limited","why":"429: too many calls a minute","fix":"Wait the retry-after seconds, then send the same call with the same Idempotency-Key."},{"code":"failed","why":"the execution's status is failed or timeout — nothing is charged for failed work","fix":"Read error.message, fix the input, and start again with a NEW Idempotency-Key."}],"quality_check":["Every picture's words are exactly the planned ones (`exact: true`); one that is not comes with a warning naming what is off.","The logo is the customer's own file, never drawn."],"tags":{"domain":"create","level":"ai","hebrew":true,"recommended":false,"new":true,"creator":false,"topics":["banner","marketing","ad","picture","clone"]},"links":{"recipe":"/skills/banner-clone.md","docs":"/docs?tool=banner","run":null}}