Skip to main content
Products are the core of your Chariow store. This guide covers how to retrieve and work with products through the Public API.

Product Types

Chariow supports several product types:
A creator can change the type of a product that has never been sold. Do not treat type as permanent if you cache products.

Product Categories

Products are organised into the following categories:

Product States

Products can be in different states:
  • Draft (draft): not visible to customers, still being edited
  • Published (published): available for purchase on your store
  • Suspended (suspended): suspended and not available for purchase
The Public API returns your products whatever their status, drafts included. Check status and only show products whose status is published to buyers.

Listing Products

Retrieve the products of your store, newest first, with optional filtering:

Query Parameters

Pagination

The API uses cursor-based pagination for efficient data retrieval:

Example Response

Getting a Single Product

Retrieve detailed information about a specific product by its public ID or slug:

Product Details

The single product endpoint returns comprehensive information including:
  • Pricing: Current price, base price, effective price, sale price (if applicable), minimum price, suggested price, and discount percentage (price_off)
  • Images: Thumbnail and cover images via pictures
  • Category: Product category with value and label
  • Variant Pricing: Whether the product has variant pricing (has_variant_pricing)
  • Ad tracking price: The current price converted to USD via pricing.tracking, for ad trackers such as the Meta Pixel
  • Ratings: Number of ratings and share of positive ratings via rating
  • Sales: Exact sales count via sales_count, or null when the product hides it (new products hide it by default)
  • Quantity: Exact stock information (if product has limited quantity)
  • Settings: Product settings such as is_shipping_address_required
  • Sale Expiration: on_sale_until datetime for temporary sale pricing
  • Custom CTA Text: Custom call-to-action text via custom_cta_text
  • Bundle: Savings information for bundle products
  • Coaching: Session duration, format, time zone and buffer for coaching products via coaching
  • Description: description is HTML, sanitised by Chariow to strip unsafe markup
The fields, seo and store keys are present but always null on the public API.

Pricing Types

Products can have different pricing models:
A fixed price that customers pay once to access the product. This is the most common pricing type.
Customers choose how much to pay, with an optional minimum and suggested price. Useful for donations, tip-ware, or customer-driven pricing.
Products available at no cost, often used for lead generation, freebies, or sample content.
Products can have temporary sale prices with an expiration date. The current_price reflects the active price.

Product Bundles

Bundles combine multiple products at a discounted price. When retrieving a bundle product, you’ll receive information about the total bundle value and savings:
The bundle.value shows the total value if all products were purchased separately, whilst the pricing.current_price shows the discounted bundle price. The bundle.savings shows how much customers save by purchasing the bundle.

Working with Product Data

Filtering Products

You can combine multiple filters to refine your product queries:

Understanding Ratings

Buyers rate a product with a thumbs up or down. Products include the number of ratings and the share of positive ones:
  • total_ratings: Number of ratings received, with formatted and abbreviated versions
  • thumbs_up_count: Number of positive ratings
  • thumbs_up_percentage: Share of positive ratings, as a string (e.g., 96%)

Stock Quantity

For products with limited stock, the quantity field provides the exact stock of the product (percentages are whole numbers):
Products without limited stock will have quantity: null.

Price Formatting

All price objects include four fields for flexible display:
  • value: Numeric amount (e.g., 99 for $99.00)
  • formatted: Ready-to-display string (e.g., $99.00, £99.00, €99.00)
  • short: Abbreviated human-readable string using forHumans (e.g., 99, 5K, 1.25M)
  • currency: ISO currency code (e.g., USD, EUR, GBP)

Common Use Cases

Building a Product Catalogue

Displaying Sale Products

Best Practices

Always use cursor-based pagination instead of fetching all products at once. This ensures efficient data retrieval and prevents timeouts.
Product data doesn’t change frequently. Consider caching products locally and refreshing periodically to reduce API calls.
Not all products have thumbnail or cover images. Always check for null values before displaying images.
Use the formatted field from price objects for display purposes. This ensures proper currency formatting and symbols.
When displaying sale prices, verify that on_sale_until is in the future to avoid showing expired sales.

Next Steps

List Products

View the List Products API reference

Get Product

View the Get Product API reference

Checkout Guide

Learn how to create checkout sessions

Authentication

Learn about API authentication