Generate banners
Describe the subject and message, give the size of the slot, such as an ad unit or an email header, and get a generated banner composed to fit that frame instead of cropped afterwards. Check any text inside it before publishing. You pay per banner, with no subscription.
Run it online
Run this on our servers with your account. Free tools run in your browser; this one bills your KIT balance per the price above.
A banner brief usually arrives as three lines of text and a deadline, not a finished design file.
Who actually needs a banner generated on demand
Ad platforms run dozens of creative sizes for a single campaign, marketplaces need a fresh promotional banner every time a sale starts, and SaaS products need a hero image whenever a new landing page ships. In every one of these cases, waiting on a designer for a routine banner is the wrong use of their time, and a static template reused endlessly starts to look stale.
Why ad and hero banners are a distinct generation problem
A banner is not just an image, it's an image constrained by a fixed aspect ratio and a job to do: hold attention in a small space and communicate one idea fast, usually with room implied for a headline or call to action. That combination of tight framing and communicative purpose is different from open-ended illustration, which is why treating banner generation as its own task, rather than a generic image request cropped afterward, tends to produce compositions that actually fit their slot instead of feeling cut off.
What to expect from generated banners
Results are original generated compositions built from your brief, not templates pulled from a stock library, so expect variation between requests even with similar briefs, and treat exact text rendering inside the banner as something to verify rather than assume is perfect. For campaigns where legal or brand-exact wording is required, generate the visual here and composite verified text on top in a separate, controlled step.
What you can do with it
Automated ad creative at campaign launch
An ad platform generates a full set of banner sizes automatically the moment a campaign is created, instead of routing each size to a designer.
Seasonal sale banners for a storefront
An ecommerce store generates a fresh promotional banner for its homepage every time a new sale or seasonal event starts.
Landing page hero images
A SaaS marketing team generates a matching hero banner for every new landing page variant it ships for testing.
Newsletter and email headers
A newsletter tool generates a header banner for each issue based on that issue's topic, keeping visuals fresh without manual design work.
FAQ
Is this free to use?
There's no free tier — free tiers get abused and slow everyone down. No subscription, no tokens, no invented credits, and a failed task is never charged.
Will the text on the banner be exactly what I typed?
Treat generated text inside the image as approximate; for legally required or brand-exact wording, generate the visual here and composite verified text separately.
What happens if a banner generation request fails?
The task retries automatically up to three times; if it still fails, you get a clear error and are never charged for the failed attempt.
Will two similar briefs give the same banner?
No. Each banner is an original composition built from your brief, not a template from a stock library, so expect variation between results even when the briefs are close.
What kinds of banners is it good for?
Routine ones that are needed often and fast, such as a full set of ad sizes when a campaign launches, a fresh banner for each store sale, a hero image for each new landing page or a header for every newsletter issue.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/image/banner \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"brief":"banner para una promocion de hosting, tonos azules"}'const res = await fetch("https://api.kit.forhosting.com/image/banner", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"brief": "banner para una promocion de hosting, tonos azules"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/banner",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"brief": "banner para una promocion de hosting, tonos azules"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/banner", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"brief":"banner para una promocion de hosting, tonos azules"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"brief":"banner para una promocion de hosting, tonos azules"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/banner", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"brief": "banner para una promocion de hosting, tonos azules"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.banner",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_mb | 15 |
max_megapixels | 12 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
422 | task_failed | The task failed after 3 retries. You are never charged for it. |
Technical notes
This endpoint turns that brief, subject, message and target dimensions, into a generated banner sized for the placement it needs to fill, without a design tool in the loop.
Who actually needs a banner generated on demand
This endpoint exists for that specific gap: routine banner production that needs to happen often, quickly, and without a human opening a design tool each time.
What you send and what comes back
You submit a brief describing the banner's subject and message, along with the target dimensions for the placement it's meant for, ad unit, hero section, email header, and the task returns a generated banner image sized to fit. Because the endpoint is asynchronous, you get a task_id right away and the finished banner arrives later by webhook or a signed link, so a request can be fired the moment a campaign or page is created without blocking anything downstream.
Fitting into a campaign pipeline
Because results are delivered asynchronously, this endpoint plugs naturally into ad and campaign tooling: a campaign is created, a banner request fires automatically in the target sizes needed, and each finished creative lands via webhook ready to attach to its placement. It pairs well with a resize step for any additional formats a platform requires, and with a text overlay step if a headline needs to be composited on afterward.
Technical questions
How do I generate a banner through the api?
Send a POST to /image/banner with a brief describing the subject and message plus your target dimensions; you get a task_id back and the banner arrives by webhook or a signed link.
Can I request a specific banner size?
Yes, you specify target dimensions in the request and the generated banner is composed to fit that aspect ratio and size.
How much does generating a banner cost?
$0.002 per request plus $0.0065 per image, billed only for banners the task actually completes.
Can I generate multiple ad sizes for one campaign?
Submit one request per target size in parallel and collect each finished banner as its webhook fires, which is the standard way to cover a full ad size set.
How is this different from the general text to image endpoint?
This endpoint is tuned specifically for banner composition, fixed aspect ratios and layouts that leave room for a message, rather than open-ended illustration.