# Responses and errors ### Status codes | Status | Meaning | |---|---| | `200 OK` | The request succeeded and the response contains data (or, for the attribute update, the value was saved). | | `201 Created` | The product or image was created. | | `202 Accepted` | The request was accepted, but nothing had to be changed: a new product with stock `0` (not created), or a delete of a product that does not exist. | | `204 No Content` | The product was updated or deleted. | | `207 Multi-Status` | The product was saved, but some values were invalid and were skipped. The response lists them in `skipped_attributes`. | | `401 Unauthorized` | The access token is missing, invalid or expired. Request a new token. | | `403 Forbidden` | Your account is not allowed to use this endpoint. | | `404 Not Found` | The product does not exist, was deleted, or is not yours. | | `406 Not Acceptable` | The `Accept` header does not allow `application/json`. | | `409 Conflict` | Another change to the same product group was being processed. **Nothing was saved**; send the same request again after a short pause. | | `415 Unsupported Media Type` | Wrong `Content-Type` header. Use `application/json` (or `multipart/form-data` for media files). | | `422 Unprocessable Entity` | The request was understood, but the data is not valid. `message` explains what is wrong. **Nothing was saved.** | | `500 Internal Server Error` | An unexpected error on our side. Try again later; contact Partner Success if it persists. | ### Error body Errors are returned as JSON with the HTTP status and a message: ```json { "code": 422, "message": "The color value darkblue is not supported/disabled" } ``` When several values are invalid, `message` describes the first problem found. Fix it and send the request again to see if anything else is wrong. ### Skipped values (207) When you **update** an existing product, an invalid brand, colour, size, price or MSRP, or text with unsupported HTML, does not block the whole update. The valid values are saved, the invalid values keep their previous value, and the response lists what was skipped: ```json { "code": 207, "message": "Product updated with skipped attributes", "skipped_attributes": [ { "attribute": "color", "value": "darkblue", "reason": "The color value darkblue is not supported/disabled" } ] } ``` When you **create** a product, the same problems are answered with `422` and the product is not created. One case gives `207` on a create as well: a value for an attribute that does not apply to this kind of product (its Winkelstraat family). That value is skipped with the reason `Attribute "" is not in the attribute set of family variant "" and was skipped`; the product itself **is** created. The `message` then still reads `Product updated with skipped attributes`, so do not use the `207` to tell a create from an update. ### Retrying * `409`: always safe to retry with the same request. * `422`: correct the data first; retrying the same request gives the same error. * `401`: request a new token, then retry. * `5xx`: retry later. Common messages for product values are listed in **Attribute values**.