List All Products
Retrieve all products for a project with pagination.string
required
The brand/project ID
number
Page number for pagination (default: 1)
number
Number of results per page (default: 25)
Request
cURL
List All Products (Unpaginated)
Get all products without pagination for dropdown lists.string
required
The brand/project ID
Request
cURL
Get Product Details
Retrieve details about a specific product.string
required
The brand/project ID
string
required
The product ID
Request
cURL
Product Fields Reference
Basic Information
Basic Information
code- Unique product code/identifiertitle- Product display namecheckout_title- Alternative title for checkout (optional)type- Product type:physical,digitalclassification- Product classification:main,upsell,downsell,bump,bonus
Pricing
Pricing
price- Selling price (in currency units)retail_price- Suggested retail/original priceunits- Number of units included
Inventory & Fulfillment
Inventory & Fulfillment
sku- Stock Keeping Unit identifierunit_cost- Cost per unitunit_weight_oz- Weight per unit in ouncesfulfillment_cost- Cost to fulfill the orderpackaging_cost- Packaging costfuel_surcharge_cost- Fuel surchargecogs- Cost of Goods Soldphysical_units_per_product- Physical units per productfulfillment_multiply_sku- Multiply fulfillment by SKU quantityaverage_shipping_cost- Average shipping cost
Media
Media
image- Product image URLimage_link- Full URL to product imageproduct_files- Array of downloadable files attached to the product
Subscription Products
Subscription Products
is_subscription- Whether this is a subscription productsubscription_frequency- Billing frequency (e.g., 1, 2, 3)subscription_frequency_unit- Unit:day,week,month,yearsubscription_trial_days- Number of trial dayssubscription_first_charge_free- Whether first charge is free
Additional
Additional
custom_attributes- Array of custom key-value pairsmerchant_product_ids- Object mapping merchant names to product IDsproduct_specifications- Array of product specificationsshipping_profile_id- Associated shipping profilesku_category- SKU categorysku_subcategory- SKU subcategorybonuses- Array of bonus products associated with this product
Create Product
Create a new product.string
required
The brand/project ID
string
required
Unique product code
string
required
Product title
number
required
Product price
string
required
Product type:
physical or digitalstring
required
Classification:
main, upsell, downsell, bump, or bonusnumber
Retail/original price
number
Number of units
string
Stock Keeping Unit
file
Product image file (
multipart/form-data only). Must be an uploaded image file — not a JSON URL string. Omit from JSON-only creates; upload via File Manager and reference the CDN URL in HTML, or send image on a multipart create request.boolean
Whether this is a subscription product
number
Billing frequency (required if is_subscription is true)
string
Frequency unit:
day, week, month, yearRequest
cURL
Subscription Product Example
cURL
Create with image (multipart)
cURL
Sending
"image": "https://..." in a JSON body fails validation (422) or is ignored — the API expects a file upload for the image field.Update Product
Update an existing product. Authenticate withEF-Access-Key on every request.
Both PUT and POST are supported for the same update handler. If PUT returns a redirect to login, use POST with the same URL and body.
string
required
The brand/project ID
string
required
The product ID
string
Product title (use
title, not name)number
Product price
file
Replace product image (
multipart/form-data file upload, same rules as create)Request
cURL (PUT)
cURL (POST — preferred if PUT redirects)
Delete Product
Delete a product.string
required
The brand/project ID
string
required
The product ID
Request
cURL
Clone Product
Create a copy of an existing product.string
required
The brand/project ID
string
required
The product ID to clone
Request
cURL
Product Classifications
Product Bonuses
Products can have associated bonus products. Thebonuses array contains bonus product relationships:
Downloadable Files
Digital downloads and bonus downloads are stored inproduct_files.
Each file row can include:
-
purpose-digitalorbonus -
title- Optional display title -
description- Optional description shown in customer-facing download UIs -
image- Optional thumbnail/cover image URL for this file -
file- File URL -
kind- Coarse classification derived from the file extension andmetadata.mime_type. One ofaudio,video,document,image,archive,file. Lets clients branch on file type without re-parsing the URL. -
is_primary- Marks the default file for that purpose -
sort_order- Controls display order -
metadata- Public file metadata. Only the following fields are exposed:mime_type- MIME type of the file (e.g."audio/mpeg","application/pdf")size- Size in byteschecksum- Optional checksum recorded at upload (may benull)extension- Lowercase extension without the dot (e.g."pdf","mp3"). Derived from the file URL when possible, with a small mime-type fallback for opaque/signed URLs. Empty string when neither source can produce one.
provider,storage_path,brand_file_id) are intentionally not returned.
product_files for the actual downloadable assets those products expose.
Custom Attributes
Products support custom key-value attributes for flexibility:- Download links for digital products
- Access codes for member areas
- Special instructions
- Custom tracking parameters
Merchant Product IDs
Map your ElasticFunnels products to merchant platform product IDs:Subscription Tiers
Products can have tiered subscription billing — different prices at different intervals (e.g. monthly then annually). Passsubscription_tiers as an array in the Create or Update body.
boolean
Mark product as a subscription product
number
Default billing interval count (e.g.
1 for every-1-month)string
day, week, month, or yearnumber
Free trial length in days (min: 0)
boolean
Waive the first billing charge
array
Array of tier objects. When provided, overrides the flat
subscription_frequency / subscription_frequency_unit values.string
required
day, week, month, or yearnumber
required
How many units of
interval between charges (min: 1)number
required
Billing amount for this tier (min: 0)
string
Optional tier label (max 64 chars)
string
Display label shown to the customer (max 255 chars)
number
Discount shown as “subscribe & save” (0–100%)
Subscription tiers example
Product Variants & Options
Products can have variants (e.g. size/colour combinations). Variants are managed inline via theproduct_fields and variants arrays on Create/Update.
Product Fields (variant dimensions)
product_fields defines the variant dimensions (e.g. “Size”, “Colour”):
Variants
Each variant is a combination of field values with an optional per-variant price and SKU:number
Existing variant ID for update (omit to create new)
string
Variant SKU/code (max 128 chars)
string
Value for the first product field (max 128 chars)
string
Value for the second product field (max 128 chars)
string
Value for the third product field (max 128 chars)
number
Override price for this variant (null = use product base price)
string
Variant image URL (max 512 chars)
string
3-letter ISO currency code (e.g.
USD)Variant Options
Variant options are brand-level reusable option sets (e.g. “Shoe Sizes”, “Colours”). They can be attached to multiple products.List Variant Options
Get All Variant Options (unpaginated)
Create Variant Option
string
required
Option set name (e.g.
Shirt Sizes)array
required
Array of option value strings (e.g.
["XS", "S", "M", "L", "XL"])cURL
Update Variant Option
Delete Variant Option
Product Categories
Organise products into a two-level category hierarchy (category → subcategory).List Categories
Get All Categories (unpaginated)
Create Category
string
required
Category name
number
Parent category ID — omit for top-level categories, provide for subcategories.
cURL — create top-level category
cURL — create subcategory
Update Category
Delete Category
Coupons
Create and manage discount codes for products.List Coupons
number
Results per page (max 100, default: 25)
Get Coupon
Create Coupon
string
required
Coupon code (max 64 chars). Must be unique per brand.
string
required
percent — percentage off, or fixed — fixed amount offnumber
required
Discount value. For
percent, clamped to 0–100 automatically.string
Internal label (max 128 chars)
string
active (default), draft, or disabledarray
Limit discount to specific product IDs. Empty/null means all products.
array
Product IDs to exclude from the discount.
boolean
Whether the coupon applies to order bump products.
string
ISO 8601 date — coupon becomes active from this date.
string
ISO 8601 date — coupon expires after this date. Must be on or after
valid_from.number
Maximum number of redemptions (null = unlimited).
cURL — 20% off all products
cURL — $10 off specific products
Update Coupon
cURL — disable coupon
Delete Coupon
Validate Coupon
Check if a coupon code is valid and get its details (useful for frontend validation before applying at checkout).string
required
Coupon code to validate
Notes
- Product
codemust be unique within the brand classificationofbonusproducts are automatically included with their parent products- Subscription products require
subscription_frequencyandsubscription_frequency_unit - All costs (COGS, fulfillment, packaging) are tracked for profit margin calculations
- Images are returned as both
image(relative path) andimage_link(full URL) - Downloadable assets live in
product_files, not top-levelbonus_file/digital_filecolumnsproduct_category_idmust be a root-level category; useproduct_subcategory_idfor sub-level- Coupon
type: "percent"values are clamped to 0–100 automatically