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)

tools/call
{
  "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

NameTypeDescription
storerequiredstringthe store ref `<store>-<CC>` (name-country, e.g. 'myStore-US') — one of get_user_context's store_refs, verbatim.
feedTyperequiredstringAmazon'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.
feedDatarequiredstringthe 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.
contentTyperequiredstringMIME type of feedData: 'application/json; charset=UTF-8' (JSON_LISTINGS_FEED), 'text/xml; charset=UTF-8' (XML feeds), 'application/pdf' (UPLOAD_VAT_INVOICE).
feedOptionsobjectfeed-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*: string

Body (Amazon schema; createFeed)

feedType*: string
marketplaceIds*: [string] (1–25)
inputFeedDocumentId*: string
feedOptions: object

Gotchas

  • 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).

On this page

Actions

View as Markdown

Ask an assistant

Ask ChatGPTAsk Claude