· 3 min read
Managing product feeds via the API: create, SFTP access, upload history and archive
Until October the product feed was the last piece of ChatGPT Ads that could only be managed in the OpenAI Ads Manager: creating it, getting credentials, checking uploads. The Advertiser API now covers that flow, and Chatvertise has built it into the “Product feeds” page. This article walks through the lifecycle of a feed, names the limits that remain and describes a quirk that surprises you when pausing SFTP access.
A feed from creation to archive
- 1
Create the feed
Set name and countries; the feed starts as an empty container.
Fails here with:
missing name → 400 - 2
Create SFTP access
Password (shown once) or public SSH key; the connection address is fixed.
- 3
Upload the catalogue
Via SFTP, file or the OpenAI Ads Manager; the API itself accepts no products.
- 4
Check processing
Upload history with status, row count and diagnostics per upload.
- 5
Connect a feed campaign
Product sets per ad group, template ad; “full refresh” setting per upload.
Archive
Only without connected campaigns; the feed then disappears from the list.
1. Create the feed
A new feed needs only two things: a name and the list of countries it applies to. Without a name the API rejects it. The result is an empty container with a feed ID; it holds no products yet. In Chatvertise this is “Create new feed” on the product-feeds page.
2. Create SFTP access
For uploading via SFTP you generate credentials for the feed: either a password or a public SSH key. The connection address is fixed and shown alongside. Two things matter: the password is 32 characters long and is shown exactly once; Chatvertise does not store it. And if you choose SSH you have to send the public key, otherwise the API returns an error.
3. Upload the catalogue
This is where the API ends: products still can't be uploaded through the Advertiser API, only via SFTP, as a file or in Ads Manager. You can adjust individual products afterwards via delta update, such as availability or title, but not load the catalogue. For Shopify merchants the Shopify import remains the shorter route because it bypasses the feed upload.
4. Check processing
After the upload the API shows a history of all uploads of the account with status, row count and diagnostics. Chatvertise lists them as the table “Latest feed uploads”: which upload was processed when, how many rows it had and which rows OpenAI rejected for which reason. That replaces blindly waiting to see whether a catalogue arrived. The list of the latest uploads per feed is separate, and with many uploads the history loads page by page.
5. Settings and feed campaign
Besides name, countries and whether the products' search availability is respected, there is a setting called “full refresh per upload”: when on, every upload replaces the entire catalogue; when off, it only adds changes. If you export the whole catalogue nightly you want “on”; if you only send deltas, “off”. Once products are in, the feed campaign with product sets and template ad follows.
6. Archive
A feed that is no longer needed can be archived. It then disappears from the list and its SFTP access can no longer be retrieved. The call is idempotent: archiving a second time is not an error. Chatvertise locks the button while campaigns are connected to the feed, so no running feed campaign loses its source.
The quirk when pausing SFTP access
SFTP access can be paused, for instance when a service provider changes. What you'd expect: activating restores the old access. What actually happens: after pausing, the authentication method is empty, and activating leaves the access disabled. You have to generate new credentials. Chatvertise points this out at that spot; in practice it means pausing is a revocation, not a toggle.
What changes with variants and availability
Since October the product query of a feed returns variant, availability and offer ID per product. Chatvertise passes the fields through to the product preview. For product sets that means a filter on in-stock items becomes possible as soon as the feed delivers availability.
Who this is relevant for
- Agencies that look after feeds for several clients: create, generate access and check upload diagnostics without switching into every Ads Manager.
- Shops with their own export: the nightly SFTP job gets a check step that makes failed rows visible.
- Everyone else: if you have a feed and only look at it, you'll rarely need the new functions. The upload history is still worth a look after every catalogue update.
All of the month's changes, including the account endpoints, are in the late-October update.
Frequently asked questions
- Can I upload products through the API now?
- No. The API creates feeds, manages credentials and shows upload results, but the catalogue itself still comes via SFTP, file or Ads Manager. Individual products can be changed via delta update.
- What happens if I lose the SFTP password?
- It can't be shown again. Generate a new password; it replaces the old one.
- Can I bring back an archived feed?
- No. Unlike ads, feeds have no way out of the archive. If needed, create a new feed and upload the catalogue again.