Create a system user access token in Meta Business Manager with the catalog_management permission; the token must have access to the specific catalog (product catalog) you are managing.
POST to /{catalog_id}/items_batch (Graph API v21.0 or later) with allow_upsert: true and a 'requests' array; each request object has a 'method' of 'CREATE' or 'UPDATE', a 'retailer_id' as the unique product ID, and a 'data' object with required fields: name, description, availability, condition, price, currency, image_url, and url.
For variant products, include the item_group_id field in each variant's data object to group them under a parent; all variants sharing the same item_group_id are displayed as a single catalog item with selectable options.
Check the API response for 'handles' — submit GET /{catalog_id}/items_batch?handle={handle} to retrieve the batch processing result, which lists accepted items and any validation errors.
Use the Feed API (POST /{catalog_id}/product_feeds and a scheduled URL fetch) for feeds that update less frequently than once per hour; use the Batch API for near-real-time individual item updates.
Verify products are approved and not rejected by calling GET /{catalog_id}/products?fields=id,name,review_status,errors to surface policy violations before running ads.
Known gotchas
The items_batch endpoint (v3.3+) differs from the older batch endpoint — items_batch supports the retailer_id key for upserts and returns structured validation responses; prefer items_batch for new integrations.
Meta's catalog review can reject products for policy violations (counterfeit, adult content, etc.) silently — always check review_status in your feed monitoring, not just HTTP 200 responses.
price must be a string in the format '10.00 USD' (amount followed by ISO currency code with a space); sending a numeric type will cause a type error.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp