Products
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}}/items_batch: Manage products in batchPOST /v1/catalog/{{waba_id}}/{{catalog_id}}/localized_items_batch: Manage localized products in batchGET /v1/catalog/{{waba_id}}/{{catalog_id}}/check_batch_request_status/{{handle}}: Check batch request statusGET /v1/catalog/{{waba_id}}/{{catalog_id}}/products: List products
Create, update, and delete products in batch (including products localized by language and country), check the status of batch requests, and list the products in a catalog. If the request succeeds, every service returns HTTP 200.
Manage products in batch
Create, update, or delete products in a catalog with a single request. Processing is asynchronous: use the handles in the response to check the request status.
Request
Manage products in batch request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/items_batch |
| Method | POST |
| Type | application/json |
Headers
Manage products in batch headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Content-Type | application/json | String | Required |
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
Manage products in batch parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| catalog_id | Catalog ID. | String | Required |
Body
Manage products in batch body fields:
| Name | Description | Type | Requirements |
|---|---|---|---|
| requests | Operations to run on the catalog. | List of product request objects | Required |
Product request object
| Name | Description | Type | Requirements |
|---|---|---|---|
| method | Operation to run. Possible values:
| String | Required |
| retailer_id | Unique product identifier in your system (for example, its SKU). This is the value you send in productRetailerId in C-Commerce messages. | String |
|
| data | Product information. With UPDATE, send only the fields you want to change. | Product data object |
|
Product data object
Fields marked as required are only validated when method is CREATE.
| Name | Description | Type | Requirements |
|---|---|---|---|
| name | Product title. | String |
|
| description | Product description. | String |
|
| availability | Product availability. Possible values:
| String | Required |
| condition | Product condition. Possible values:
| String | Required |
| price | Product price, for example, 150.00. It's sent to Meta together with currency (for example, 150.00 MXN). | String |
|
| currency | ISO 4217 currency code, for example, MXN or USD. | String |
|
| image_url | URL of the product image. | String |
|
| url | URL of the website where the product can be purchased. | String |
|
| brand | Product brand. | String | Optional |
| category | Google product category. Accepts the category path or its ID, for example, Apparel & Accessories > Clothing > Shirts & Tops or 212. See the Google taxonomy. | String | Optional |
Example
Complete Manage products in batch example:
curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/items_batch' \--header 'Content-Type: application/json' \--header 'Authorization: Bearer {{admin-token}}' \--data '{"requests": [{"method": "CREATE","retailer_id": "ENGLISH_COURSE_001","data": {"name": "Intensive English course","description": "Live 3-hour classes on Saturdays.","availability": "in stock","condition": "new","price": "1000.00","currency": "MXN","image_url": "https://www.example.com/images/english-course-001.png","url": "https://www.example.com/courses/intensive-english","brand": "Example Academy"}},{"method": "UPDATE","retailer_id": "ENGLISH_COURSE_002","data": {"availability": "out of stock"}},{"method": "DELETE","retailer_id": "ENGLISH_COURSE_003"}]}'
Response
Manage products in batch response:
| Name | Description | Type |
|---|---|---|
| handles | Request identifiers. Use them to check the request status. | List of String |
| validation_status | Validation errors per product. Only included if Meta found errors. | List of validation status objects |
Validation status object
| Name | Description | Type |
|---|---|---|
| retailer_id | The product's retailer_id. | String |
| errors | Errors found in the product. | List of validation error objects |
Validation error object
| Name | Description | Type |
|---|---|---|
| message | Error description. | String |
{"handles": ["AcxExampleHandle0001aBcDeFgHiJkLmNoPqRsTuVwXyZ"]}
Manage localized products in batch
Create, update, or delete localized information (by language or country) for products that already exist in the catalog. Processing is asynchronous: use the handles in the response to check the request status.
Request
Manage localized products in batch request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/localized_items_batch |
| Method | POST |
| Type | application/json |
Headers
Manage localized products in batch headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Content-Type | application/json | String | Required |
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
Manage localized products in batch parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| catalog_id | Catalog ID. | String | Required |
Body
Manage localized products in batch body fields:
| Name | Description | Type | Requirements |
|---|---|---|---|
| item_type | Item type. Must be PRODUCT_ITEM. | String | Required |
| requests | Operations to run on the catalog. | List of localized request objects | Required |
Localized request object
| Name | Description | Type | Requirements |
|---|---|---|---|
| method | Operation to run. Possible values:
| String | Required |
| localization | Language or country the information applies to. | Localization object | Required |
| data | Localized product information. | Localized data object | Required |
Localization object
| Name | Description | Type | Requirements |
|---|---|---|---|
| type | Localization type. Possible values:
| String | Required |
| value | Language or country. For example, en_XX or fr_XX for a language, and US or FR for a country. | String | Required |
Localized data object
Send only the fields that change for the given localization.
| Name | Description | Type | Requirements |
|---|---|---|---|
| id | The product's retailer_id. | String | Required |
| title | Product title. | String | Optional |
| description | Product description. | String | Optional |
| availability | Product availability in the country, for example, in stock. | String | Optional |
| price | Price and currency, for example, 9.99 USD. | String | Optional |
| sale_price_effective_date | Sale period. | String | Optional |
| link | URL of the website where the product can be purchased. | String | Optional |
| brand | Product brand. | String | Optional |
| color | Product color. | String | Optional |
| size | Product size. | String | Optional |
| material | Product material. | String | Optional |
| pattern | Product pattern or print. | String | Optional |
Example
Complete Manage localized products in batch example:
curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/localized_items_batch' \--header 'Content-Type: application/json' \--header 'Authorization: Bearer {{admin-token}}' \--data '{"item_type": "PRODUCT_ITEM","requests": [{"method": "CREATE","localization": {"type": "LANGUAGE","value": "en_XX"},"data": {"id": "ENGLISH_COURSE_001","title": "Intensive English course","description": "Live 3-hour classes on Saturdays."}},{"method": "CREATE","localization": {"type": "COUNTRY","value": "US"},"data": {"id": "ENGLISH_COURSE_001","availability": "in stock","price": "59.99 USD"}}]}'
Response
Manage localized products in batch response:
| Name | Description | Type |
|---|---|---|
| handles | Request identifiers. Use them to check the request status. | List of String |
{"handles": ["AcxExampleHandle0002aBcDeFgHiJkLmNoPqRsTuVwXyZ"]}
Check batch request status
Returns the result of a product batch or localized product batch request.
Request
Check batch request status request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/check_batch_request_status/{{handle}} |
| Method | GET |
Headers
Check batch request status headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
Check batch request status parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| catalog_id | Catalog ID. | String | Required |
| handle | One of the handles returned by the batch request. | String | Required |
Example
Complete Check batch request status example:
curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/check_batch_request_status/{{handle}}' \--header 'Authorization: Bearer {{admin-token}}'
Response
Check batch request status response:
| Name | Description | Type |
|---|---|---|
| data | Request status. | List of batch status objects |
Batch status object
| Name | Description | Type |
|---|---|---|
| handle | Request identifier. | String |
| status | Request status, for example, finished. | String |
| errors_total_count | Total number of errors. | Number |
| errors | Errors found while processing the request. | List of batch error objects |
Batch error object
| Name | Description | Type |
|---|---|---|
| line | Position of the item in the requests list. | Number |
| id | The product's retailer_id. | String |
| message | Error description. | String |
Request with no errors:
{"data": [{"handle": "AcxExampleHandle0001aBcDeFgHiJkLmNoPqRsTuVwXyZ","status": "finished","errors_total_count": 0,"errors": []}]}
Request with errors:
{"data": [{"handle": "AcxExampleHandle0002aBcDeFgHiJkLmNoPqRsTuVwXyZ","status": "finished","errors_total_count": 1,"errors": [{"line": 0,"id": "ENGLISH_COURSE_001","message": "Invalid value: The value passed at position 0 (id=ENGLISH_COURSE_001) is invalid."}]}]}
List products
Request
List products request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/products |
| Method | GET |
Headers
List products headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
List products parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| catalog_id | Catalog ID. | String | Required |
| return_only_approved_products | If true, only products approved by Meta are returned. Sent as a query parameter. | Boolean |
|
Example
Complete List products example:
curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/products?return_only_approved_products=true' \--header 'Authorization: Bearer {{admin-token}}'
Response
List products response:
The service returns a list of products.
| Name | Description | Type |
|---|---|---|
| id | Product ID in Meta. | String |
| retailerId | Product identifier in your system. | String |
| name | Product title. | String |
| description | Product description. | String |
| availability | Product availability. | String |
| condition | Product condition. | String |
| price | Formatted price, for example, $1,000.00. | String |
| currency | ISO 4217 currency code. | String |
| inventory | Number of units in stock. | Integer |
| imageUrl | URL of the product image. | String |
| url | URL of the website where the product can be purchased. | String |
[{"id": "7001234567890123","name": "Intensive English course","retailerId": "ENGLISH_COURSE_001","imageUrl": "https://www.example.com/images/english-course-001.png","inventory": 100,"availability": "in stock","price": "$1,000.00","currency": "MXN","condition": "new","description": "Live 3-hour classes on Saturdays.","url": "https://www.example.com/courses/intensive-english"}]
