feeds_createFeed
Submit a feed to Amazon (createFeedDocument upload + createFeed); returns feedId at once.
destructiveAmazon Seller (SP-API)sp.feeds_2021-06-30
The marketplace comes from the store ref. Poll feeds_getFeed until processingStatus is DONE, FATAL or CANCELLED (FATAL/CANCELLED never becomes DONE — stop and report). Amazon SP-API · createFeedDocument · POST /feeds/2021-06-30/documents Amazon SP-API · createFeed · POST /feeds/2021-06-30/feeds Gate: commit — interactive: restate exactly what will happen, wait for a typed CONFIRM; autopilot: only within the seller's instruction and stated limits; otherwise ask.
Call it
In an AI client (MCP)
{
"name": "feeds_createFeed",
"arguments": {
"store": "myStore-US",
"feedType": "<feedType>",
"feedData": "<feedData>",
"contentType": "<contentType>"
}
}From code (Tool API)
curl -X POST https://api.sellersheetai.com/api/v1/tools/feeds_createFeed \
-H "Authorization: Bearer $SELLERSHEET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"store":"myStore-US","feedType":"<feedType>","feedData":"<feedData>","contentType":"<contentType>"}'Early access — the Tool API is open on request, contact us.
Arguments
| Name | Type | Description |
|---|---|---|
storerequired | string | the store ref `<store>-<CC>` (name-country, e.g. 'myStore-US') — one of get_user_context's store_refs, verbatim. |
feedTyperequired | string | Amazon's feed type string (100+ values; the exact string, see https://developer-docs.amazon.com/sp-api/docs/feed-type-values). Common: JSON_LISTINGS_FEED (listings — the XML/flat-file product feeds are deprecated), POST_INVENTORY_AVAILABILITY_DATA, POST_PRODUCT_PRICING_DATA, POST_PRODUCT_IMAGE_DATA, POST_ORDER_FULFILLMENT_DATA, POST_ORDER_ACKNOWLEDGEMENT_DATA, UPLOAD_VAT_INVOICE, POST_FBA_INBOUND_CARTON_CONTENTS, POST_EASYSHIP_DOCUMENTS. |
feedDatarequired | string | the feed body, base64-encoded; decoded it must match feedType and contentType (JSON for JSON_LISTINGS_FEED, XML for POST_* feeds, PDF bytes for UPLOAD_VAT_INVOICE). A JSON_LISTINGS_FEED body is {header, messages}: header = {sellerId (the store's seller id from get_user_context), version "2.0", issueLocale, report: {includedData: ["issues", …], apiVersion "2021-08-01"}} — always include "issues" so feeds_getFeed carries per-SKU issues; add "relationships" when touching a variation group. Each message = {messageId (unique int), sku, operationType, …} with ONE of four shapes: UPDATE → productType + attributes (the full set; optional requirements LISTING | LISTING_PRODUCT_ONLY | LISTING_OFFER_ONLY) — creates or fully republishes a listing; PARTIAL_UPDATE → productType + attributes (only those sent are merged; no patches); PATCH → productType + patches (JSON-Patch op replace|merge|delete on /attributes/<name>; no attributes); DELETE → sku only. attributes and patches are never interchangeable (a PARTIAL_UPDATE with patches 400s). Attribute values have exactly the shape listings_getListingsItem returns (e.g. item_thickness → [{decimal_value: 3.6, unit: "millimeters", marketplace_id}]): read the current ones with listings_getListingsItem(included_data=['attributes', 'productTypes']), model a new ASIN from catalogItems_getCatalogItem, or validate against productTypeDefinitions_getDefinitionsProductType. |
contentTyperequired | string | MIME type of feedData: 'application/json; charset=UTF-8' (JSON_LISTINGS_FEED), 'text/xml; charset=UTF-8' (XML feeds), 'application/pdf' (UPLOAD_VAT_INVOICE). |
feedOptions | object | feed-specific metadata; for UPLOAD_VAT_INVOICE {'metadata:orderid': '<amazonOrderId>', 'metadata:invoicenumber': '<invoiceNumber>'}. |
Result
Every tool answers {notification, data, human_action}; data carries:
data.feedId— poll it with feeds_getFeed.data.feedDocumentId— the uploaded document.data.processingStatus— always 'IN_QUEUE' here — Amazon's createFeed carries only feedId.data.feedType— as submitted.
Body (Amazon schema; createFeedDocument)
contentType*: stringBody (Amazon schema; createFeed)
feedType*: string
marketplaceIds*: [string] (1–25)
inputFeedDocumentId*: string
feedOptions: objectGotchas
- A seller with a GTIN exemption can get a NEW ASIN spun off even on a PARTIAL_UPDATE: always send externally_assigned_product_identifier [{type: "asin", value: <the ASIN>, marketplace_id}] to keep the SKU bound to its ASIN (Amazon accepts type "asin" although the schema lists ean|gtin|upc). For Publish Queue rows use listings_submit_feed (it builds this feed from the sheet's keys).