ForHosting KIT · Text & AI

Ad copy

Every ad network enforces its own character count, and a headline that gets truncated mid-word loses the click before the offer is even read. This endpoint takes your product facts and returns multiple ready-to-paste variants pre-fitted to the limits you specify, so nothing gets cut off in review.

● StablePer request + per variant$0.003
Use it from WebAPIEmailApp soonTelegram soon

Run this on our servers with your account. Free tools run in your browser; this one bills your KIT balance per the price above.

Built for the person who writes fifty ad sets a week

Performance marketers running search and social campaigns don't need inspiration, they need volume: five headline angles, three description lengths, tested tones, all before lunch. Doing that by hand means constantly recounting characters and rewriting the same benefit three different ways. This endpoint accepts your product description, audience and tone, then returns a set of variants already measured against the limit you pass in, so the output goes straight into the ad builder instead of a spreadsheet of edits.

What you send and what comes back

A request includes the product or offer, the audience, a tone (direct, playful, technical, whatever fits the brand) and the character limits for headline and description. The response is a JSON array of variants, each one already within bounds, with no need to trim afterward. Because the task runs asynchronously, you get a task_id immediately and the finished copy arrives by signed webhook, or you can pull it from a signed link that stays valid for 24 hours.

Character limits exist for a reason

Search and social ad formats settled on tight character counts because ad units share screen space with organic results and other ads; a longer headline simply doesn't render. Those limits have shifted over the years as platforms redesigned their feeds, which is exactly why hardcoding a number into a script is fragile. Passing the limit as a parameter on every request means your integration adapts the moment a network changes its rules, without a code deploy.

Where it sits in a pipeline

Most teams call this endpoint after a product feed update or a new landing page goes live, generating fresh variants automatically instead of waiting on a copywriter's queue. Because pricing is a small base fee plus a per-variant charge, you can request ten variants for a high-spend campaign or two for a quick test without rethinking the budget. A failed generation is never billed: the task retries up to three times internally, and if it still can't produce valid output you get a clear error instead of a charge.

Quality control stays in your hands

The API returns options, not a final decision, so the workflow still benefits from a human glance before publishing, especially for regulated categories or sensitive claims. Results are deleted after the retention window and never used to train models, which matters when the copy references unreleased pricing or a campaign under embargo.

Search campaign at scale

A media buyer managing forty product ad groups requests five headline variants per group in one batch, all pre-fitted to the search network's character limit.

Seasonal promotion turnaround

A retailer needs new ad copy for a flash sale launching in two hours; the endpoint returns variants in minutes instead of waiting on a freelancer.

A/B testing tone

A growth team requests the same offer in a direct tone and a playful tone to see which pulls a better click-through rate before committing spend.

Multi-market rollout

An app publisher generates ad copy variants per country and audience segment, each respecting the same character constraints, from a single product brief.

How does the ad copy generator API stay within character limits?

You pass the exact character limit for headline and description in the request, and every returned variant is measured against it before being sent back.

Is there a free tier for the ad copy generator API?

There's no free tier — free tiers get abused and slow everyone down. Access runs on a prepaid ForHosting KIT balance: top up from $10.00 (it never expires) and each request is charged at its published price, so a call with no balance returns HTTP 402. No subscription, no tokens, no invented credits, and a failed task is never charged.

How much does it cost per variant?

$0.003 per request plus $0.0135 per variant generated, so a request for five variants has a small, predictable total cost.

How do I get the results back?

By signed webhook, which is recommended for production, or from a signed link that stays valid for 24 hours after the task completes.

What happens if a generation fails?

The task retries automatically up to three times; if it still fails you get a clear error and are never charged for it.

Can I request different tones for the same product?

Yes, tone is a request parameter, so you can generate a direct version and a playful version from the same product facts in separate calls.

Does the endpoint know each ad network's exact limits?

You supply the limit per request rather than relying on a hardcoded value, which keeps your integration accurate even after a network changes its format.

Is the generated copy stored afterward?

No, data is deleted after the retention window and is never used to train models, which matters for unreleased offers or embargoed campaigns.

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.

POSThttps://api.kit.forhosting.com/text/ad-copy

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, and soon from our app, email and Telegram.

curl -X POST https://api.kit.forhosting.com/text/ad-copy \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":"…"}'
{
  "input": "…"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "text.ad_copy",
  "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.

Per request$0.003
Per variant$0.0135

Published price — no tokens, no invented credits. A failed task is never charged.

max_tokens20000
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.
422task_failedThe task failed after 3 retries. You are never charged for it.

Read the full KIT documentation →