# Kajabi: English API Reference

## API Reference

### Overview

- [Introduction](https://help.kajabi.com/api-reference/introduction.md)
- [Authentication](https://help.kajabi.com/api-reference/authentication.md)
- [Changelog](https://help.kajabi.com/api-reference/changelog.md)

### Authentication

- [Get access token](https://help.kajabi.com/api-reference/authentication/get-access-token.md): ## Request `access_token` and `refresh_token` There are three ways to exchange parameters for tokens 1. Provide client credentials `client_id` and `client_secret` 2. Provide a `refresh_token` 3. Provide `username` and `password` (client credentials is preferred)
- [Revoke a token](https://help.kajabi.com/api-reference/authentication/revoke-a-token.md): ## Revoke an `access_token` and `refresh_token` Either token may be provided to "log out" of the API session. Both tokens we be invalidated.

### Blog posts

- [List blog posts](https://help.kajabi.com/api-reference/blog-posts/list-blog-posts.md): Returns a list of blog posts which the current user may access ## Pagination Use `page[number]` and `page[size]` parameters to paginate results: ### Get first page of 10 items * `GET /v1/blog_posts[number]=1&page[size]=10` ### Get second page of 25 items * `GET /v1/blog_posts[number]=2&page[size]=25…
- [Blog post details](https://help.kajabi.com/api-reference/blog-posts/blog-post-details.md): Shows details of a blog post

### Contact Notes

- [List contact notes](https://help.kajabi.com/api-reference/contact-notes/list-contact-notes.md): Returns a paginated list of contact notes. This endpoint supports filtering, sorting, and pagination.
- [Create contact note](https://help.kajabi.com/api-reference/contact-notes/create-contact-note.md): Creates a new contact note.
- [Contact note details](https://help.kajabi.com/api-reference/contact-notes/contact-note-details.md): Returns a single contact note by ID.
- [Delete contact note](https://help.kajabi.com/api-reference/contact-notes/delete-contact-note.md): Deletes a contact note by ID. This action is permanent and cannot be undone.
- [Update contact note](https://help.kajabi.com/api-reference/contact-notes/update-contact-note.md): Updates an existing contact note. Only the note body can be updated.

### Contact Tags

- [List contact tags](https://help.kajabi.com/api-reference/contact-tags/list-contact-tags.md): Tags (not archived) for a site
- [Contact tag details](https://help.kajabi.com/api-reference/contact-tags/contact-tag-details.md): ## Contact Tag Attributes * `name` (string) - The name of the contact tag

### Contacts

- [List contacts](https://help.kajabi.com/api-reference/contacts/list-contacts.md): List of contacts, we recommended filtering by site.
- [Create a contact](https://help.kajabi.com/api-reference/contacts/create-a-contact.md): Create a contact for a site. ## Contact attributes * New contact does not support `external_user_id` attribute. * See custom_fields endpoint to discover attributes for using custom fields attributes.
- [Contact details](https://help.kajabi.com/api-reference/contacts/contact-details.md): Show details for a contact ## Contact Attributes * `name` (string) - The name of the contact * `email` (string) - The email of the contact, must be a valid and deliverable email address * `address_line_1` (string) - The first line of the contact's address * `address_line_2` (string) - The second lin…
- [Delete contact](https://help.kajabi.com/api-reference/contacts/delete-contact.md)
- [Update contact](https://help.kajabi.com/api-reference/contacts/update-contact.md): ## Contact attributes * A contact with a related customer resource does support `external_user_id` attribute. * See custom_fields endpoint to discover attributes for using custom fields attributes. ## Update a contact Example request body: ```json {   "data": {     "type": "contacts",     "id": "456…
- [List contact's offers](https://help.kajabi.com/api-reference/contacts/list-contacts-offers.md): Get the contact's relationship to offers (granted).
- [Grant offer to contact](https://help.kajabi.com/api-reference/contacts/grant-offer-to-contact.md): ## Grant offer(s) to a contact Create an offer grant for a contact which results in creating a new customer record for your contact.
- [Revoke offer from contact](https://help.kajabi.com/api-reference/contacts/revoke-offer-from-contact.md): ## Revoke offer grant(s) for a contact Revoke offer grant(s) using a list of resource identifiers In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`. ``` { "data": [{"type": "offers", "id": "123"}] } ``` ## Response * A successful response body will list the o…
- [Replace offers for contact](https://help.kajabi.com/api-reference/contacts/replace-offers-for-contact.md): ## Replace offer grant(s) for a contact Replace offer grants (grants and revokes offers to/from contact) using a list of resource identifiers In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`. ``` { "data": [{"type": "offers", "id": "456"}, {"type": "offers",…
- [List contact's tags](https://help.kajabi.com/api-reference/contacts/list-contacts-tags.md): Get the contact's relationship to tags, response is a list of resource identifiers
- [Add tag to contact](https://help.kajabi.com/api-reference/contacts/add-tag-to-contact.md): Add tag relationships to contact resource using a list of resource identifiers
- [Remove tag from contact](https://help.kajabi.com/api-reference/contacts/remove-tag-from-contact.md): Remove tag relationships to contact resource using a list of resource identifiers.
- [Replace tags for contact](https://help.kajabi.com/api-reference/contacts/replace-tags-for-contact.md): Replace tag relationships to contact resource using a list of resource identifiers.

### Courses

- [List courses](https://help.kajabi.com/api-reference/courses/list-courses.md): List of courses that can be offered to a contact or purchased ## Pagination Use the `page[number]` and `page[size]` query parameters to paginate results: ### Get first page of 10 items * `GET /v1/courses?page[number]=1&page[size]=10` ### Get second page of 25 items * `GET /v1/courses?page[number]=2&…
- [Course details](https://help.kajabi.com/api-reference/courses/course-details.md): Details of a course that can be offered to a contact or purchased

### Custom Fields

- [List custom fields](https://help.kajabi.com/api-reference/custom-fields/list-custom-fields.md): ## Custom Field attributes The 'handle' attribute may be used as a key for a contact resource, e.g. custom_1, custom_2, custom_3 ## Pagination Use `page[number]` and `page[size]` parameters to paginate results: ### Get first page of 10 items * `GET /v1/custom_fields?page[number]=1&page[size]=10` ###…
- [Custom field details](https://help.kajabi.com/api-reference/custom-fields/custom-field-details.md): ## Custom Field attributes * `handle` (string) - The key for a `contact` resource, e.g. `custom_1`, `custom_2`, `custom_3` * `title` (string) - The title of the custom field * `type` (string) - The type of the custom field * `required` (boolean) - Whether the custom field is required * `archived` (b…

### Customers

- [List customers](https://help.kajabi.com/api-reference/customers/list-customers.md): List of customers ## Pagination Use `page[number]` and `page[size]` parameters to paginate results: ### Get first page of 10 items * `GET /v1/customers?page[number]=1&page[size]=10` ### Get second page of 25 items * `GET /v1/customers?page[number]=2&page[size]=25`
- [Customer details](https://help.kajabi.com/api-reference/customers/customer-details.md): Show customer details * The `name` and `email` attributes are kept in sync with the related `contact` resource * The `external_user_id` attribute may be used as a customer reference in an external system
- [List customer's offers](https://help.kajabi.com/api-reference/customers/list-customers-offers.md): Get the customer's relationship to offers (granted).
- [Grant offer to customer](https://help.kajabi.com/api-reference/customers/grant-offer-to-customer.md): ## Grant offer(s) to a customer Create an offer grant for a customer.
- [Revoke offer from customer](https://help.kajabi.com/api-reference/customers/revoke-offer-from-customer.md): ## Revoke offer grant(s) for a customer Revoke offer grant(s) using a list of resource identifiers In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`. ``` { "data": [{"type": "offers", "id": "123"}] } ``` ## Response * A successful response body will list the…
- [Replace offers for customer](https://help.kajabi.com/api-reference/customers/replace-offers-for-customer.md): ## Replace offer grant(s) for a customer Replace offer grants (grants and revokes offers to/from customer) using a list of resource identifiers In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`. ``` { "data": [{"type": "offers", "id": "456"}, {"type": "offers…

### Forms

- [List form submissions](https://help.kajabi.com/api-reference/forms/list-form-submissions.md): Form submissions for authorized sites
- [Form submission details](https://help.kajabi.com/api-reference/forms/form-submission-details.md): Shows details of a form submission
- [List forms](https://help.kajabi.com/api-reference/forms/list-forms.md): Contact forms for a site ## Pagination Use `page[number]` and `page[size]` parameters to paginate results: ### Get first page of 10 items * `GET /v1/forms?page[number]=1&page[size]=10` ### Get second page of 25 items * `GET /v1/forms?page[number]=2&page[size]=25`
- [Form details](https://help.kajabi.com/api-reference/forms/form-details.md): Shows details of a form
- [Submit form](https://help.kajabi.com/api-reference/forms/submit-form.md): ## Submit a form * The `name` and `email` attributes are required. * The `email` attribute must be a valid and deliverable email address.

### Webhooks

- [List hooks](https://help.kajabi.com/api-reference/webhooks/list-hooks.md): Lists webhooks for a site
- [Create hook](https://help.kajabi.com/api-reference/webhooks/create-hook.md): Creates a new webhook subscription
- [Hook details](https://help.kajabi.com/api-reference/webhooks/hook-details.md): Returns specific hook based on it ID
- [Delete hook](https://help.kajabi.com/api-reference/webhooks/delete-hook.md): Deletes a webhook subscription
- [Tag added sample](https://help.kajabi.com/api-reference/webhooks/tag-added-sample.md): Returns sample webhook payload for the `tag_added` event: ``` [   {     "id": "0",     "type": "contacts",     "attributes": {       "name": "Sample Recipient",       "email": "sample@example.com",       "address_line_1": "123 Kajabi Ln",       "address_line_2": "Kajabi Suite 4",       "address_city…
- [Tag removed sample](https://help.kajabi.com/api-reference/webhooks/tag-removed-sample.md): Returns sample webhook payload for the `tag_removed` event: ``` [   {     "id": "0",     "type": "contacts",     "attributes": {       "name": "Sample Recipient",       "email": "sample@example.com",       "address_line_1": "123 Kajabi Ln",       "address_line_2": "Kajabi Suite 4",       "address_ci…
- [Form submission sample](https://help.kajabi.com/api-reference/webhooks/form-submission-sample.md): Returns sample webhook payload for the `form_submission` event: ``` [   {     "id": "0",     "type": "form_submissions",     "attributes": {       "name": "John Doe",       "email": "john.doe@example.com",       "address_line_1": null,       "address_line_2": null,       "address_city": null,…
- [Purchase sample](https://help.kajabi.com/api-reference/webhooks/purchase-sample.md): Returns sample webhook payload for the `purchase` event: ``` [   {     "id": "0",     "type": "purchases",     "attributes": {       "amount_in_cents": 1000,       "payment_type": "single",       "multipay_payments_made": null,       "opt_in": false,       "raw_extra_contact_information": {},…
- [Payment succeeded sample](https://help.kajabi.com/api-reference/webhooks/payment-succeeded-sample.md): Returns sample webhook payload for the `payment_succeeded` event: ``` [   {     "id": "0",     "type": "transactions",     "attributes": {       "action": "charge",       "state": "succeeded",       "payment_type": "charge",       "amount_in_cents": 1000,       "sales_tax_in_cents": 0,       "curren…
- [Order created sample](https://help.kajabi.com/api-reference/webhooks/order-created-sample.md): Returns sample webhook payload for the `order_created` event: ``` [   {     "id": "0",     "type": "transactions",     "attributes": {       "action": "charge",       "state": "succeeded",       "payment_type": "charge",       "amount_in_cents": 1000,       "sales_tax_in_cents": 0,       "currency":…

### Kajabi Payments Payouts

- [List payouts](https://help.kajabi.com/api-reference/kajabi-payments-payouts/list-payouts.md): List of Kajabi Payments payouts for a site. Payouts represent transfers of funds from Kajabi to the site owner's connected bank account or payment method.
- [Get payout details](https://help.kajabi.com/api-reference/kajabi-payments-payouts/get-payout-details.md): Get detailed information about a specific Kajabi Payments payout, including all associated transactions.

### Landing pages

- [List landing pages](https://help.kajabi.com/api-reference/landing-pages/list-landing-pages.md): Returns a list of landing pages which the current user may access
- [Landing page details](https://help.kajabi.com/api-reference/landing-pages/landing-page-details.md): Shows details of a landing page

### Me

- [My user profile](https://help.kajabi.com/api-reference/me/my-user-profile.md): Returns the current user's profile data. ## Response attributes The response will include the following attributes: * `initials` - A derived attribute that represents the user's initials based on their name. This is typically used for avatar placeholders or compact user displays. For example, "John…

### Offers

- [List offers](https://help.kajabi.com/api-reference/offers/list-offers.md): List of offers (not archived) for a site that can be granted to a contact ## Pagination Use `page[number]` and `page[size]` parameters to paginate results: ### Get first page of 10 items * `GET /v1/offers?page[number]=1&page[size]=10` ### Get second page of 25 items * `GET /v1/offers?page[number]=2&…
- [Offer details](https://help.kajabi.com/api-reference/offers/offer-details.md): 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.
- [List offer's products](https://help.kajabi.com/api-reference/offers/list-offers-products.md): get the offer's relationship to products, response is a list of resource identifiers

### Orders

- [List order items](https://help.kajabi.com/api-reference/orders/list-order-items.md): Order items represent individual products or offers within an order.
- [Order item details](https://help.kajabi.com/api-reference/orders/order-item-details.md): Shows details of an order item
- [List orders](https://help.kajabi.com/api-reference/orders/list-orders.md): Orders for a site ## Pagination Use `page[number]` and `page[size]` parameters to paginate results: ### Get first page of 10 items * `GET /v1/orders?page[number]=1&page[size]=10` ### Get second page of 25 items * `GET /v1/orders?page[number]=2&page[size]=25`
- [Order details](https://help.kajabi.com/api-reference/orders/order-details.md): Shows details of an order

### Podcasts

- [List podcasts](https://help.kajabi.com/api-reference/podcasts/list-podcasts.md): Podcasts for a site ## Pagination Use `page[number]` and `page[size]` parameters to paginate results: ### Get first page of 10 items * `GET /v1/podcasts?page[number]=1&page[size]=10` ### Get second page of 25 items * `GET /v1/podcasts?page[number]=2&page[size]=25`
- [Show podcast](https://help.kajabi.com/api-reference/podcasts/show-podcast.md): Get details for a specific podcast ## Attributes - **title**: The podcast title - **description**: The podcast description - **language**: The podcast language (e.g., "en", "es") - **owner_email**: The podcast owner's email address - **owner_name**: The podcast owner's name - **status**: The podcast…

### Products

- [List products](https://help.kajabi.com/api-reference/products/list-products.md): List of products (not archived) that can be granted to a contact ## Pagination Use `page[number]` and `page[size]` parameters to paginate results: ### Get first page of 10 items * `GET /v1/products?page[number]=1&page[size]=10` ### Get second page of 25 items * `GET /v1/products?page[number]=2&page[…
- [Product details](https://help.kajabi.com/api-reference/products/product-details.md): Show details of a product ## Sparse Fields Use the `fields[products]` parameter to request only specific attributes: ### Get only title and publish_status fields * `GET /v1/products/123?fields[products]=title,publish_status`

### Purchases

- [List purchases](https://help.kajabi.com/api-reference/purchases/list-purchases.md): Returns a list of purchases (offer purchases) which the current user may access ## Pagination Use `page[number]` and `page[size]` parameters to paginate results: ### Get first page of 10 items * `GET /v1/purchases?page[number]=1&page[size]=10` ### Get second page of 25 items * `GET /v1/purchases?pag…
- [Purchase details](https://help.kajabi.com/api-reference/purchases/purchase-details.md): Details of a purchase (of an offer)
- [Reactivate purchase](https://help.kajabi.com/api-reference/purchases/reactivate-purchase.md): Reactivate a purchase by ID, this will not reactivate the subscription.
- [Deactivate purchase](https://help.kajabi.com/api-reference/purchases/deactivate-purchase.md): Deactivate a purchase by ID, this will not cancel the subscription.
- [Cancel subscription](https://help.kajabi.com/api-reference/purchases/cancel-subscription.md): Cancel the subscription associated with a purchase by ID

### Sites

- [List sites](https://help.kajabi.com/api-reference/sites/list-sites.md): List of sites that the current user has access to ## Pagination Use `page[number]` and `page[size]` parameters to paginate results: ### Get first page of 10 items * `GET /v1/sites?page[number]=1&page[size]=10` ### Get second page of 25 items * `GET /v1/sites?page[number]=2&page[size]=25`
- [Site details](https://help.kajabi.com/api-reference/sites/site-details.md): The site system is a fundamental part of Kajabi's platform, representing a customer's branded presence and serving as the container for their products, courses, and other content. Each site can be customized extensively while maintaining the core functionality needed for e-learning and digital produ…
- [List website pages](https://help.kajabi.com/api-reference/sites/list-website-pages.md): Returns a list of website pages which the current user may access ## Pagination Use `page[number]` and `page[size]` parameters to paginate results: ### Get first page of 10 items * `GET /v1/website_pages[number]=1&page[size]=10` ### Get second page of 25 items * `GET /v1/website_pages[number]=2&page…
- [Website page details](https://help.kajabi.com/api-reference/sites/website-page-details.md): Details of a website page

### Transactions

- [List transactions](https://help.kajabi.com/api-reference/transactions/list-transactions.md): List of payment transactions related to completed financial activity (successful charges, refunds, and disputes) that are associated with actual purchases, excluding test transactions, free purchases, failed attempts, and pending transactions.
- [Transaction details](https://help.kajabi.com/api-reference/transactions/transaction-details.md): The transaction system is a critical part of Kajabi's payment infrastructure, handling all monetary operations while maintaining detailed records for accounting, reporting, and compliance purposes.

### Version

- [Version](https://help.kajabi.com/api-reference/version/version.md): Returns the current version of the Kajabi API and links to the API documentation.

## OpenAPI Specs

- [openapi](/openapi.yaml)
