--- title: "Product Feed API Integration" description: "Direct AI agents to your product feed and process payments with Adyen." url: "https://docs.adyen.com/online-payments/agentic-commerce/product-feed-integration" source_url: "https://docs.adyen.com/online-payments/agentic-commerce/product-feed-integration.md" canonical: "https://docs.adyen.com/online-payments/agentic-commerce/product-feed-integration" last_modified: "2026-05-08T17:09:17+02:00" language: "en" --- # Product Feed API Integration Direct AI agents to your product feed and process payments with Adyen. The Adyen Product Feed API provides a way for you to communicate with our centralized product knowledge hub that synchronizes your inventory with AI platforms. It operates on an asynchronous batch processing model to perform "semantic mapping" between your inventory data and industry-standard Agentic Commerce protocols. You can upload batches of information about your inventory to Adyen, and we will synchronize it with AI platforms. ## Requirements | Requirement | Description | | -------------------- | ------------------------------------------------------------ | | **Integration type** | An existing [online payments](/online-payments) integration. | ## How it works The Product Feed API enables you to synchronize your product catalog with AI platforms through Adyen's centralized product knowledge hub. Here's how it works: 1. **Batch Ingestion**: You upload product data in batches of up to 200 items. Each item declares its target platforms via a `platforms` array. 2. **Semantic Mapping**: Adyen processes your data and maps it to industry-standard Agentic Commerce protocols. 3. **AI Platform Synchronization**: The mapped data is synchronized with AI platforms like OpenAI and Meta. A single item can target multiple platforms in one request. 4. **Asynchronous Processing**: The API operates asynchronously, so you can check ingestion status later. ## API Architecture & Operations The API focuses on high-efficiency batch ingestion rather than individual item management. A single ingestion item can be fanned out to multiple AI platforms in a single request via the per-item `platforms` array. Base URL: | Environment | URL | | ----------- | ------------------------------------------------------------------ | | Test | `https://commerce-suite-test.adyen.com/commerce-suite/productFeed` | | Live | `https://commerce-suite.adyen.com/commerce-suite/productFeed` | ### Core Endpoints | Method | Path | Summary | Description | | ---------- | ------------------------------ | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **POST** | `/v1/ingestions` | Ingest a product feed | Ingests a list of up to **200 items** for asynchronous processing to OpenAI and/or Meta. Each item declares its target platforms via `platforms`. Products omitted from the request remain unchanged. | | **DELETE** | `/v1/ingestions` | Delete products | Deletes up to **200 products** from one or more AI platforms (Meta, OpenAI) in a single call. | | **GET** | `/v1/ingestions/{ingestionId}` | Get product ingestion status | Retrieves the processing state (Pending, Processing, ProcessingOnPlatform, Succeeded, Failed, Processed) per platform, along with a summary of success/failure/pending/processing counts and per-product errors. | ### Authentication Secure your requests using one of the following methods: * **X-API-Key**: Provide your Adyen API Key in the request header. * **Basic Auth**: Standard HTTP Basic authentication is also supported. ## Comprehensive data schema: UnifiedProductFeedItem The following tables include all fields supported by the UnifiedProductFeedItem schema for OpenAI and Meta integration. ### Routing & Identifiers | # | Module | Field Name | Data Type | Description / Notes | | ----- | --------------- | ----------------- | -------------- | --------------------------------------------------------------------------------------------------------------- | | **1** | **Routing** | platforms | Array\\\ | Required. Target AI platforms for this item. Values: Meta, OpenAI. A single item can target multiple platforms. | | **2** | **Identifiers** | merchantProductId | String | Required. Unique Item ID. | | **3** | **Identifiers** | brand | String | Manufacturer/Brand name. | | **4** | **Identifiers** | gtin | String | Global Trade Item Number (Regex: `^\d+$`). | | **5** | **Identifiers** | mpn | String | Manufacturer Part Number. | ### Item Info | # | Module | Field Name | Data Type | Description / Notes | | ------ | ------------- | ------------------- | --------- | ----------------------------------------------------- | | **6** | **Item Info** | title | String | Product name. | | **7** | **Item Info** | description | String | Plain-text product narrative. | | **8** | **Item Info** | url | URI | Product landing page link. | | **9** | **Item Info** | eligibleSearch | Boolean | Visibility in search engines/AI agents. | | **10** | **Item Info** | eligibleCheckout | Boolean | Direct purchase eligibility. | | **11** | **Item Info** | condition | Enum | New, Used, Refurbished. | | **12** | **Item Info** | ageGroup | Enum | NewBorn, Infant, Toddler, Kids, Adult, Teen, AllAges. | | **13** | **Item Info** | productCategory | String | Categorization path using ">" separator. | | **14** | **Item Info** | material | String | Primary material/fabric. | | **15** | **Item Info** | pattern | String | Design pattern description. | | **16** | **Item Info** | richTextDescription | String | Description with HTML support. | | **17** | **Item Info** | internalLabel | Array | Merchant-specific tags (e.g., "summer", "trending"). | | **18** | **Item Info** | dimension | Object | height, length, width, unit (Regex: `^\d+\.\d{2}$`). | | **19** | **Item Info** | weight | Object | value (Regex: `^\d+\.\d{2}$`) + unit. | ### Pricing & Inventory | # | Module | Field Name | Data Type | Description / Notes | | ------ | ------------- | ------------------ | --------- | ----------------------------------------------------- | | **20** | **Pricing** | price | Object | Base price (Currency + Minor Units). | | **21** | **Pricing** | salePrice | Object | Discounted price. | | **22** | **Pricing** | salePriceStartAt | ISO-8601 | Start of promotion. | | **23** | **Pricing** | salePriceEndAt | ISO-8601 | End of promotion. | | **24** | **Pricing** | unitPricingMeasure | String | Quantity for unit pricing. | | **25** | **Pricing** | baseMeasure | String | Reference unit for pricing. | | **26** | **Pricing** | pricingTrend | String | Narrative context (e.g., "Lowest price in 6 months"). | | **27** | **Inventory** | availability | Enum | InStock, OutOfStock, PreOrder, BackOrder, Unknown. | | **28** | **Inventory** | availableAt | ISO-8601 | Date of stock availability. | | **29** | **Inventory** | expireAt | ISO-8601 | Date the listing expires. | | **30** | **Inventory** | inventory | Integer | Real-time stock count. | | **31** | **Inventory** | pickupMethod | Enum | InStore, Reserve, NotSupported. | | **32** | **Inventory** | pickupSla | Object | Pickup timeframe (value + unit). | ### Media | # | Module | Field Name | Data Type | Description / Notes | | ------ | --------- | ------------------- | --------- | --------------------------- | | **33** | **Media** | imageUrl | URI | Primary product image link. | | **34** | **Media** | additionalImageUrls | Array | Supplementary image links. | | **35** | **Media** | videoUrls | Array | Product video links. | | **36** | **Media** | model3dUrl | URI | 3D asset link (.glb). | ### Variants & Logistics | # | Module | Field Name | Data Type | Description / Notes | | ------ | --------------- | -------------------- | ---------------- | ------------------------------------------------------------------------------------------ | | **37** | **Variants** | groupId | String | Parent ID for color/size groups. | | **38** | **Variants** | listingHasVariations | Boolean | Flags if item is a parent listing. | | **39** | **Variants** | itemGroupTitle | String | Shared title for the variant group. | | **40** | **Variants** | color | String | Product color. | | **41** | **Variants** | size | Object | value + system (sizing system). | | **42** | **Variants** | gender | String | Target gender. | | **43** | **Variants** | offerId | String | Unique offer code per variant. | | **44** | **Variants** | variantDict | Object | Key-value pairs for unique attributes. | | **45** | **Variants** | customVariants | Array | category, label, number, option. | | **46** | **Fulfillment** | shipping | Array\\\ | List of shipping options (service, price, handling/transit days, weight, country, region). | | **47** | **Fulfillment** | digital | Boolean | True if non-physical product. | ### Merchant, Returns & Performance | # | Module | Field Name | Data Type | Description / Notes | | ------ | --------------- | -------------------- | --------- | -------------------------------------- | | **48** | **Merchant** | sellerName | String | Retailer name. | | **49** | **Merchant** | marketplaceSeller | String | 3rd party seller name. | | **50** | **Merchant** | sellerUrl | URI | Seller storefront link. | | **51** | **Merchant** | sellerPrivacyPolicy | URI | Privacy policy link. | | **52** | **Merchant** | sellerTos | URI | Terms of Service link. | | **53** | **Returns** | acceptsReturns | Boolean | Return eligibility. | | **54** | **Returns** | acceptsExchanges | Boolean | Exchange eligibility. | | **55** | **Returns** | returnDeadlineInDays | Integer | Return window. | | **56** | **Returns** | returnPolicy | URI | Full return policy link. | | **57** | **Performance** | popularityScore | String | Numeric score (Regex: `^\d+\.\d{2}$`). | | **58** | **Performance** | returnRate | String | Return frequency. | ### Compliance, Social & Geo | # | Module | Field Name | Data Type | Description / Notes | | ------ | -------------- | ------------------------------- | --------- | -------------------------------------------------------------------------------- | | **59** | **Compliance** | compliances | Array | warning, warningUrl, ageRestriction. | | **60** | **Social** | review\.reviewCount | Integer | Total product reviews. | | **61** | **Social** | review\.starRating | String | Average stars (Regex: `^\d+\.\d{2}$`). | | **62** | **Social** | review\.storeReviewCount | Integer | Total store-level reviews. | | **63** | **Social** | review\.storeStarRating | String | Store-level stars (Regex: `^\d+\.\d{2}$`). | | **64** | **Social** | review\.reviews | Array | title, content, rating, maxRating, minRating. | | **65** | **Social** | QAndA | Array | question, answer. | | **66** | **Related** | relatedProduct.relatedProductId | String | ID of a similar item. | | **67** | **Related** | relatedProduct.relationshipType | Enum | PartOfSet, RequiredPart, OftenBoughtWith, Substitute, DifferentBrand, Accessory. | | **68** | **Geo** | targetCountries | Array | ISO-3166-1 alpha-2 codes (e.g., US, CA). | | **69** | **Geo** | storeCountry | String | ISO country code of the store. | | **70** | **Geo** | geoPrice | Object | Country-specific price. | | **71** | **Geo** | geoAvailability | Object | Country-specific stock. | ## Data Integrity & Formatting Rules ### Price Formatting (Minor Units) All price values (`price`, `geoPrice`, `salePrice`, `shipping.price`) must be integers in [minor units](/development-resources/currency-codes/#minor-units). * **Example**: For USD 20.00, send **2000**. * **Currency Code**: Must be the three-letter ISO-4217 code. ### Metric Formatting (Regex Strings) Fields for weight, dimensions, and ratings must be strings with exactly two decimal places. * **Requirement**: Values must match `^\\d+\\.\\d{2}$`. * **Affected Fields**: `weight.value`, `dimension.height`/`dimension.length`/`dimension.width`, `starRating`, `storeStarRating`, and `popularityScore`. ### Batch Limits * **POST** `/v1/ingestions`: up to 200 items per request. * **DELETE** `/v1/ingestions`: up to 200 items per request. ## Examples ### POST /v1/ingestions **OpenAI request with only required fields** **OpenAI request - required fields** ```bash curl -X POST https://commerce-suite-test.adyen.com/commerce-suite/productFeed/v1/ingestions \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'idempotency-key: YOUR_IDEMPOTENCY_KEY' \ -H 'content-type: application/json' \ -d '{ "items": [ { "platforms": ["OpenAI"], "productIdentifier": { "brand": "Adyen", "merchantProductId": "SKU12345" }, "itemInformation": { "eligibleCheckout": true, "eligibleSearch": true, "description": "Waterproof trail shoe", "title": "Trail Running Shoes Black", "url": "https://shop.example.com/product/SKU12345" }, "mediaAsset": { "imageUrl": "https://shop.example.com/image1.jpg" }, "pricing": { "price": { "currencyCode": "USD", "value": 2000 } }, "availabilityInventory": { "availability": "InStock" }, "variant": { "listingHasVariations": true, "groupId": "SHOE123GROUP" }, "merchantInformation": { "sellerName": "Example Store", "sellerPrivacyPolicy": "https://shop.example.com/privacy", "sellerTos": "https://shop.example.com/terms", "sellerUrl": "https://shop.example.com/store" }, "returnData": { "returnPolicy": "https://shop.example.com/returns" }, "geoTagging": { "storeCountry": "US", "targetCountries": ["US", "CA"] } } ], "merchantAccount": "ADYEN_MERCHANT_ACCOUNT" }' ``` **OpenAI request with all supported fields** **OpenAI request - all fields** ```bash curl -X POST https://commerce-suite-test.adyen.com/commerce-suite/productFeed/v1/ingestions \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'idempotency-key: YOUR_IDEMPOTENCY_KEY' \ -H 'content-type: application/json' \ -d '{ "items": [ { "platforms": ["OpenAI"], "performanceSignal": { "popularityScore": "4.71", "returnRate": "2%" }, "compliances": [ { "ageRestriction": 21, "warning": "Contains lithium battery", "warningUrl": "https://shop.example.com/warning" } ], "QAndA": [ { "answer": "Yes", "question": "Is this waterproof?" } ], "review": { "reviewCount": 254, "reviews": [ { "content": "Review content", "maxRating": 0, "minRating": 0, "rating": 0, "title": "Review title" } ], "starRating": "1.15", "storeReviewCount": 2000, "storeStarRating": "4.51" }, "relatedProduct": [ { "relatedProductId": "SKU67890", "relationshipType": "PartOfSet" } ], "productIdentifier": { "mpn": "JAS12345PER", "gtin": "123456789543", "brand": "Adyen", "merchantProductId": "SKU12345" }, "itemInformation": { "eligibleCheckout": true, "eligibleSearch": true, "ageGroup": "NewBorn", "condition": "New", "description": "Waterproof trail shoe", "title": "Trail Running Shoes Black", "url": "https://shop.example.com/product/SKU12345", "productCategory": "Apparel & Accessories > Shoes", "material": "Leather", "dimension": { "height": "10.15", "length": "10.15", "unit": "cm", "width": "10.15" }, "weight": { "unit": "kg", "value": "1.55" } }, "mediaAsset": { "additionalImageUrls": [ "https://shop.example.com/products/shoe.jpg", "https://shop.example.com/products/shoe1.jpg" ], "model3dUrl": "https://shop.example.com/model.glb", "videoUrls": [ "https://shop.example.com/products/video.mov", "https://shop.example.com/products/video1.mov" ], "imageUrl": "https://shop.example.com/image1.jpg" }, "pricing": { "baseMeasure": "1", "price": { "currencyCode": "USD", "value": 2000 }, "pricingTrend": "Lowest price in 6 months", "salePrice": { "currencyCode": "USD", "value": 2000 }, "salePriceEndAt": "2026-04-01T07:49:14.738Z", "salePriceStartAt": "2026-04-01T07:49:14.738Z", "unitPricingMeasure": "16" }, "availabilityInventory": { "availability": "InStock", "availableAt": "2026-04-01T07:49:14.738Z", "expireAt": "2026-04-01T07:49:14.738Z", "pickupMethod": "InStore", "pickupSla": { "unit": "day", "value": 1 } }, "variant": { "groupId": "SHOE123GROUP", "listingHasVariations": true, "customVariants": [ { "category": "Size_Type", "option": "Tall" } ], "itemGroupTitle": "Trail Running Shoes", "color": "Blue", "size": { "system": "US", "value": "10" }, "gender": "male", "offerId": "SKU12345-Blue-79.99", "variantDict": { "color": "Blue", "size": "10" } }, "merchantInformation": { "marketplaceSeller": "Marketplace Name", "sellerName": "Example Store", "sellerPrivacyPolicy": "https://shop.example.com/privacy", "sellerTos": "https://shop.example.com/terms", "sellerUrl": "https://shop.example.com/store" }, "returnData": { "acceptsExchanges": true, "acceptsReturns": true, "returnDeadlineInDays": 30, "returnPolicy": "https://shop.example.com/returns" }, "fulfillment": { "digital": true, "shipping": [ { "country": "US", "maxHandlingDays": 2, "maxTransitDays": 3, "minHandlingDays": 1, "minTransitDays": 1, "price": { "currencyCode": "USD", "value": 2000 }, "region": "CA", "serviceClass": "Overnight", "weight": { "unit": "kg", "value": "1.55" } } ] }, "geoTagging": { "geoAvailability": { "availability": "InStock", "region": "California" }, "geoPrice": { "currencyCode": "USD", "region": "California", "value": 2000 }, "storeCountry": "US", "targetCountries": ["US", "CA"] } } ], "merchantAccount": "ADYEN_MERCHANT_ACCOUNT" }' ``` **Meta request with only required fields** **Meta request - required fields** ```bash curl -X POST https://commerce-suite-test.adyen.com/commerce-suite/productFeed/v1/ingestions \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'idempotency-key: YOUR_IDEMPOTENCY_KEY' \ -H 'content-type: application/json' \ -d '{ "items": [ { "platforms": ["Meta"], "availabilityInventory": { "availability": "InStock" }, "itemInformation": { "condition": "New", "description": "Waterproof trail shoe", "title": "Trail Running Shoes Black", "url": "https://shop.example.com/product/SKU12345" }, "mediaAsset": { "imageUrl": "https://shop.example.com/image1.jpg" }, "pricing": { "price": { "currencyCode": "USD", "value": 2000 } }, "productIdentifier": { "brand": "Adyen", "merchantProductId": "SKU12345" } } ], "merchantAccount": "ADYEN_MERCHANT_ACCOUNT" }' ``` **Meta request with all supported fields** **Meta request - all fields** ```bash curl -X POST https://commerce-suite-test.adyen.com/commerce-suite/productFeed/v1/ingestions \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'idempotency-key: YOUR_IDEMPOTENCY_KEY' \ -H 'content-type: application/json' \ -d '{ "items": [ { "platforms": ["Meta"], "availabilityInventory": { "availability": "InStock", "inventory": 10 }, "fulfillment": { "shipping": [ { "country": "US", "maxHandlingDays": 2, "maxTransitDays": 3, "minHandlingDays": 1, "minTransitDays": 1, "price": { "currencyCode": "USD", "value": 2000 }, "region": "CA", "serviceClass": "Overnight", "weight": { "unit": "kg", "value": "1.55" } } ] }, "itemInformation": { "eligibleSearch": true, "ageGroup": "NewBorn", "condition": "New", "description": "Waterproof trail shoe", "internalLabel": ["summer", "trending"], "material": "Leather", "pattern": "Stripes", "productCategory": "Apparel & Accessories > Shoes", "richTextDescription": "string", "title": "Trail Running Shoes Black", "url": "https://shop.example.com/product/SKU12345" }, "mediaAsset": { "additionalImageUrls": [ "https://shop.example.com/products/shoe.jpg", "https://shop.example.com/products/shoe1.jpg" ], "imageUrl": "https://shop.example.com/image1.jpg", "videoUrls": [ "https://shop.example.com/products/video.mov", "https://shop.example.com/products/video1.mov" ] }, "pricing": { "price": { "currencyCode": "USD", "value": 2000 }, "salePrice": { "currencyCode": "USD", "value": 2000 }, "salePriceEndAt": "2026-04-01T07:49:14.738Z", "salePriceStartAt": "2026-04-01T07:49:14.738Z" }, "productIdentifier": { "brand": "Adyen", "mpn": "JAS12345PER", "gtin": "123456789543", "merchantProductId": "SKU12345" }, "variant": { "color": "Blue", "customVariants": [ { "label": "Summer sale", "number": "2025" } ], "gender": "male", "groupId": "SHOE123GROUP", "size": { "system": "US", "value": "10" } } } ], "merchantAccount": "ADYEN_MERCHANT_ACCOUNT" }' ``` **Multi-platform item (single SKU sent to both Meta and OpenAI)** **Multi-platform request** ```bash curl -X POST https://commerce-suite-test.adyen.com/commerce-suite/productFeed/v1/ingestions \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'idempotency-key: YOUR_IDEMPOTENCY_KEY' \ -H 'content-type: application/json' \ -d '{ "items": [ { "platforms": ["Meta", "OpenAI"], "productIdentifier": { "brand": "Adyen", "merchantProductId": "SKU12345" }, "itemInformation": { "condition": "New", "description": "Waterproof trail shoe", "title": "Trail Running Shoes Black", "url": "https://shop.example.com/product/SKU12345", "eligibleCheckout": true, "eligibleSearch": true }, "mediaAsset": { "imageUrl": "https://shop.example.com/image1.jpg" }, "pricing": { "price": { "currencyCode": "USD", "value": 2000 } }, "availabilityInventory": { "availability": "InStock" } } ], "merchantAccount": "ADYEN_MERCHANT_ACCOUNT" }' ``` **Response** **Response 200 OK** ```json { "ingestionId": "PPKFQ89R6QRXGN82", "status": "Pending" } ``` ### DELETE /v1/ingestions **Delete products from a single platform** **Delete from single platform** ```bash curl -X DELETE https://commerce-suite-test.adyen.com/commerce-suite/productFeed/v1/ingestions \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'idempotency-key: YOUR_IDEMPOTENCY_KEY' \ -H 'content-type: application/json' \ -d '{ "items": [ { "platforms": ["Meta"], "productIdentifier": { "merchantProductId": "SKU12345" } } ], "merchantAccount": "ADYEN_MERCHANT_ACCOUNT" }' ``` **Delete products from multiple platforms** **Delete from multiple platforms** ```bash curl -X DELETE https://commerce-suite-test.adyen.com/commerce-suite/productFeed/v1/ingestions \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'idempotency-key: YOUR_IDEMPOTENCY_KEY' \ -H 'content-type: application/json' \ -d '{ "items": [ { "platforms": ["Meta", "OpenAI"], "productIdentifier": { "merchantProductId": "SKU12345" } }, { "platforms": ["Meta", "OpenAI"], "productIdentifier": { "merchantProductId": "SKU67890" } } ], "merchantAccount": "ADYEN_MERCHANT_ACCOUNT" }' ``` **Response** **Response 200 OK** ```json { "ingestionId": "PPKFQ89R6QRXGN82", "status": "Pending" } ``` ### GET /v1/ingestions/{ingestionId} Returns per-platform processing status. The response contains a `platformStatuses` array so multi-platform ingestions can be tracked independently per target. **Response** **Response 200 OK** ```json { "ingestionId": "PPKFQ89R6QRXGN82", "platformStatuses": [ { "platform": "Meta", "status": "Processed", "summary": { "failed": 0, "pending": 0, "processing": 0, "success": 1, "total": 1 }, "errors": [] }, { "platform": "OpenAI", "status": "Failed", "summary": { "failed": 1, "pending": 0, "processing": 0, "success": 0, "total": 1 }, "errors": [ { "errorCode": "INVALID_IMAGE_URL", "merchantProductId": "SKU12345", "message": "imageUrl is not reachable" } ] } ] } ``` Ingestion status values: Pending, Processing, ProcessingOnPlatform, Succeeded, Failed, Processed.