Offer details
The offer system is a core part of Kajabi’s e-commerce functionality, allowing course creators and digital product owners to monetize their content through various pricing and payment models while maintaining flexibility in how offers are presented and processed.
Offer attributes
title(string) - Required, public name of the offer shown to customersdescription(string) - Optional, detailed information about what’s included in the offerinternal_title(string) - Optional, for internal reference/organization (not shown to customers)currency(string) - The currency of the offer, defaults to USDprice_in_cents(integer) - The USD price in cents (for precise decimal handling)payment_type(string) - Indicates the payment structuretoken(string) - A unique identifier for the offer, particularly in checkout URLspayment_method(string) - Indicates the payment method, Returns empty string if no payment method is setprice_description(string) - Human-readable representation of the offer’s price, includes formatting and currency informationcheckout_url(string) - Full URL where customers can purchase the offer- Includes the offer token for identification
- Uses the site’s public host and protocol settings
recurring_offer(boolean) - Whether the offer has recurring paymentssubscription(boolean) - Whether the offer is a subscription offerone_time(boolean) - Whether the offer is a one-time offersingle(boolean) - Whether the offer is a single offerfree(boolean) - Whether the offer is a free offerimage_url(string) - URL to the image associated with the offer (nullable)
Include Relationships
Use the include parameter to include related products:
GET /v1/offers/123?include=products
Response will include products relationship
{
"data": {
"id": "123",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"description": "Complete advanced course bundle with expert guidance",
"internal_title": "advanced_course_bundle",
"currency": "USD",
"price_in_cents": 19900,
"payment_type": "stripe",
"token": "123",
"payment_method": "stripe",
"price_description": "$199.00",
"checkout_url": "https://api.kajabi.com/checkout/123",
"recurring_offer": false,
"subscription": false,
"one_time": true,
"single": true,
"free": false,
"image_url": "https://api.kajabi.com/images/456"
},
"relationships": {
"products": {
"data": [
{
"id": "456",
"type": "products"
}
]
}
}
},
"included": [
{
"id": "456",
"type": "products",
"attributes": {
"created_at": "2021-01-01T00:00:00Z",
"title": "Advanced Course",
"description": "Complete advanced course with expert guidance",
"status": "ready",
"members_aggregate_count": 100,
"product_type_name": "Course",
"product_type_id": 456,
"publish_status": "published",
"image_url": "https://api.kajabi.com/images/456"
}
}
]
}
Sparse Fields
Only return title and price_in_cents attributes
GET /v1/offers/123?fields[offers]=title,price_in_cents
Response will only include requested fields
{
"data": {
"id": "123",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"price_in_cents": 19900
}
}
}
Multiple parameters together
You can combine include and sparse fields in a single request:
Get offer 123 with products, including only title and description fields, and products with title and publish_status fields
GET /v1/offers/123?include=products&fields[offers]=title,description&fields[products]=title,publish_status
Response will include offer and products with sparse fields
{
"data": {
"id": "123",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"description": "Complete advanced course bundle with expert guidance"
},
"relationships": {}
},
"included": [
{
"id": "456",
"type": "products",
"attributes": {
"title": "Advanced Course",
"publish_status": "published"
}
}
]
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Query Parameters
Load the related resources, for example ?include=products
Partial attributes as specified, e.g. fields[offers]=title,price_in_cents