Skip to content
SERGE
← All posts
Creative

How to write a ChatGPT ad

The ad unit, the real character limits, what review rejects, and why a ChatGPT ad should read like the next answer rather than a search ad. With before-and-after examples.

Two separate glass layers represent the response and the sponsored placement below it.
The short answer

A ChatGPT ad is separate from the answer. The API allows a title of 3–50 characters and copy up to 100. Write for the person’s next useful step, support every claim on the landing page, and check the placement preview.

Documented creative limits, our 4 September rejection and paused API tests on 17 September. The rejection reason is confirmed; our explanation of its cause is an inference.

Sources checked ↗
From our account · 4 September 2026

The ad we submitted.

Rejected
Title
Setup ChatGPT Ads
Copy
Serge helps set up and manage ChatGPT ads
Review reason
OpenAI Brand Safety - Platform integrity and misrepresentation
50title characters maximum
100copy characters maximum

A transcription of our submission and review result, not a screenshot of a live placement. We suspect the title triggered the rejection; the reason string does not identify a specific phrase. See OpenAI’s placement example ↗

On 4 September OpenAI rejected the first ad I submitted for Serge. Title: "Setup ChatGPT Ads". Copy: "Serge helps set up and manage ChatGPT ads". The reason on the ad object read OpenAI Brand Safety - Platform integrity and misrepresentation. The account had passed its own integrity review the same week; the rejection applied to this ad.

Two days before that I'd read OpenAI's brand page and concluded that nominative use ("advertise on ChatGPT") was fine. As far as I can tell from reading about nominative use, that holds up as trademark law. It turned out to have nothing to do with anything, because the platform runs a private policy, and my working theory is that the title built around their product name triggered the misrepresentation rule. The reason string doesn’t identify a specific phrase, and one rejection isn’t enough to establish a blanket rule. That policy is the one that decides. I also guessed wrong about the cause before checking. My first theory was a category ban on B2B, and I'd half-accepted the idea that half our buyers might be locked out. One GET on the account refuted it (integrity decision allowed), and the ad's review reason then said what had actually failed.

Where the ad sits

OpenAI's help center describes the unit: below a ChatGPT response, carrying the advertiser name, the favicon (your logo), a title, a line of copy, a landing page and an image, labeled as an ad. The answer above it comes from a separate system that advertisers can't influence. A response can also carry more than one ad unit, possibly from different advertisers.

In the API the creative type is chat_card. The other type, product_ad_template, takes title, price and image from a product feed, and I have not used it.

The limits, and the numbers that aren't limits

From the Ads API reference:

FieldLimit
Title (creative.title)3 to 50 characters
Copy (creative.body)up to 100 characters
Landing page (creative.target_url)required
Image (creative.file_id)required, uploaded separately
Ad name3 to 1,000 characters, internal, never shown

You'll still find 16 to 24 for the title and 32 to 48 for the copy in guides and spec sheets. Those are recommended lengths at most, not caps. But in the r/PPC thread I keep coming back to, what I've learned from running real campaigns, two advertisers in Europe report that some placements truncate near the caps. So I write to roughly 24 and 48 first, look at the preview, and only spend the extra characters if they survive. I haven't seen a truncated render of our own ad yet; treat 24/48 as caution rather than a measured cutoff.

The image is uploaded through a separate endpoint and referenced by file id. The API page doesn't give dimensions but OpenAI's troubleshooting page does: PNG or JPG, square, no larger than 1200 × 1200. The API accepted a square PNG from us without complaint. Check the preview at phone width. The preview iframe OpenAI returns is 390 pixels wide.

What review does

The API exposes three review statuses, in_review, rejected and approved, and a rejection means a policy violation. Through the API, editing the creative is what gets it looked at again; in Ads Manager you can also request another review if you think the rejection was an error. The public reference page only lists review_status, but the ad object in the response carries a review object with the reason string, and that's where I found ours.

A few things from a test run on 17 September that I haven't seen in a guide. We changed the text on a paused test ad and the readback came back in_review immediately; when we swapped the image, the readback lagged about three seconds behind the write. If you poll right after an edit and see the old creative, wait and read again. A test ad pointed at example.com was rejected within a minute as landing_page_unusable; review fetches your landing page, and OpenAI's create-ads page says the page must not block OAI-AdsBot or OAI-SearchBot. And while our real domain was still under review, an edit to the ad returned HTTP 425 rather than 200. The domain hadn't cleared. Try again in a few minutes.

