Skip to main content
cURL
Cost: 1 API credit per write.
Needs the listings:write scope and the Listing optimization workspace permission. Send dry_run=true to see what would be sent without sending it.
Etsy has no undo. A delete can never be reverted (not_revertable_reason: "delete").
Etsy needs the listings_d permission on the shop’s connection, which shops connected through the older Alura app may lack. Such a shop answers 403 etsy_scope_required with reconnect_url and missing_scopes before anything is sent. Etsy refusing the delete for that reason answers the same, and the shop’s connection.capabilities.delete_listings then reads restricted (Get shop).
To take a listing off sale without deleting it, send state: "inactive" to Update listing. 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.

Response

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

object
string
required
Allowed value: "workspace.listing"
id
string
required

Etsy ID, as a string.

shop_id
string
required

Etsy ID, as a string.

title
string | null
required

The title as Etsy answered; null when Etsy did not say.

description
string | null
required

The description as Etsy answered; null when Etsy did not say.

url
string | null
required

The listing on Etsy.

state
string | null
required

Etsy's listing state, for example active, inactive or draft.

price
object | null
required

The listing's price as Etsy answered; usd is null unless the listing is priced in USD.

quantity
integer | null
required

The listing's total quantity across its enabled offerings, as Etsy and get_my_listing count it (not the per-offering value a request sends: 3 on each of 2 variants is 6).

skus
string[] | null
required

The SKUs of the listing's offerings as Etsy answered; null when Etsy did not say.

tags
string[] | null
required

The tags as Etsy answered; null when Etsy did not say.

materials
string[] | null
required

The materials as Etsy answered; null when Etsy did not say.

category
object | null
required

Etsy's category (category_id in the request).

section
object | null
required

The shop section; null when the listing is in none.

shipping_profile_id
string | null
required

The listing's shipping profile; null when it has none or Etsy did not say.

return_policy_id
string | null
required

The listing's return policy; null when it has none or Etsy did not say.

processing_profile_id
string | null
required

The processing profile every offering has; null when they differ or Etsy did not say.

production_partner_ids
string[] | null
required

The production partners as Etsy answered; null when Etsy did not say.

Etsy ID, as a string.

who_made
string | null
required

Etsy's who_made: i_did, someone_else or collective; null when Etsy did not say.

when_made
string | null
required

Etsy's when_made, for example made_to_order; null when Etsy did not say.

is_supply
boolean | null
required

true: a craft supply or tool; false: a finished product; null when Etsy did not say.

should_auto_renew
boolean | null
required

true: Etsy renews the listing automatically when it expires; null when Etsy did not say.

updated_at
string | null
required

When Etsy last changed the listing.

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.