Skip to main content
POST
/
products
JavaScript
import Whop from '@whop/sdk';

const client = new Whop({
  apiKey: process.env['WHOP_API_KEY'], // This is the default and can be omitted
});

const product = await client.products.create({ company_id: 'biz_xxxxxxxxxxxxxx', title: 'title' });

console.log(product.id);
{
  "id": "prod_xxxxxxxxxxxxx",
  "title": "Pickaxe Analytics",
  "visibility": "visible",
  "headline": "Real-time data analytics for creators",
  "verified": true,
  "created_at": "2023-12-01T05:00:00.401Z",
  "updated_at": "2023-12-01T05:00:00.401Z",
  "member_count": 42,
  "route": "pickaxe-analytics",
  "published_reviews_count": 42,
  "external_identifier": "ext_prod_12345",
  "description": "Track your revenue, members, and growth in real time.",
  "custom_cta": "get_access",
  "custom_cta_url": "https://example.com/signup",
  "custom_statement_descriptor": "PICKAXE",
  "global_affiliate_percentage": 6.9,
  "global_affiliate_status": "enabled",
  "member_affiliate_percentage": 6.9,
  "member_affiliate_status": "enabled",
  "gallery_images": [
    {
      "id": "<string>",
      "url": "https://media.whop.com/abc123/optimized.jpg"
    }
  ],
  "product_tax_code": {
    "id": "ptc_xxxxxxxxxxxxxx",
    "name": "Digital - SaaS",
    "product_type": "physical"
  },
  "owner_user": {
    "id": "user_xxxxxxxxxxxxx",
    "name": "John Doe",
    "username": "johndoe42"
  },
  "company": {
    "id": "biz_xxxxxxxxxxxxxx",
    "route": "pickaxe",
    "title": "Pickaxe"
  }
}

Authorizations

Authorization
string
header
required

A company API key, company scoped JWT, app API key, or user OAuth token. You must prepend your key/token with the word 'Bearer', which will look like Bearer ***************************

Body

application/json

Parameters for CreateAccessPass

company_id
string
required

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

Example:

"biz_xxxxxxxxxxxxxx"

title
string
required

The display name of the product. Maximum 40 characters.

collect_shipping_address
boolean | null

Whether the checkout flow collects a shipping address from the customer.

custom_cta
enum<string> | null

The call-to-action button label displayed on the product's purchase page (e.g., join, buy, subscribe).

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
custom_cta_url
string | null

A URL that the call-to-action button links to instead of the default checkout flow.

custom_statement_descriptor
string | null

A custom text label that appears on the customer's bank statement. Must be 5-22 characters, contain at least one letter, and not contain <, >, , ', or " characters.

description
string | null

A written description of the product displayed on its product page.

experience_ids
string[] | null

The unique identifiers of experiences to connect to this product.

Represents a unique identifier that is Base64 obfuscated. It is often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "VXNlci0xMA==") or integer (such as 4) input value will be accepted as an ID.

global_affiliate_percentage
number | null

The commission rate as a percentage that affiliates earn through the global affiliate program.

Example:

6.9

global_affiliate_status
enum<string> | null

The enrollment status of this product in the global affiliate program.

Available options:
enabled,
disabled
headline
string | null

A short marketing headline displayed prominently on the product page.

member_affiliate_percentage
number | null

The commission rate as a percentage that members earn through the member affiliate program.

Example:

6.9

member_affiliate_status
enum<string> | null

The enrollment status of this product in the member affiliate program.

Available options:
enabled,
disabled
plan_options
object

Configuration for an automatically generated plan to attach to this product.

product_tax_code_id
string | null

The unique identifier of the tax classification code to apply to this product.

Example:

"ptc_xxxxxxxxxxxxxx"

redirect_purchase_url
string | null

A URL to redirect the customer to after completing a purchase.

route
string | null

The URL slug for the product's public link.

send_welcome_message
boolean | null

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

visibility
enum<string> | null

Whether the product is visible to customers. When set to hidden, the product is only accessible via direct link.

Available options:
visible,
hidden,
archived,
quick_link

Response

A successful response

A product is a digital good or service sold on Whop. Products contain plans for pricing and experiences for content delivery.

id
string
required

The unique identifier for the product.

Example:

"prod_xxxxxxxxxxxxx"

title
string
required

The display name of the product shown to customers on the product page and in search results.

Example:

"Pickaxe Analytics"

visibility
enum<string>
required

Controls whether the product is visible to customers. When set to 'hidden', the product is only accessible via direct link.

Available options:
visible,
hidden,
archived,
quick_link
headline
string | null
required

A short marketing headline displayed prominently on the product's product page.

Example:

"Real-time data analytics for creators"

verified
boolean
required

Whether this company has been verified by Whop's trust and safety team.

created_at
string<date-time>
required

The datetime the product was created.

Example:

"2023-12-01T05:00:00.401Z"

updated_at
string<date-time>
required

The datetime the product was last updated.

Example:

"2023-12-01T05:00:00.401Z"

member_count
integer
required

The number of users who currently hold an active membership to this product. Returns 0 if the company has disabled public member counts.

Example:

42

route
string
required

The URL slug used in the product's public link (e.g., 'my-product' in whop.com/company/my-product).

Example:

"pickaxe-analytics"

published_reviews_count
integer
required

The total number of published customer reviews for this product's company.

Example:

42

external_identifier
string | null
required

A unique identifier used to create or update products via the API. When provided on product creation endpoints, an existing product with this identifier will be updated instead of creating a new one.

Example:

"ext_prod_12345"

description
string | null
required

A brief summary of what the product offers, displayed on product pages and search results.

Example:

"Track your revenue, members, and growth in real time."

custom_cta
enum<string>
required

The call-to-action button label displayed on the product's purchase page (e.g., 'join', 'buy', 'subscribe').

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
custom_cta_url
string | null
required

An optional URL that the call-to-action button links to instead of the default checkout flow. Null if no custom URL is set.

Example:

"https://example.com/signup"

custom_statement_descriptor
string | null
required

A custom text label that appears on the customer's bank or credit card statement for purchases of this product. Maximum 22 characters, including the required prefix WHOP*.

Example:

"PICKAXE"

global_affiliate_percentage
number | null
required

The commission rate (as a percentage) that affiliates earn on sales through the Whop marketplace global affiliate program. Null if the program is not active.

Example:

6.9

global_affiliate_status
enum<string>
required

The enrollment status of this product in the Whop marketplace global affiliate program.

Available options:
enabled,
disabled
member_affiliate_percentage
number | null
required

The commission rate (as a percentage) that existing members earn when referring new customers through the member affiliate program. Null if the program is not active.

Example:

6.9

member_affiliate_status
enum<string>
required

The enrollment status of this product in the member affiliate program.

Available options:
enabled,
disabled

The gallery images for this product, ordered by position.

product_tax_code
object
required

The tax classification code applied to purchases of this product for sales tax calculation. Null if no tax code is assigned.

owner_user
object
required

The user who owns the company that sells this product.

company
object
required

The company this product belongs to.