📗 This is the user manual for the Suite for ChatGPT Ads, the tool in the Ninja Scripts panel. Here you can search it, listen to it, highlight it and save it to favourites. It is updated with every release of the tool.
A rejected ad doesn't serve, and OpenAI doesn't always explain why clearly. This screen collects the reason, proposes the fix and applies it.
How a case opens
Every read checks your ads' review status. If one is rejected, a case opens with the reason OpenAI gives and its explanation to the advertiser. From there the case follows itself:
| What happens | The case |
|---|---|
| You fix it and OpenAI approves it | resolved |
| You fix it and it comes back rejected | another round, with the new reason and the history of the previous one |
| You archive it | archived |
| It gets approved without you touching anything (an appeal in the Manager) | closed |
The menu bar carries a red badge with the open cases, visible from any screen: a rejected ad is money standing still.
The proposed fix
When you ask for it, the AI receives rather more than the ad:
- the ad read live and its rejection reason,
- the landing page, downloaded right then (many rejections are about the page, not the copy),
- the ad group's context hints,
- the ads in your account that ARE approved — this is what calibrates what the review actually accepts,
- previous rounds, if there were any,
- and a faithful summary of OpenAI's advertising policies: misleading ads, imitating their interface, identity and affiliation, brand use (their name only as description and never more prominent than yours), destination integrity, scams, prohibited categories.
And it returns four things: the diagnosis (which piece fails and against which rule), up to three variants that fit the card, changes to the page if that's where the problem is, and the appeal argument ready to copy.
💡 One case deserves attention: if one of your approved ads has the SAME creative as the rejected one, the AI flags it as a probable review error. It happens: OpenAI's review isn't always consistent. In that case the right move is to appeal in the Ads Manager, not rewrite an ad that was fine.
The three ways out
| Button | What it does |
|---|---|
| Apply | Changes the ad's text in place. It goes back to review and keeps its history and its metrics |
| Corrected copy | Creates a NEW ad with the fix and archives the rejected one. Useful if you want to keep a trace of the original |
| Archive | Retires it. A copy of the creative is saved first, because archiving in OpenAI is irreversible |
You can tweak any variant before applying it, or write your own: there's a live character counter with the card's limits.
While the AI thinks
It takes between 30 seconds and 2 minutes. The card shows the seconds elapsed and refreshes itself. If the process is interrupted (a server restart mid-way), after 5 minutes it's given up as lost, it tells you so and you can ask again: it doesn't hang forever.
What the platform doesn't offer
There is no way to appeal through the API. The ad's appeal field is read-only: appealing happens in OpenAI's Ads Manager. That's why the panel writes the argument for you but the send button is over there.