logo
enes

Product feeds

Last update: 6 hours ago by Irais Aguirre

Integration summary

  • Base URL: https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services
  • Token: admin token, in the Authorization: Bearer {{admin-token}} header (how to generate it)
  • Endpoints on this page:
    • POST /v1/catalog/{{waba_id}}/{{catalog_id}}/product_feeds: Schedule product upload from file
    • GET /v1/catalog/{{waba_id}}/{{catalog_id}}/{{product_feed_id}}/uploads: List product feed uploads
    • GET /v1/catalog/{{waba_id}}/{{catalog_id}}/{{product_feed_id}}/{{upload_session_id}}/errors: Get upload errors
    • POST /v1/catalog/{{waba_id}}/{{catalog_id}}/{{product_feed_id}}/{{upload_session_id}}/error_report: Request error report
    • GET /v1/catalog/{{waba_id}}/{{catalog_id}}/{{product_feed_id}}/{{upload_session_id}}/errors/download: Download error report

Schedule periodic product uploads from a file (product feed), list its uploads, and review or download the errors of each upload. If the request succeeds, every service returns HTTP 200.

Schedule product upload from file

Creates a product feed: Meta periodically downloads a product file from a URL and processes it on the schedule you set.

  • With schedule, the file replaces the catalog's contents: products in the file are created or updated, and products missing from it are deleted.
  • With update_schedule, products in the file are only created or updated.
  • With override_type, the file contains localized information (language, country, or both) for products that already exist in the catalog.

Request

Schedule product upload from file request:

URLhttps://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/product_feeds
MethodPOST
Typeapplication/json

Headers

Schedule product upload from file headers:

NameDescriptionTypeRequirements
Content-Typeapplication/jsonStringRequired
AuthorizationAdmin token. See Generate authentication token.StringRequired

Parameters

Schedule product upload from file parameters:

NameDescriptionTypeRequirements
waba_idWhatsApp Business Account ID.StringRequired
catalog_idCatalog ID.StringRequired

Body

Schedule product upload from file body fields:

NameDescriptionTypeRequirements
nameDescriptive name for the product feed.StringRequired
scheduleSchedule for replacing the catalog's contents with the file.Schedule objectConditional. Required if you don't send update_schedule.
update_scheduleSchedule for creating or updating products from the file.Schedule objectConditional. Required if you don't send schedule.
override_typeType of localized information in the file. Possible values:
  • language
  • country
  • language_and_country
StringOptional. Only for files with localized information.

Schedule object

Used in both schedule and update_schedule.

NameDescriptionTypeRequirements
intervalHow often the file is processed. Possible values:
  • HOURLY
  • DAILY
  • WEEKLY
  • MONTHLY
StringRequired
urlURL of the product file.StringRequired
hourHour the file is processed, from 0 to 23.StringOptional
minuteMinute the file is processed, from 0 to 59.StringOptional
day_of_weekDay the file is processed. Possible values:
  • MONDAY
  • TUESDAY
  • WEDNESDAY
  • THURSDAY
  • FRIDAY
  • SATURDAY
  • SUNDAY
StringOptional. Used with interval WEEKLY.
timezoneTime zone for the schedule, for example, America/Mexico_City.StringOptional
usernameUsername to download the file, if the URL requires credentials.StringOptional
passwordPassword to download the file, if the URL requires credentials.StringOptional

Example

Complete Schedule product upload from file example:

Replace the catalog's contents once a day:

curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/product_feeds' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{admin-token}}' \
--data '{
"name": "Products_daily_replace",
"schedule": {
"interval": "DAILY",
"url": "https://www.example.com/feeds/products.csv",
"hour": "13",
"minute": "5",
"timezone": "America/Mexico_City"
}
}'

Create or update products every hour:

curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/product_feeds' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{admin-token}}' \
--data '{
"name": "Products_hourly_update",
"update_schedule": {
"interval": "HOURLY",
"url": "https://www.example.com/feeds/products-updates.csv",
"minute": "10",
"timezone": "America/Mexico_City"
}
}'

Load localized information by language and country:

curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/product_feeds' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{admin-token}}' \
--data '{
"name": "Products_localized_daily",
"override_type": "language_and_country",
"schedule": {
"interval": "DAILY",
"url": "https://www.example.com/feeds/products-localized.csv",
"hour": "14",
"timezone": "America/Mexico_City"
}
}'

Response

Schedule product upload from file response:

NameDescriptionType
idID of the new product feed.String
{
"id": "987654321098765"
}


List product feed uploads

Returns the uploads (upload sessions) of a product feed, sorted by start time.

Request

List product feed uploads request:

URLhttps://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/{{product_feed_id}}/uploads
MethodGET

Headers

List product feed uploads headers:

NameDescriptionTypeRequirements
AuthorizationAdmin token. See Generate authentication token.StringRequired

Parameters

List product feed uploads parameters:

NameDescriptionTypeRequirements
waba_idWhatsApp Business Account ID.StringRequired
catalog_idCatalog ID.StringRequired
product_feed_idID returned by the Schedule product upload from file service.StringRequired

Example

Complete List product feed uploads example:

curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/{{product_feed_id}}/uploads' \
--header 'Authorization: Bearer {{admin-token}}'

