Skip to main content
POST
JavaScript

Authorizations

Authorization
string
header
required

An Account API key, account-scoped JWT, App API key, or user OAuth token. Prepend the key or token with Bearer, for example Bearer ***************************.

Headers

Idempotency-Key
string

A unique key that makes this request safe to retry. See Idempotent requests.

Maximum string length: 255
Example:

"d9105228-4a08-46b1-8b91-42fed586d383"

Api-Version-Date
string

Pins the request to a dated API version.

Example:

"2026-08-21"

Body

application/json
title
string
required

The display name of the product. Maximum 80 characters.

Example:

"Interior Deep Clean"

account_id
string

The unique identifier of the account to create this product for.

Example:

"biz_xxxxxxxxxxxxxx"

collect_shipping_address
boolean | null

Whether to collect a shipping address at checkout.

Example:

false

custom_cta
enum<string> | null

The call-to-action button label.

Available options:
get_access,
join,
order_now,
shop_now,
call_now,
donate_now,
contact_us,
sign_up,
subscribe,
purchase,
get_offer,
apply_now,
complete_order,
null
Example:

"order_now"

custom_cta_url
string | null

A URL the call-to-action button links to.

Example:

"https://shinetime.example/book"

custom_statement_descriptor
string | null

Custom bank statement descriptor. Must start with WHOP*.

Example:

"WHOP*SHINETIME"

description
string | null

A written description displayed on the product page.

Example:

"Full interior extraction, leather conditioning, and an ozone odor treatment."

global_affiliate_percentage
number | null

The commission rate affiliates earn.

Example:

10

global_affiliate_status
enum<string>

The enrollment status in the global affiliate program.

Available options:
enabled,
disabled
Example:

"enabled"

headline
string | null

A short marketing headline for the product page.

Example:

"Steam, shampoo, and odor removal in one visit"

labels
string[] | null

Labels used to group products into collections. Stored lowercased and de-duplicated. Maximum 20 labels, 50 characters each.

member_affiliate_percentage
number | null

The commission rate members earn.

Example:

5

member_affiliate_status
enum<string>

The enrollment status in the member affiliate program.

Available options:
enabled,
disabled
Example:

"enabled"

metadata
object | null

Custom key-value pairs to store on the product.

Example:
product_tax_code_id
string | null

The unique identifier of the tax classification code. See the available product categories.

Example:

"ptc_xxxxxxxxxxxxxx"

redirect_purchase_url
string | null

A URL to redirect the customer to after purchase.

Example:

"https://shinetime.example/thanks"

route
string | null

The URL slug for the product's public link.

Example:

"interior-deep-clean"

send_welcome_message
boolean | null

Whether to send an automated welcome message via support chat when a user joins this product. Defaults to true.

Example:

true

visibility
string

Whether the product is visible to customers.

Example:

"visible"

Response

product created

account
object | null
required

Account that sells this product.

Example:
created_at
string
required

When the product was created, as an ISO 8601 timestamp.

Example:

"2026-01-01T12:00:00.000Z"

custom_cta
enum<string> | null
required

Call-to-action button label shown on the product purchase page.

Available options:
get_access,
join,
order_now,
shop_now,
call_now,
donate_now,
contact_us,
sign_up,
subscribe,
purchase,
get_offer,
apply_now,
complete_order,
null
Example:

"order_now"

custom_cta_url
string | null
required

URL the call-to-action button links to instead of checkout.

Example:

"https://shinetime.example/book"

custom_statement_descriptor
string | null
required

Custom text label on customer's bank statement.

Example:

"WHOP*SHINETIME"

description
string | null
required

Written description displayed on product page.

Example:

"Full interior extraction, leather conditioning, and an ozone odor treatment."

external_identifier
string | null
required

External identifier stored on the product for your own reference.

Example:

"SHINE-CERAMIC-01"

global_affiliate_percentage
number | null
required

Commission rate affiliates earn through the global affiliate program.

Example:

10

global_affiliate_status
enum<string> | null
required

Enrollment status in the global affiliate program.

Available options:
enabled,
disabled,
null
Example:

"enabled"

headline
string | null
required

Short marketing headline displayed on product page.

Example:

"Steam, shampoo, and odor removal in one visit"

id
string
required

Product ID, prefixed prod_.

Example:

"prod_xxxxxxxxxxxxxx"

labels
string[]
required

Lowercased labels used to group products into collections. Filter the list endpoint by labels to fetch one collection.

marketplace_status
enum<string>
required

Listing state on the whop.com marketplace. pending_review means submitted and awaiting review; live_marketplace means approved and discoverable.

Available options:
not_available,
pending_review,
live_marketplace
Example:

"not_available"

member_affiliate_percentage
number | null
required

Commission rate members earn through the member affiliate program.

Example:

5

member_affiliate_status
enum<string> | null
required

Enrollment status in the member affiliate program.

Available options:
enabled,
disabled,
null
Example:

"enabled"

member_count
number
required

Active memberships for this product; 0 if public member counts are disabled.

Example:

0

metadata
object | null
required

Custom key-value pairs stored on the product.

Example:
owner_user
object | null
required

User who owns the account selling this product.

Example:
product_tax_code
object | null
required

Tax classification code for this product, or null if no tax code is set.

Example:
published_reviews_count
number
required

Published customer reviews for this product.

Example:

0

route
string
required

URL slug for the product's public link.

Example:

"interior-deep-clean"

title
string
required

Product display name shown to customers.

Example:

"Interior Deep Clean"

updated_at
string
required

When the product was last updated, as an ISO 8601 timestamp.

Example:

"2026-01-01T12:00:00.000Z"

verified
boolean
required

Whether the product has been verified by Whop.

Example:

false

visibility
string | null
required

Whether the product is publicly visible, hidden, or archived.

Example:

"visible"