Products - By Slug

Update an existing product by slug

This endpoint allows you to update an existing product on Depop using its slug. The product will be updated with the new details in the request. Required OAuth Scopes: - products_write - Required for all product operations - offers_write - Required when setting auto_send_offer_price or auto_negotiate_offer_price Note: This endpoint only supports updating existing products. If the slug does not exist, a 404 error will be returned. To create a new product, use the POST /api/v1/products/ or PUT /api/v1/products/by-sku/{sku}/ endpoint instead. SKU: You can set or change the product's sku by including it in the request. Omitting sku leaves the product's current SKU unchanged - it is never cleared by a PUT.

put/api/v1/products/by-slug/{slug}/

Request

Path parameters

slugstring required

The slug of the product to update.

Request body

descriptionstring required

A good description should contain key attribute information (brand, category, color, size, age etc), clarifying information about flaws, condition, fit, size and measurements. Commonly they end with hash tags (for example, #summer). Constraints:

  • Limited to 1000 characters
  • Email addresses are not allowed
  • Can only have up to 5 hashtags (for example, #summer).
price_currencystring required

The currency code of the item's price.

price_amountstring required

The price of the item. Must be at least $1.00 or £1.00. Up to 2 decimal places.

auto_send_offer_pricestring

The price to automatically send to buyers who liked or have bagged the product. There's a fixed 1h delay before an offer is sent. If not set, the product will not automatically send offers. Must be less at least 5% off the price_amount. Up to 2 decimal places. Note: Requires offers_write OAuth scope.

auto_negotiate_offer_pricestring

The price to automatically respond with when a buyer sends an offer in this product:

  • If the buyer offer is higher or equal to this value, then the offer will be automatically accepted.
  • If the buyer offer is lower than this value, then the offer will be automatically countered with this price.

If the buyer counters again, the same value will be used to counter the buyer's offer. If not set, the offers will not be automatically responded to. Must be less at least 5% off the price_amount. Up to 2 decimal places. Note: Requires offers_write OAuth scope.

international_shipping_coststring

The cost of shipping the product internationally. Only set this if the product can be shipped internationally. Same currency as price_currency.

national_shipping_coststring

The cost of shipping the product nationally. Same currency as price_currency. If set to 0, the product has free shipping for buyers. Important: Either national_shipping_cost OR depop_shipping must be provided. If using Depop managed shipping, use depop_shipping instead and omit this field.

quantitynumber required

The quantity of the product available for sale. Must be at least 1.

departmentstring required

Top level category of the product. Currently we support: womenswear, menswear, kidswear and everything-else. These rarely change. For an up to date list, please make use of our taxonomy endpoint. Currently, in https://api.depop.com/api/v3/attributes/ under the key department.

product_typestring required

The more specific category of the product. Note that there's an intermediate level between department and product type called "group". We don't need to receive this when an item is being listed but it's used in the apps/website to organize the product types. For example, in "menswear >> swim-beach-wear >> swimsuit-one-piece", we only need to know the department "menswear" and the product type "swimsuit-one-piece". For an up to date list, please make use of our taxonomy endpoint. Currently, in https://api.depop.com/api/v3/attributes/ under the key group.

size_set_idnumber

The size set ID for the given Department and Product Type. This field is mandatory for product types that have a size set available.

size_idnumber

The size ID for a given size Set ID. This field is mandatory for product types that have a size set available.

condition'brand_new' | 'used_like_new' | 'used_excellent' | 'used_good' | 'used_fair' required
colourstring[]
stylestring[]
agestring[]
sourcestring[]
brand_namestring required

The brand name of the product. For example, "Nike". If your product does not have a brand, please send "unbranded" which will show to our users as "Other". Our API will perform the brand matching based on this field to find the most accurate brand representation. If no match is found, we will default to "unbranded".

attributesobject required

Additional attributes of the product. Required field: Must be included in the request. Use an empty object {} if the product has no attributes. For an up to date list, please make use of our attributes endpoint.

is_boostedboolean

Whether to boost the product. For new products, you don't need to send this with true if you have a "boosted shop" or you're part of the "free boost trial". For existing products, when omitting, the current boost state is preserved. This is important as an explicit false will disable "boosted shop" feature or end the "free boost trial".

skustring

Optional. The product's SKU. Provide a value to set or change it. Omitting the field leaves the product's current SKU unchanged - unlike the other fields on this endpoint, an absent sku is never treated as a full replacement, so a PUT cannot clear a SKU. Must be unique - reusing a SKU that already belongs to another product fails with a 422 duplicate_sku error, and leaves both products unchanged.

Example request

{
  "address": {
    "country_code": "GB",
    "state": "Greater London"
  },
  "description": "Vintage Nike T-Shirt in excellent condition.\nBlack with white swoosh logo on the front.\nSize medium, fits true to size.\nSmall mark on the left sleeve (see last image).\n\n#vintage #nike #streetwear #90s",
  "price_currency": "GBP",
  "price_amount": "25.99",
  "auto_send_offer_price": "20.00",
  "auto_negotiate_offer_price": "20.00",
  "national_shipping_cost": "3.50",
  "international_shipping_cost": "12.00",
  "quantity": 1,
  "pictures": [
    {
      "url": "https://images.ctfassets.net/itoh30v6uh9a/3c1QQDGUAEHH9A76ovYSTA/1837e557daee3c763b6fbedd19785094/WW.jpg#type=cover-image"
    },
    {
      "url": "https://images.ctfassets.net/itoh30v6uh9a/3c1QQDGUAEHH9A76ovYSTA/1837e557daee3c763b6fbedd19785094/WW.jpg#type=back"
    },
    {
      "url": "https://images.ctfassets.net/itoh30v6uh9a/3c1QQDGUAEHH9A76ovYSTA/1837e557daee3c763b6fbedd19785094/WW.jpg#type=tag"
    }
  ],
  "department": "menswear",
  "product_type": "tshirts",
  "size_set_id": 52,
  "size_id": 10,
  "condition": "used_excellent",
  "colour": [
    "black",
    "white"
  ],
  "style": [
    "streetwear",
    "retro",
    "sportswear"
  ],
  "age": [
    "90s"
  ],
  "source": [
    "vintage",
    "preloved"
  ],
  "brand_name": "Nike",
  "attributes": {
    "sleeve-length": [
      "short"
    ],
    "material": [
      "cotton"
    ],
    "occasion": [
      "casual"
    ]
  },
  "is_boosted": false,
  "sku": "ABC-12345-S-BL"
}

Response

Successful operation

product_idnumber required

The product id of the created or updated product.

slugstring required

The URL-friendly identifier for the product on Depop. This can be used with the /api/v1/products/by-slug/{slug}/ endpoints.

skustring nullable

The SKU of the product.

  • For PUT /api/v1/products/by-sku/{sku}/: Always present (same as the SKU in the URL path). - For PUT /api/v1/products/by-slug/{slug}/: Present if the product has a SKU, otherwise null. - For PUT /api/v1/products/by-product-id/{productId}/: Present if the product has a SKU, otherwise null. - For POST /api/v1/products/: Present if SKU was provided in the request, otherwise null.

Example response

{
  "product_id": 12345678,
  "slug": "vintage-nike-t-shirt-12345678",
  "sku": "ABC-12345-S-BL"
}

Changes

No recorded changes to this operation across all 1 revision of this API.