Skip to main content
POST
Create product
Requests go to the live environment — all actions are real.
Starting August 25, 2026, this page describes how product creation works. Three things change from the previous contract:
  • international_ids is now required. A product sent without a universal identifier (EAN, UPC, GTIN or ASIN) is rejected.
  • condition is now required, and only NEW, REFURBISHED_A and OPEN_BOX are accepted.
  • The response no longer returns seller_product_id. It confirms the product was accepted, not that it finished being created.
Update your integration before that date to avoid failed creations. If you have any questions, reach out to your account manager.

Authorization

string
required
Your seller API key. Provided by your nocnoc account manager.

Body parameters

string
required
Alphanumeric unique code for the product. Between 1 and 45 characters, and it must start with a letter or a number.Spaces are removed from the value before it is stored, so SKU 001 is stored as SKU001. Send it without spaces: every other endpoint addresses the product by the stored value, so a SKU sent with spaces will not be found afterwards.
object
required
Universal identifiers for the product. At least one type with at least one value is required.Supported types: gtin, ean and upc (numeric, 12 to 14 digits), and asin (alphanumeric, exactly 10 characters). Type names are case-insensitive, and spaces inside a value are removed before it is validated and stored. You can send more than one type in the same request. Example: { "gtin": ["4901234567890"], "asin": ["B00QAIV7V2"] }.gtin, ean and upc are the same identifier downstream — sending a value under two of those types adds no information. Of the ASINs you send, only the first one is used to build the product.An identifier can only be used once per condition across your catalog. Reusing the same identifier with the same condition on a different SKU is rejected. Reusing it with a different condition is accepted by this endpoint, but the product is not created afterwards — see Checks that run after you get the response.
integer
required
Stock quantity. Must be 0 or greater, and 9999 at most.
number
required
Price of the product, always in USD. Between 0.01 and 9998.99, with up to 2 decimal places.
string
required
Product condition. One of: NEW, REFURBISHED_A, OPEN_BOX. Case-insensitive.REFURBISHED_A_PLUS is listed as valid in our validation messages, but it cannot be published — do not use it.
string
required
Product title to be published. Between 1 and 255 characters. Leading and trailing spaces are trimmed.
string
required
Product description to be published. Cannot be empty. Leading and trailing spaces are trimmed.
object
Dimensions of the package. Contains size (object with unit, length, width, height) and weight (object with unit, value). Size units: cm, inch, inches, mm. Weight units: kg, lb, gram, kilogram, pound. Every value must be greater than 0.
object
Dimensions of the product itself. Same structure as package_dimensions.
Both objects are optional because we complete them from the Amazon listing matched by the identifier you send: Amazon’s values win, and whatever it does not carry is filled in from your request. Send them when you can anyway — if we cannot match your product, or the match has no dimensions, there is no shipping weight and the product is not created. See Checks that run after you get the response.
array
Array of image objects, each with a source_url field. Maximum 10.The response returns this field in a different shape: a flat array of URL strings, not the objects you sent.
string
Currency code (ISO). Only USD is supported. Defaults to USD when omitted.
string
Language of the description. Only en is supported. Defaults to en when omitted.
Fields that are not listed above are ignored. The product data we publish is taken from the nocnoc catalog entry matched by the identifier you send.

Returns

201 Created with the product data you submitted, plus a status field. status: "PENDING" means the product passed validation and was accepted — creation then continues on our side, so it does not mean the product is already published. Poll Get product with your SKU to follow its status. The response does not include a product id. Nothing in this API takes one as input: reads, stock and price updates are all addressed by your own SKU. Values come back normalized rather than exactly as you sent them: identifier type names are uppercased and their values sorted, condition is uppercased, and images is a flat list of URLs instead of the objects you sent. currency_code and description_language are not echoed back.

Example request

Errors

Validation errors come back with status 400 in one of two shapes, and neither creates the product — fix what is reported and retry the same request. Field checks — a required field is missing, or its type, length or range is wrong:
Business rules — identifier format, unknown condition, duplicate SKU or duplicate identifier:
A SKU you already created comes back in that same shape:
In this second shape message is always Invalid Request Payload.; the detail is in errors, with one entry per problem found. Format problems are reported first: if any of them is present you will not see the duplicate-identifier check in the same response, so fix the format and send the request again to find out whether the identifier is free:

Checks that run after you get the response

A 201 with status: "PENDING" means the request passed the checks above — not that the product was created. Some rules are only applied in the step that follows, and when one of them fails the product is silently not created: no error reaches your integration, and the SKU never shows up in Get product. These are the rules in that group:
  • no shipping weight can be worked out: package_dimensions.size, product_dimensions.size or package_dimensions.weight missing from your request and not recoverable from the Amazon match either
  • available_quantity above 9999
  • price with more than 2 decimal places
  • more than 10 images
  • currency_code other than USD, or description_language other than en
  • a SKU that does not start with a letter or a number
  • a GTIN, EAN, UPC or ASIN already used by another of your products. This check ignores condition, so an identifier you reuse with a different condition passes the checks above and still ends up not being created
Because of this, always confirm a creation with Get product before treating the SKU as live.

502

A 502 means we could not confirm whether the product was created:
Retry the same request: sending the same SKU again is safe, we reconcile it instead of creating a duplicate. If the product already exists on our side, that retry answers 400 with A seller_catalog with sku '...' already exists for this seller.; otherwise it answers 201 again, echoing the entry we had stored, so package_dimensions, product_dimensions and images come back as null. That does not mean the data was lost.