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 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:
- Batch Ingestion: You upload product data in batches of up to 200 items. Each item declares its target platforms via a
platformsarray. - Semantic Mapping: Adyen processes your data and maps it to industry-standard Agentic Commerce protocols.
- 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.
- 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\<Enum> | 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\<Object> | 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.
- 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, andpopularityScore.
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 with all supported fields
Meta request with only required fields
Meta request with all supported fields
Multi-platform item (single SKU sent to both Meta and OpenAI)
Response
DELETE /v1/ingestions
Delete products from a single platform
Delete products from multiple platforms
Response
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
Ingestion status values: Pending, Processing, ProcessingOnPlatform, Succeeded, Failed, Processed.