Skip to main content
PATCH
/
api
/
v3
/
admin
/
products
/
{id}
Spree Admin SDK
import { createAdminClient } from '@spree/admin-sdk'

const client = createAdminClient({
  baseUrl: 'https://your-store.com',
  secretKey: 'sk_xxx',
})

const product = await client.products.update('prod_86Rf07xd4z', {
  name: 'Updated Name',
  status: 'active',
  tags: ['eco', 'sale'],
})
{
  "id": "prod_UkLWZg9DAJ",
  "name": "Updated Name",
  "slug": "product-451000",
  "meta_title": null,
  "meta_description": null,
  "meta_keywords": null,
  "variant_count": 0,
  "available_on": "2025-05-21T18:11:36.403Z",
  "purchasable": true,
  "in_stock": false,
  "backorderable": true,
  "available": true,
  "description": "Sequi in quas magni odio excepturi. Libero nostrum eius ipsa eos molestias officiis aut officia. Dignissimos ex distinctio velit ut molestiae ipsa animi. Minus architecto tempora error totam autem rerum soluta laboriosam. Assumenda alias temporibus dolorem laboriosam necessitatibus culpa eaque natus. Officia voluptate dolore occaecati molestias tenetur neque quia. Magni sit nisi sapiente ipsa ea similique. Repudiandae facilis veritatis sunt vitae consectetur tempora possimus fugiat.",
  "description_html": "Sequi in quas magni odio excepturi. Libero nostrum eius ipsa eos molestias officiis aut officia. Dignissimos ex distinctio velit ut molestiae ipsa animi. Minus architecto tempora error totam autem rerum soluta laboriosam.\nAssumenda alias temporibus dolorem laboriosam necessitatibus culpa eaque natus. Officia voluptate dolore occaecati molestias tenetur neque quia. Magni sit nisi sapiente ipsa ea similique. Repudiandae facilis veritatis sunt vitae consectetur tempora possimus fugiat.",
  "default_variant_id": "variant_UkLWZg9DAJ",
  "thumbnail_url": null,
  "tags": [],
  "price": {
    "id": "price_UkLWZg9DAJ",
    "amount": "19.99",
    "amount_in_cents": 1999,
    "compare_at_amount": null,
    "compare_at_amount_in_cents": null,
    "currency": "USD",
    "display_amount": "$19.99",
    "display_compare_at_amount": null,
    "price_list_id": null,
    "variant_id": "variant_UkLWZg9DAJ",
    "created_at": "2026-05-21T18:11:36.428Z",
    "updated_at": "2026-05-21T18:11:36.428Z"
  },
  "original_price": null,
  "status": "active",
  "make_active_at": "2025-05-21T18:11:36.403Z",
  "discontinue_on": null,
  "metadata": {},
  "deleted_at": null,
  "created_at": "2026-05-21T18:11:36.416Z",
  "updated_at": "2026-05-21T18:11:36.715Z",
  "tax_category_id": "taxcat_UkLWZg9DAJ"
}

Documentation Index

Fetch the complete documentation index at: https://spreecommerce.org/docs/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

x-spree-api-key
string
header
required

Secret API key for admin access

Authorization
string
header
required

JWT token for admin user authentication

Headers

x-spree-api-key
string
required
Authorization
string
required

Bearer token for admin authentication

Path Parameters

id
string
required

Product ID

Body

application/json
name
string
Example:

"Premium T-Shirt"

description
string
slug
string
status
enum<string>
Available options:
draft,
active,
archived
tax_category_id
string

Tax category ID

category_ids
string[]

Array of category IDs

tags
string[]
Example:
["eco", "sale"]
variants
object[]

Array of variant payloads. Variants can declare multiple option pairs via options: and per-currency prices via prices:. Stock counts go in stock_items: (per stock location).

Response

product updated

id
string
required
name
string
required
slug
string
required
meta_title
string | null
required
meta_description
string | null
required
meta_keywords
string | null
required
variant_count
number
required
available_on
string | null
required
purchasable
boolean
required
in_stock
boolean
required
backorderable
boolean
required
available
boolean
required
description
string | null
required
description_html
string | null
required
default_variant_id
string
required
thumbnail_url
string | null
required
tags
string[]
required
price
object
required
original_price
object
required
status
string
required
make_active_at
string | null
required
discontinue_on
string | null
required
metadata
object
required
deleted_at
string | null
required
created_at
string
required
updated_at
string
required
tax_category_id
string | null
required
primary_media
object
media
object[]
variants
object[]
default_variant
object
option_types
object[]
categories
object[]
custom_fields
object[]
prior_price
object