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

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

const { data: customFields } = await client.products.customFields.list('prod_UkLWZg9DAJ')
{
  "data": [
    {
      "id": "cf_UkLWZg9DAJ",
      "label": "Title",
      "type": "Spree::Metafields::ShortText",
      "field_type": "short_text",
      "key": "custom.title",
      "value": "wool",
      "created_at": "2026-05-21T18:11:32.732Z",
      "updated_at": "2026-05-21T18:11:32.732Z",
      "storefront_visible": true,
      "custom_field_definition_id": "cfdef_UkLWZg9DAJ"
    }
  ],
  "meta": {
    "page": 1,
    "limit": 25,
    "count": 1,
    "pages": 1,
    "from": 1,
    "to": 1,
    "in": 1,
    "previous": null,
    "next": null
  }
}

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

Path Parameters

product_id
string
required

Query Parameters

expand
string

Comma-separated associations to expand (e.g., custom_field_definition). Use dot notation for nested expand (max 4 levels).

fields
string

Comma-separated list of fields to include (e.g., key,value,namespace). id is always included.

Response

200 - application/json

custom fields found