As for what gets rejected: I suspect ours was the platform’s brand in the headline. The recorded reason is misrepresentation; the headline explanation is my inference, and nobody else in the threads reports that one. A title the landing page doesn't back up will go the same way, since the page is a matching input and review reads it. Then the category rules, which are the part I'd read most carefully if I were in finance, health or legal: OpenAI's policy says ads are "primarily limited to consumer verticals" during the test and that advertisers in those three categories may be approved individually.

One agency in the positive-experiences thread says legal opened up in the US on 31 August, which lines up with a policy revision around then, though the wording is still "approved advertisers". Mental health and politics are named as contexts ads won't sit next to, logged-out placements are all-audience only, and mature ads reach eligible logged-in users only.

A "Not serving" status is a different thing from a rejection, and hovering it in Ads Manager tells you which of verification, budget, end date, payment, or a landing page blocking OpenAI's bots you're looking at.

Write the next answer

The idea I've found most useful comes from that same r/PPC write-up, by an advertiser in Latvia who says up front that the insights are theirs and ChatGPT wrote the prose, which some readers held against them. By the time your ad shows, the person asked a question and got a decent general answer. A search ad has no information gap to fill at that point, and there's no feed for a social ad to interrupt. What's left is the follow-up, the specific thing the person would have typed next.

Their example, which they say ChatGPT generated and they don't love, is running shoes. Someone asks what to buy for marathon training and gets the usual answer about cushioning and gait. The reflex ad is "Best marathon shoes / Free shipping, shop now", which repeats the answer and asks for money. Their alternative is a title about stack height and pacing with copy about how carbon plates change your last 10K. It answers the next question, which is what earns the click.

The title and copy are also matching inputs (OpenAI lists them next to the landing page and the context hints), so a narrow hint under a generic title wastes the hint. OpenAI's own create-ads guidance says roughly the same from the other side: copy should complement the title and add new information rather than repeat it, and you should build a high volume and diverse set of ads.

How I write one

Most of the time goes on the first part, which is picking one conversation and writing down the two-sentence answer ChatGPT probably gave, because if I can't write that I don't understand the moment well enough to advertise under it. Then the person's next question, which is usually a specific version of the general answer (a number, a comparison, "but what about my case") and which support conversations are the best source I know for. The title is that question's answer, in 24 characters if I can manage it, the copy is the one reason to click, and the page opens with whatever the title promised. After that the work is volume, more variants than feels reasonable, since there's no way to know in advance which follow-up people ask. We have two written for Serge's first campaign, and I know that's too few, and I haven't written the others yet.

Three drafts

Scheduling software for a small clinic, under a conversation about reducing no-shows. I'm using a made-up product rather than ours because ours isn't live yet and I'd rather show the real thing when it is.

Search style. Title: "Clinic scheduling software". Copy: "Reduce no-shows. Free 14-day trial." Nothing the answer didn't say, plus a transaction request.

Social style. Title: "Still chasing no-shows?" Copy: "There's a better way. See how." A hook with nothing behind it.

Next-answer style. Title: "Reminders at 48h and 2h". Copy: "Two reminders beat one for most clinics." 23 and 40 characters, a concrete next fact, and a claim (a made-up figure for a made-up product) that the landing page would have to substantiate before you ran it, since OpenAI's policy wants claims accurate and non-deceptive. It's the one of the three I'd want to see the numbers on.

Sources

Questions, answered

What are the character limits for ChatGPT ads?

50 characters for the title (minimum 3) and 100 for the copy, per the Ads API reference. The 16 to 24 and 32 to 48 figures you'll see elsewhere are recommended lengths at most, not limits. Some placements truncate near the caps, so I write short and check the preview.

What does a ChatGPT ad look like?

A labeled card under the answer: your name, your logo, a title, one line of copy, a square image, and a link. It's never inside the answer text and it doesn't change what ChatGPT says.

Why was my ChatGPT ad rejected?

The ad object tells you: read its `review` object, which carries a reason string. Ours said 'OpenAI Brand Safety - Platform integrity and misrepresentation'; I suspect the title built around the platform’s own name, and rewriting it is the fix I’m applying. The reason does not identify a specific phrase. Through the API, editing the creative is what triggers a new review; in Ads Manager you can also request another review if you think it was a mistake.

Yann Borie

I’m building Serge. These notes come from the platform documentation, our own setup tests and the questions I’m still working through.

Serge

Put the reading to work.

Serge turns your website into a ChatGPT campaign you can review, from the ad account you own. Campaign preparation is included in your Serge subscription; ad spend is separate.

How to set up a ChatGPT Ads account ↗
Build your campaign