Skip to main content
POST
/
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 customField = await client.products.customFields.create('prod_UkLWZg9DAJ', {
  custom_field_definition_id: 'cfdef_AbC123XyZ',
  value: 'wool',
})
{
  "id": "cf_gbHJdmfrXB",
  "label": "Description",
  "type": "Spree::Metafields::LongText",
  "field_type": "long_text",
  "key": "custom.description",
  "value": "A longer description",
  "created_at": "2026-05-21T18:11:33.356Z",
  "updated_at": "2026-05-21T18:11:33.356Z",
  "storefront_visible": true,
  "custom_field_definition_id": "cfdef_gbHJdmfrXB"
}

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

Body

application/json
custom_field_definition_id
string
required

Prefixed cfdef_… id

value
any
required

Value matching the definition's field_type

Response

custom field created