Skip to main content
cURL
Cost: 1 API credit per write.
Changes the live listing on Etsy. Send one entry per value, all of one property, each value once. "images": [] removes every variation image. Needs the listings:write scope and the Listing optimization workspace permission. Send dry_run=true to see the planned write without sending it.
Variation images are images: Revert change never restores them.
Take property_id and value_id from the listing’s inventory property_values, and image_id from its images (Get listing with expand=inventory).

Refused before anything is sent

The answer

Send an Idempotency-Key with every write: see Idempotency. Another write to the listing in flight answers 409 listing_busy. Credits and limits says when a write is charged.

Authorizations

Authorization
string
header
required

An API key: Authorization: Bearer alura_sk_....

Headers

Idempotency-Key
string

Makes a retry safe: the same key with the same request within 24 hours answers from the first write (with Idempotent-Replayed: true) and never writes to Etsy twice; a write that failed with nothing written (Retry-After set) is tried again under it. The same key with a different request is a 409 conflict; while the first request still runs, 409 idempotency_processing (or the same 202). Required for relative changes such as adjust_price, and to add a listing file, image or video, or to change the alt text of an image (each uploads to Etsy, so a blind retry would upload again); a dry_run=true needs none.

Required string length: 1 - 255

Path Parameters

id
string
required

The Etsy listing ID. A listing outside the workspace is 404.

Pattern: ^[0-9]{1,20}$
Example:

"1834720561"

Query Parameters

dry_run
boolean

true: plan the write and send nothing: what it would change, the Etsy calls it would make, and nothing reserved, charged or recorded. Free; counts toward the per-minute write limit.

Body

application/json
images
object[]
required

Which image shows each value of ONE variation property; it replaces the whole set. [] removes them all.

Maximum array length: 400

Response

OK: the write landed on Etsy (or, with dry_run=true, what it would do).

object
string
required
Allowed value: "workspace.listing_variation_images"
listing_id
string
required

Etsy ID, as a string.

shop_id
string
required

Etsy ID, as a string.

images
object[] | null
required

The variation images as Etsy holds them after the write; null when Etsy's answer was not readable.

as_of
string
required

When Etsy answered the write.

change
object
required

The write: its change ID and what landed.

notices
object[]
required

Why a part of the answer is unknown; empty when nothing is.