Skip to main content
POST
TypeScript

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-09-15"

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."

Images or videos displayed in the product gallery, in display order. Replaces the existing gallery. Send an empty array to clear it; omit or pass null to leave it unchanged. A banner image does not populate the gallery.

Maximum array length: 8
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:
average_review_rating
number
required

Average star rating across published reviews for this product, from 1.0 to 5.0. Returns 0.0 when no published-review rating is available.

Example:

0

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"

default_plan
object | null
required

Buyable plan to show and check out with. The configured default when that plan is buyable, otherwise the first buyable plan in product-page order. null when none is buyable.

description
string | null
required

Written description displayed on the product page. null if none is set.

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"