Skip to main content
GET
Get product by slug

Authorizations

x-api-key
string
header
default:sfk_your_api_key
required

Storefront API key (sfk_...)

Path Parameters

slug
string
required

Product slug

Response

200 - application/json

Product retrieved successfully

id
string
required

Unique identifier for the product

Example:

"123e4567-e89b-12d3-a456-426614174000"

productId
string
required

ID of the product

Example:

"123e4567-e89b-12d3-a456-426614174000"

externalId
string
required

External platform product ID (e.g. Shopify Product ID)

Example:

"1234567890"

externalVariantId
string
required

External platform variant ID (e.g. Shopify Variant ID)

Example:

"9876543210"

storeId
string
required

ID of the store that owns this product

Example:

"123e4567-e89b-12d3-a456-426614174001"

slug
string
required

URL-friendly slug for the product (unique per store)

Example:

"haircut-basic"

scheduleId
string
required

ID of the schedule associated with this product

productPoolId
string | null
required

ID of the product pool this product belongs to (controls overlap prevention)

title
string
required

Title of the product

Example:

"Haircut Service"

variantTitle
string
required

Title of the specific product variant

Example:

"Short Hair"

description
string
required

Detailed description of the product

imageId
string
required

ID of the product image

color
enum<string>
default:slate
required

Color code for displaying the product

Available options:
slate,
gray,
zinc,
neutral,
stone,
red,
orange,
amber,
yellow,
lime,
green,
emerald,
teal,
cyan,
sky,
blue,
indigo,
violet,
purple,
fuchsia,
pink,
rose
Example:

"BLUE"

price
number
required

Price of the product

Example:

250

taxable
boolean
default:false
required

Whether the product is taxable

duration
number
required

Duration of the service in seconds

Example:

3600

allowCustomDuration
boolean
default:false
required

Whether customers can customize the duration by selecting multiples of the base service duration (e.g., if base duration is 1 day, customers can book 1, 2, 3+ days)

maxDuration
number
default:-1
required

When allow_custom_duration=true, maximum duration allowed for multi-duration bookings in seconds (-1 for unlimited)

maxAttendees
number
default:1
required

Maximum number of attendees allowed

maxGuests
number | null
required

Maximum number of guests allowed per appointment. Null means unlimited.

allowGuests
boolean
default:false
required

Whether customers can invite guests to the appointment

allowCustomerReschedule
boolean
default:false
required

Whether customers can reschedule their bookings

allowCustomerCancel
boolean
default:false
required

Whether customers can cancel their bookings

rescheduleGap
number
required

Time in seconds before appointment when rescheduling is no longer allowed

cancelGap
number
required

Time in seconds before appointment when cancellation is no longer allowed

beforeGap
number
required

Buffer time in seconds required before this service

afterGap
number
required

Buffer time in seconds required after this service

fixedTimes
boolean
default:false
required

When allow_custom_duration=true, whether appointments must start and end at fixed times (like fixed check-in/check-out times for multi-duration bookings)

fixedStartTime
string
required

When allow_custom_duration=true and fixed_times=true, the fixed time when appointments must start (HH:MM:SS) - specified in the product's schedule timezone, or user settings timezone if no schedule is assigned

Example:

"09:00:00"

fixedEndTime
string
required

When allow_custom_duration=true and fixed_times=true, the fixed time when appointments must end (HH:MM:SS) - specified in the product's schedule timezone, or user settings timezone if no schedule is assigned

Example:

"17:00:00"

advanceScheduleThreshold
number
default:0
required

How many days in advance bookings can be made

sendConfirmationEmail
boolean
default:true
required

Whether to send confirmation emails for bookings

sendReminderEmail
boolean
default:false
required

Whether to send reminder emails before appointments

sendFeedbackEmail
boolean
default:false
required

Whether to send feedback request emails after appointments

skipCheckout
boolean
default:false
required

Whether to skip the checkout process for this product (Shopify merchants only)

status
enum<string>
default:active
required

Current status of the product

Available options:
active,
inactive
Example:

"ACTIVE"

createdAt
string
required

Timestamp when the product was created

updatedAt
string
required

Timestamp when the product was last updated

deletedAt
string
required

Timestamp when the product was deleted (for soft deletes)

variants
object[]
required

Variants of this product

image
object | null

Primary image of the product

Last modified on July 26, 2026