Product Catalog Product Feed
Updated: Apr 8, 2026
Copy for LLM
Ads in WhatsApp Status are available via the Marketing API. Learn more about ads in WhatsApp Status.
Products feeds associated with a catalog. See Dynamic Ads, Catalog Setup. For example, get a list of all product feeds:
curl -G \
-d "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<API_VERSION>/<PRODUCT_CATALOG_ID>/product_feeds
Or get a list of product items in a product feed:
curl -G \
-d "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<API_VERSION>/<PRODUCT_FEED_ID>/products
Reading
Example
GET /v25.0/{product-catalog-id}/product_feeds HTTP/1.1
Host: graph.facebook.com
Try it in Graph API Explorer
If you want to learn how to use the Graph API, read our Using Graph API guide
Parameters
This endpoint doesn't have any parameters.
Fields
Reading from this edge will return a JSON formatted result:
{
"data": [],
"paging": {}
}
data
A list of ProductFeed nodes.
paging
For more details about pagination, see the Graph API guide.
Error Codes
| Error Code | Description |
|---|---|
100 | Invalid parameter |
200 | Permissions error |
190 | Invalid OAuth 2.0 Access Token |
80009 | There have been too many calls to this Catalog account. Wait a bit and try again. For more info, please refer to /docs/graph-api/overview/rate-limiting. |
Creating
/{product_catalog_id}/product_feeds
You can make a POST request to product_feeds edge from the following paths:
When posting to this edge, a ProductFeed will be created.
Example
POST /v25.0/{product-catalog-id}/product_feeds HTTP/1.1
Host: graph.facebook.com
name=Test+Feed&schedule=%7B%22interval%22%3A%22DAILY%22%2C%22url%22%3A%22http%3A%2F%2Fwww.example.com%2Fsample_feed.tsv%22%2C%22hour%22%3A%2222%22%7D
Try it in Graph API Explorer
If you want to learn how to use the Graph API, read our Using Graph API guide
Parameters
| Parameter | Description |
|---|---|
countrystring | Default value: "US"
Two letter country code where the products can be sold
|
default_currencyISO 4217 Currency Code | Default value: USD
The default currency used by provided feed if the currency is not specified in the feed file
|
deletion_enabledboolean | Default value: true
Default value: false (to be changed to true .from API v2.5)When true, this will remove products from a catalog that are no longer present in a feed. When false, uploading a product feed is additive and products will remain in the catalog even if they are removed from a feed. Once enabled, we do not allow this field to be disabled.
|
delimiterenum {AUTODETECT, BAR, COMMA, TAB, TILDE, SEMICOLON} | Default value: AUTODETECT
Product feed delimiter
|
encodingenum {AUTODETECT, LATIN1, UTF8, UTF16LE, UTF16BE, UTF32LE, UTF32BE} | Default value: AUTODETECT
The character encoding used by provided feed
|
feed_typeenum {ACTIVITY, APP_AND_SOFTWARE, ARTICLE_AND_PUBLICATION, AUTOMOTIVE_MODEL, COLLECTION, DESTINATION, FLIGHT, HOME_LISTING, HOTEL, HOTEL_ROOM, LOCAL_INVENTORY, MEDIA_TITLE, OFFER, PRODUCT_RATINGS_AND_REVIEWS, PRODUCTS, SERVICE, TRANSACTABLE_ITEMS, VEHICLE_OFFER, VEHICLES} |
Type of the feed. Decides type of catalog item this feed will create
|
file_namestring |
The name of the product feed. .tsv, .xml or compressed files (zip, gzip and bz2) are supported
|
ingestion_source_typeenum {PRIMARY_FEED, SUPPLEMENTARY_FEED} |
ingestion_source_type to decide type of feed i.e. primary or supplementary
|
item_sub_typeenum {APPLIANCES, BABY_FEEDING, BABY_TRANSPORT, BEAUTY, BEDDING, CAMERAS, CELL_PHONES_AND_SMART_WATCHES, CLEANING_SUPPLIES, CLOTHING, CLOTHING_ACCESSORIES, COMPUTERS_AND_TABLETS, DIAPERING_AND_POTTY_TRAINING, ELECTRONICS_ACCESSORIES, FURNITURE, HEALTH, HOME_GOODS, JEWELRY, NURSERY, PRINTERS_AND_SCANNERS, PROJECTORS, SHOES_AND_FOOTWEAR, SOFTWARE, TOYS, TVS_AND_MONITORS, VIDEO_GAME_CONSOLES_AND_VIDEO_GAMES, WATCHES} |
The sub type of items to be uploaded by this feed
|
migrated_from_feed_idnumeric string |
Used to split an original feed into multiple new feeds, migrated_from_feed_id denotes the original feed's ID. Setting this field ensures that items from an original field can be migrated to a new one, without the need of deletion.
This field is generally used when splitting a large feed into multiple smaller feeds. Example:
Guidance on splitting feeds that exceed file size or item limit
If your data feed contains more items or exceeds the file size, split it into multiple feeds and upload them separately. You can upload as many data feeds as you want, but they must all contain different items.
You can split the data feed into smaller feeds using migrated_from_feed_id.
Steps:
Example of how to create a new feed using migrated_from_feed_id:
5. Additionally, ensure that once the data feeds are split into a new, smaller feed, all item updates come from the respective new feed.
|
nameUTF-8 encoded string |
User specified name for the feed
|
override_typeenum {LANGUAGE, COUNTRY, VERSION, CATALOG_SEGMENT_CUSTOMIZE_DEFAULT, LANGUAGE_AND_COUNTRY, BATCH_API_LANGUAGE_OR_COUNTRY, SMART_PIXEL_LANGUAGE_OR_COUNTRY, LOCAL} |
If this is a secondary feed, this specifies the override type of the feed
|
override_valuestring |
Override value of the feed dependent on the override type (country or language).
|
primary_feed_idsarray<numeric string> |
primary_feed_ids to which a supplementary feed should be linked
|
quoted_fields_modeenum{autodetect, on, off} | Default value: autodetect
Whether or not there will be quotes around each field, only for TSV feeds. If this field is provided, we use it instead of the parameter quoted_fields
|
ruleslist<JSON-encoded string> |
A list of rules applied to feed uploads
|
scheduleJSON-encoded string |
A JSON-encoded string representing a recurrent schedule for fetching the feed. Default timezone is America/Los_Angeles. Learn more about feed schedules |
selected_override_fieldsarray<string> |
Selected Override Fields of the feed, written as a list of fields which should be processed from the feed file. From whiltelisted_properties
|
update_scheduleJSON-encoded string |
The configuration for fetching updates to a feed in a recurrent manner. The uploads would only update the items in the feed or create new ones. No items would be deleted. This is useful for sending price and availability updates for selected items in the feed. Learn more about fields in a feed schedule |
use_caseenum {CREATOR_ASSET} |
Allow advertiser to pass creator_asset as the new use_case of the feed
|
Return Type
This endpoint supports read-after-write and will read the node represented by id in the return type.
Struct {
id: numeric string,
errors: List [ Struct {
error_subcode: string,
invalid_attribute: string,
error_message: string,
}],
}
Error Codes
| Error Code | Description |
|---|---|
200 | Permissions error |
100 | Invalid parameter |
190 | Invalid OAuth 2.0 Access Token |
Updating
You can't perform this operation on this endpoint.
Deleting
You can't perform this operation on this endpoint.