Find the answer to your question
When listing an item with ExternalProductID, or revising an item that was listed with ExternalProductID, do not include CategoryID in the request.
Doing so can lead to confusion and possible errors on subsequent ReviseItem calls.
The best way to illustrate this is with an example
For example, if an AddItem request includes
what happens is that the CategoryID which maps to the UPC or ISBN value will override the PrimaryCategory.CategoryID sent in the request, and the item will be listed in the "mapped" category.
The response of the AddItem call will not contain anything to indicate the actual category that the item was listed in, nor will it indicate anything to alert the caller that the item was listed in a CategoryID different than the one specified in the request.
What this can lead to on ReviseItem requests which include the same CategoryID that was explicity sent in the AddItem request is the following error:
<ShortMessage>Product is in the Attribute Set Id 1226.</ShortMessage>
<LongMessage>The product you selected does not match the Item Specifics you provided. Please update your product and Item Specifics information.</LongMessage>
In a specific example, the PrimaryCategory.CategoryID in the AddItem call was indicated as 618, but the item was actually listed in CategoryID 307 since the UPC value used in the request mapped to CategoryID 307.
Now, a ReviseItem request is made which includes PrimaryCategory.CategoryID as 618. This ReviseItem call will return the error noted above since the Item Specifics related metadata of the item will not match CategoryID 618.
A feature request has been made to have the original AddItem request return the actual CategoryID that the item was listed in when using ExternalProductID.
Right now, the only way to be sure which category that the item was listed in is to call GetItem.