Response

List product feed uploads response:

The service returns a list of uploads.

NameDescriptionType
idUpload (upload session) ID.String
startTimeDate and time the upload started.String
endTimeDate and time the upload ended.String
[
{
"id": "112233445566778",
"startTime": "2026-11-02T18:53:25+0000",
"endTime": "2026-11-02T19:00:34+0000"
},
{
"id": "112233445566779",
"startTime": "2026-11-03T18:50:48+0000",
"endTime": "2026-11-03T19:00:24+0000"
}
]


Get upload errors

Returns the errors Meta found while processing a product feed upload.

Request

Get upload errors request:

URLhttps://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/{{product_feed_id}}/{{upload_session_id}}/errors
MethodGET

Headers

Get upload errors headers:

NameDescriptionTypeRequirements
AuthorizationAdmin token. See Generate authentication token.StringRequired

Parameters

Get upload errors parameters:

NameDescriptionTypeRequirements
waba_idWhatsApp Business Account ID.StringRequired
catalog_idCatalog ID.StringRequired
product_feed_idProduct feed ID.StringRequired
upload_session_idUpload ID, returned by the List product feed uploads service.StringRequired

Example

Complete Get upload errors example:

curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/{{product_feed_id}}/{{upload_session_id}}/errors' \
--header 'Authorization: Bearer {{admin-token}}'

Response

Get upload errors response:

NameDescriptionType
dataErrors found in the upload.List of upload error objects
pagingPagination information.Paging object

Upload error object

NameDescriptionType
idError ID.String
summaryError summary.String
descriptionDetailed error description.String
severityError severity, for example, fatal or warning.String
affected_surfacesChannels affected by the error.List of String
samplesSample rows from the file that have the error.Object

Samples object

NameDescriptionType
dataRows with the error.List of sample objects
pagingPagination information.Paging object

Sample object

NameDescriptionType
idRow ID.String
row_numberRow number in the file.Number
retailer_idThe product's retailer_id.String

Paging object

NameDescriptionTypeRequirements
cursorsbefore and after cursors used to paginate results.ObjectOptional
nextURL to fetch the next page of results.StringOptional
previousURL to fetch the previous page of results.StringOptional
{
"data": [
{
"id": "556677889900112",
"summary": "Missing price",
"description": "Add a price to your products.",
"severity": "fatal",
"affected_surfaces": [
"Dynamic Ads",
"Shops"
],
"samples": {
"data": [
{
"id": "556677889900113",
"row_number": 3,
"retailer_id": "ENGLISH_COURSE_004"
}
]
}
}
],
"paging": {
"cursors": {
"before": "QVFIUjExampleBefore",
"after": "QVFIUjExampleAfter"
}
}
}


Request error report

Asks Meta to generate a file with an upload's errors. When it's ready, download it with the Download error report service.

Request

Request error report request:

URLhttps://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/{{product_feed_id}}/{{upload_session_id}}/error_report
MethodPOST

Headers

Request error report headers:

NameDescriptionTypeRequirements
AuthorizationAdmin token. See Generate authentication token.StringRequired

Parameters

Request error report parameters:

NameDescriptionTypeRequirements
waba_idWhatsApp Business Account ID.StringRequired
catalog_idCatalog ID.StringRequired
product_feed_idProduct feed ID.StringRequired
upload_session_idUpload ID.StringRequired

Example

Complete Request error report example:

curl --location --request POST 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/{{product_feed_id}}/{{upload_session_id}}/error_report' \
--header 'Authorization: Bearer {{admin-token}}'

Response

Request error report response:

NameDescriptionType
successWhether the request was accepted.Boolean
{
"success": true
}


Download error report

Returns the status of an upload's error report and, once it's generated, the URL to download it.

Request

Download error report request:

URLhttps://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/{{product_feed_id}}/{{upload_session_id}}/errors/download
MethodGET

Headers

Download error report headers:

NameDescriptionTypeRequirements
AuthorizationAdmin token. See Generate authentication token.StringRequired

Parameters

Download error report parameters:

NameDescriptionTypeRequirements
waba_idWhatsApp Business Account ID.StringRequired
catalog_idCatalog ID.StringRequired
product_feed_idProduct feed ID.StringRequired
upload_session_idUpload ID.StringRequired

Example

Complete Download error report example:

curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/{{product_feed_id}}/{{upload_session_id}}/errors/download' \
--header 'Authorization: Bearer {{admin-token}}'

Response

Download error report response:

NameDescriptionType
idUpload ID.String
errorReportStatus of the error report.Object

Error report object

NameDescriptionType
reportStatusReport status. Possible values:
  • NOT_REQUESTED: the report hasn't been requested.
  • REQUESTED: the report is being generated.
  • WRITE_FINISHED: the report is ready to download.
String
fileHandleURL to download the error file. Only included when the report is ready.String

Report ready:

{
"id": "112233445566778",
"errorReport": {
"reportStatus": "WRITE_FINISHED",
"fileHandle": "https://www.example.com/reports/upload-errors-112233445566778.csv"
}
}

Report not requested:

{
"id": "112233445566779",
"errorReport": {
"reportStatus": "NOT_REQUESTED"
}
}

Previous
Products
Next
Error codes