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
GET /v25.0/{product-catalog-id}/product_feeds HTTP/1.1
Host: graph.facebook.com/* PHP SDK v5.0.0 */
/* make the API call */
try {
// Returns a `Facebook\FacebookResponse` object
$response = $fb->get(
'/{product-catalog-id}/product_feeds',
'{access-token}'
);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$graphNode = $response->getGraphNode();
/* handle the result *//* make the API call */
FB.api(
"/{product-catalog-id}/product_feeds",
function (response) {
if (response && !response.error) {
/* handle the result */
}
}
);/* make the API call */
new GraphRequest(
AccessToken.getCurrentAccessToken(),
"/{product-catalog-id}/product_feeds",
null,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
/* handle the result */
}
}
).executeAsync();/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:@"/{product-catalog-id}/product_feeds"
parameters:params
HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
id result,
NSError *error) {
// Handle the result
}];Reading from this edge will return a JSON formatted result:
{ "
data": [], "paging": {} }
datapaging| Error | 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 https://developers.facebook.com/docs/graph-api/overview/rate-limiting. |
product_feeds edge from the following paths: 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/* PHP SDK v5.0.0 */
/* make the API call */
try {
// Returns a `Facebook\FacebookResponse` object
$response = $fb->post(
'/{product-catalog-id}/product_feeds',
array (
'name' => 'Test Feed',
'schedule' => '{"interval":"DAILY","url":"http://www.example.com/sample_feed.tsv","hour":"22"}',
),
'{access-token}'
);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$graphNode = $response->getGraphNode();
/* handle the result *//* make the API call */
FB.api(
"/{product-catalog-id}/product_feeds",
"POST",
{
"name": "Test Feed",
"schedule": "{\"interval\":\"DAILY\",\"url\":\"http:\/\/www.example.com\/sample_feed.tsv\",\"hour\":\"22\"}"
},
function (response) {
if (response && !response.error) {
/* handle the result */
}
}
);Bundle params = new Bundle();
params.putString("name", "Test Feed");
params.putString("schedule", "{\"interval\":\"DAILY\",\"url\":\"http://www.example.com/sample_feed.tsv\",\"hour\":\"22\"}");
/* make the API call */
new GraphRequest(
AccessToken.getCurrentAccessToken(),
"/{product-catalog-id}/product_feeds",
params,
HttpMethod.POST,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
/* handle the result */
}
}
).executeAsync();NSDictionary *params = @{
@"name": @"Test Feed",
@"schedule": @"{\"interval\":\"DAILY\",\"url\":\"http://www.example.com/sample_feed.tsv\",\"hour\":\"22\"}",
};
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:@"/{product-catalog-id}/product_feeds"
parameters:params
HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
id result,
NSError *error) {
// Handle the result
}];curl -X POST \
-F 'name="Test Feed"' \
-F 'schedule={
"interval": "DAILY",
"url": "http://www.example.com/sample_feed.tsv",
"hour": "22"
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/{product-catalog-id}/product_feeds| Parameter | Description |
|---|---|
countrystring | Default value: "US"Two letter country code where the products can be sold |
default_currencyISO 4217 Currency Code | Default value: USDThe default currency used by provided feed if the currency is not specified in the feed file |
deletion_enabledboolean | Default value: trueDefault value: |
delimiterenum {AUTODETECT, BAR, COMMA, TAB, TILDE, SEMICOLON} | Default value: AUTODETECTProduct feed delimiter |
encodingenum {AUTODETECT, LATIN1, UTF8, UTF16LE, UTF16BE, UTF32LE, UTF32BE} | Default value: AUTODETECTThe 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,
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 Steps:
Example of how to create a new feed using
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 |
enum{autodetect, on, off} | Default value: autodetectWhether 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 |
use_caseenum {CREATOR_ASSET} | Allow advertiser to pass creator_asset as the new use_case of the feed |
id in the return type.id: numeric string, errors: List [error_subcode: string, invalid_attribute: string, error_message: string, | Error | Description |
|---|---|
| 200 | Permissions error |
| 100 | Invalid parameter |
| 190 | Invalid OAuth 2.0 Access Token |