listings_submit_feed_legacy
Legacy Create Listing flow: submit flat Create Listing rows via JSON_LISTINGS_FEED or the Listings Items API — new work uses listings_submit_feed (Publish Queue keys).
destructiveAmazon Seller (SP-API)sp.definitionsProductTypes_2020-09-01
Amazon SP-API · getDefinitionsProductType · GET /definitions/2020-09-01/productTypes/{productType} Amazon SP-API · putListingsItem · PUT /listings/2021-08-01/items/{sellerId}/{sku} Amazon SP-API · patchListingsItem · PATCH /listings/2021-08-01/items/{sellerId}/{sku} Amazon SP-API · deleteListingsItem · DELETE /listings/2021-08-01/items/{sellerId}/{sku} 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. Accepts flat {header: value} rows — same format as the Create Listing sheet. The server encodes attributes. PATCH-delete rows always use Listings Items API.
Call it
In an AI client (MCP)
{
"name": "listings_submit_feed_legacy",
"arguments": {
"store": "myStore-US",
"rows": []
}
}From code (Tool API)
curl -X POST https://api.sellersheetai.com/api/v1/tools/listings_submit_feed_legacy \
-H "Authorization: Bearer $SELLERSHEET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"store":"myStore-US","rows":[]}'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. |
rowsrequired | object[] | 2D array [[headers], [row1], ...] or list of {header: value} dicts. |
config | object | Dict from sheet rows 1-2 (keys as in listings_validate_rows); omitted → asin / centimeters / kilograms / liters / count / en_US, so pass it on any non-US store. marketplace_id comes from the store. |
mode | string | 'feed' (bulk JSON_LISTINGS_FEED, default) or '1by1' (Listings Items API per row).Default: "feed" |
debug | boolean | true returns the built feed as data.feed_json (with data.encode_errors, data.patch_results) without submitting (feed mode only).Default: false |
Result
Every tool answers {notification, data, human_action}; data carries:
data.feedId— (feed mode) poll with listings_poll_feed_results.data.submitted / data.failed— (1by1 mode) counts.data.submissionLog— the Submission Log cells for this feed (Action, Result, SKUs in message order, Issues, Feed ID, Raw Response) — append them with write_sheet when the user keeps that tab.data.feedDocumentId— (feed mode) feed document ID.data.rowCount— (feed mode) rows actually written into the feed — LOWER than the rows you sent when some were excluded.data.results— (1by1 mode) per-SKU status list.data.encode_errors— {sku: {field: reason}} for rows that did NOT reach Amazon. A row in the split layout ('attr#n.sub' headers) is refused whole — it is not in the feed and not in rowCount, so fix it and resubmit (listings_build_payload + listings_submit_items for split rows). Other entries are per-attribute encode failures on rows that DID go.data.patch_results— [{sku, status, issues}] for PATCH-delete rows, which always go via Listings Items PATCH rather than the feed.
Params (Amazon schema; getDefinitionsProductType)
productType*: string
sellerId: string
marketplaceIds*: [string]
productTypeVersion: string
requirements: LISTING | LISTING_PRODUCT_ONLY | LISTING_OFFER_ONLY
requirementsEnforced: ENFORCED | NOT_ENFORCED
locale: DEFAULT | ar | ar_AE | de | … | zh_TW (38 values)
parentageLevel: NONE | CHILD | PARENTParams (Amazon schema; putListingsItem)
sellerId*: string
sku*: string
marketplaceIds*: [string] (max 1)
includedData: identifiers | issues (list)
mode: VALIDATION_PREVIEW
issueLocale: stringParams (Amazon schema; patchListingsItem)
sellerId*: string
sku*: string
… (9 more lines; the Docs link above)Body (Amazon schema; putListingsItem)
productType*: string
requirements: LISTING | LISTING_PRODUCT_ONLY | LISTING_OFFER_ONLY
attributes*: objectBody (Amazon schema; patchListingsItem)
productType*: string
patches*: [{op*: add | replace | merge | delete, path*, value: [object]}] (min 1)Body (Amazon schema; createFeedDocument)
contentType*: stringBody (Amazon schema; createFeed)
feedType*: string
marketplaceIds*: [string] (1–25)
inputFeedDocumentId*: string
feedOptions: objectWorkflow
- 1. read_sheet the Create Listing tab — config in rows 1–2, then the header row and data rows. 2. listings_validate_rows — fix all INVALID rows first. 3. Call this tool with the validated rows. 4. listings_poll_feed_results with data.feedId (and the row's SKUs) for per-SKU results.