Replace Product Images
PUT/api/v1/products/:id/images
Replace the full ordered image list of one product in a single call (attach, reorder and remove; first is primary, an empty list clears all). Requires scope crm:write and the Products add_edit permission on this product. Every key must be a canonical tenant key from the upload-urls endpoint or an already-stored key, or the save is refused; the product owner is never changed.
Request
Responses
- 200
- 400
- 401
- 403
- 404
- 422
- 429
- 500
- 503
Success. Returns the saved image list as submitted (stored keys); call GET /api/v1/products/{id}/images for resolved display URLs (image_url).
Canonical personal-token bad request, including PUBLIC_POSITION_REQUIRED or PUBLIC_ACTOR_OVERRIDE_NOT_ALLOWED.
The Bearer personal token is missing, malformed, inactive, expired, revoked, or CIDR-blocked. Personal-token 401 responses include the Bearer challenge. Temporary validation outages return 503 instead.
Response Headers
Canonical personal-token authorization denial, including unavailable or unauthorized position selection.
Product not found
A submitted image key failed the ownership check.
Rate limit exceeded
Response Headers
Active public API plan applied to the request. Free and Kickstarter are blocked before rate buckets are consumed.
Rate-limit bucket used for the request. List-style POST endpoints are counted as reads; mutation endpoints are counted as writes.
Maximum number of requests allowed for the active bucket in the current one-second rate-limit window.
Maximum read requests allowed per second for the active plan. Pro is 100; Unlimited is 500.
Maximum write requests allowed per second for the active plan. Pro is 25; Unlimited is 125.
Number of requests remaining for the active bucket in the current one-second rate-limit window.
Unix timestamp, in seconds, when the current rate-limit window resets.
HTTP date when the current limit resets. Present on 429 responses.
Internal Server Error
Personal access token validation is temporarily unavailable.