Limits & Errors
OpenAI Ads creative and account limits, what the integration does not support, and the errors it returns most often.
Creative and account limits
| Limit | Value |
|---|---|
| Title | 3 to 50 characters |
| Body | Up to 100 characters |
| Budget | Daily or lifetime, minimum 1 in the ad account currency |
| Targeting | Country only |
| Creative | Static image chat cards |
| Events per conversions request | 1,000 |
| OpenAI rate limits | 600 requests per minute per endpoint, 1,200 per minute overall |
What you cannot do
OpenAI Ads through Zernio does not support:
- Boosting an existing post, because ChatGPT has no organic posts.
- Custom audiences, which OpenAI exposes in Ads Manager only.
- Product feed upload, which stays in Ads Manager over SFTP.
- Video creatives.
- Targeting or creative edits after creation, and any targeting beyond country.
- Deleting a pixel or an ad. Cancelling archives instead.
Common errors
| Error | Cause | Fix |
|---|---|---|
401 with code invalid_credentials | The pasted key cannot read an OpenAI ad account | Recreate the key in ChatGPT Ads Manager under Settings and post it again. |
400 on a conversions create | No optimizable conversion event, or a customEventType that is unknown, archived, custom or ambiguous | Create a tracking tag with defaultEventType, or pass an optimizable event's id from conversionEvents[]. |
400 with code missing_required_field, param: "bidStrategy" | Automatic bidding on a lifetime budget or the awareness goal | Send budgetType: "daily", or a fixed bid with bidStrategy and bidAmount. |
422 with param: "budget.amount" | Budget below 1 in the ad account currency | Raise the budget. |
422 with param: "budget.type" | A lifetime budget sent to a campaign that has a daily cap | Keep a daily budget, or create a new campaign for a lifetime one. |
422 with code TRACKING_TAG_REQUIRED | Conversions sent before any pixel exists | Create the tracking tag first. |
422 with code FEATURE_NOT_AVAILABLE | The ad account is not enabled for pixel management | Ask your OpenAI partner representative to enable it. |
400 on a targeting field | Anything beyond countries | Remove the field; country is the only dimension OpenAI honours. |
501 with code unsupported_platform_operation | targeting or creative sent to PUT /v1/ads/{adId} | Change status or budget, and recreate the ad for anything else. |
A budget below the minimum returns the flat envelope:
{
"error": "OpenAI Ads requires a minimum budget of 1 (in the ad account currency)",
"type": "invalid_request_error",
"code": "invalid_field_value",
"param": "budget.amount"
}Error handling covers the envelope and the stable codes.
Was this page helpful?
Manage Ads
Change the status and budget of an OpenAI ad, create a campaign on its own, and read the status fields OpenAI keeps at each level.
Reddit Ads
Create image, video, carousel and text ads, promote existing Reddit posts, target subreddits and conversation keywords, and send Conversions API events on a redditads account.