{ "opencollection": "1.0.0", "info": { "name": "Kajabi API V1 Authentication Customers API", "version": "1.1.0" }, "items": [ { "info": { "name": "Customers", "type": "folder" }, "items": [ { "info": { "name": "List customers", "type": "http" }, "http": { "method": "GET", "url": "https://api.kajabi.com/v1/customers", "params": [ { "name": "sort", "value": "", "type": "query", "description": "Sort order, use: name, email, created_at, net_revenue, last_request_at for descending order use '-' e.g. &sort=-name" }, { "name": "page[number]", "value": "", "type": "query" }, { "name": "page[size]", "value": "", "type": "query", "description": "Number of documents" }, { "name": "fields[customers]", "value": "", "type": "query", "description": "Sparse fields, use: name, email for example ?fields[customers]=name,email" }, { "name": "filter[site_id]", "value": "", "type": "query", "description": "It is recommended to always filter by site_id, for example ?filter[site_id]=111. This param is required when the account has multiple sites" }, { "name": "filter[search]", "value": "", "type": "query", "description": "Filter with fuzzy search of name/email, for example ?filter[search]=alexa" }, { "name": "filter[created_in_last]", "value": "", "type": "query", "description": "Filter customers created in the last N days, e.g. ?filter[created_in_last]=30" }, { "name": "filter[not_created_in_last]", "value": "", "type": "query", "description": "Filter customers not created in the last N days" }, { "name": "filter[is_hidden]", "value": "", "type": "query", "description": "Filter hidden customers" }, { "name": "filter[joined_in_last]", "value": "", "type": "query", "description": "Filter customers who joined in the last N days" }, { "name": "filter[active_in_last]", "value": "", "type": "query", "description": "Filter customers active in the last N days" }, { "name": "filter[inactive_in_last]", "value": "", "type": "query", "description": "Filter customers inactive in the last N days" }, { "name": "filter[name_contains]", "value": "", "type": "query", "description": "Filter customers whose name contains the given value" }, { "name": "filter[email_contains]", "value": "", "type": "query", "description": "Filter customers whose email contains the given value" }, { "name": "filter[phone_number_contains]", "value": "", "type": "query", "description": "Filter customers whose phone number contains the given value" }, { "name": "filter[address_line_1_contains]", "value": "", "type": "query", "description": "Filter customers whose address line 1 contains the given value" }, { "name": "filter[address_line_2_contains]", "value": "", "type": "query", "description": "Filter customers whose address line 2 contains the given value" }, { "name": "filter[address_city_contains]", "value": "", "type": "query", "description": "Filter customers whose city contains the given value" }, { "name": "filter[address_state_contains]", "value": "", "type": "query", "description": "Filter customers whose state contains the given value" }, { "name": "filter[address_country_contains]", "value": "", "type": "query", "description": "Filter customers whose country contains the given value" }, { "name": "filter[address_zip_contains]", "value": "", "type": "query", "description": "Filter customers whose zip code contains the given value" }, { "name": "filter[has_tag_id]", "value": "", "type": "query", "description": "Filter customers with a specific tag ID" }, { "name": "filter[has_all_tag_id]", "value": "", "type": "query", "description": "Filter customers with all specified tag IDs" }, { "name": "filter[has_no_tag_id]", "value": "", "type": "query", "description": "Filter customers without the specified tag ID" }, { "name": "filter[subscribed]", "value": "", "type": "query", "description": "Filter subscribed customers" }, { "name": "filter[has_offer_id]", "value": "", "type": "query", "description": "Filter customers with a specific offer ID" }, { "name": "filter[has_no_offer_id]", "value": "", "type": "query", "description": "Filter customers without the specified offer ID" }, { "name": "filter[has_product_id]", "value": "", "type": "query", "description": "Filter customers who own a specific product ID" }, { "name": "filter[has_active_product_id]", "value": "", "type": "query", "description": "Filter customers with an active membership to a specific product ID" }, { "name": "filter[has_no_product_id]", "value": "", "type": "query", "description": "Filter customers who do not own a specific product ID" }, { "name": "filter[previously_owned_product_id]", "value": "", "type": "query", "description": "Filter customers who previously owned a specific product ID" }, { "name": "filter[used_coupon_code]", "value": "", "type": "query", "description": "Filter customers who used a specific coupon code" }, { "name": "filter[submitted_form_id]", "value": "", "type": "query", "description": "Filter customers who submitted a specific form ID" }, { "name": "filter[no_submitted_form_id]", "value": "", "type": "query", "description": "Filter customers who have not submitted the specified form ID" }, { "name": "filter[registered_event_id]", "value": "", "type": "query", "description": "Filter customers who registered for a specific event ID" }, { "name": "filter[not_registered_event_id]", "value": "", "type": "query", "description": "Filter customers who have not registered for the specified event ID" }, { "name": "filter[completed_assessment_id]", "value": "", "type": "query", "description": "Filter customers who completed a specific assessment ID" }, { "name": "filter[passed_assessment_id]", "value": "", "type": "query", "description": "Filter customers who passed a specific assessment ID" }, { "name": "filter[failed_assessment_id]", "value": "", "type": "query", "description": "Filter customers who failed a specific assessment ID" }, { "name": "filter[net_revenue_equal_to]", "value": "", "type": "query", "description": "Filter customers whose net revenue equals the given value" }, { "name": "filter[net_revenue_greater_than]", "value": "", "type": "query", "description": "Filter customers whose net revenue is greater than the given value" }, { "name": "filter[net_revenue_less_than]", "value": "", "type": "query", "description": "Filter customers whose net revenue is less than the given value" }, { "name": "filter[subscribed_in_last]", "value": "", "type": "query", "description": "Filter customers subscribed in the last N days" }, { "name": "filter[unsubscribed_in_last]", "value": "", "type": "query", "description": "Filter customers unsubscribed in the last N days" }, { "name": "filter[never_subscribed]", "value": "", "type": "query", "description": "Filter customers who have never subscribed" }, { "name": "filter[sent_email_broadcast_id]", "value": "", "type": "query", "description": "Filter customers who were sent a specific email broadcast ID" }, { "name": "filter[no_sent_email_broadcast_id]", "value": "", "type": "query", "description": "Filter customers who were not sent the specified email broadcast ID" }, { "name": "filter[no_sent_email_broadcast_ids]", "value": "", "type": "query", "description": "Filter customers who were not sent any of the specified email broadcast IDs" }, { "name": "filter[no_delivered_email_broadcast_id]", "value": "", "type": "query", "description": "Filter customers who did not receive the specified email broadcast ID" }, { "name": "filter[opened_email_broadcast_id]", "value": "", "type": "query", "description": "Filter customers who opened a specific email broadcast ID" }, { "name": "filter[no_opened_email_broadcast_id]", "value": "", "type": "query", "description": "Filter customers who did not open the specified email broadcast ID" }, { "name": "filter[clicked_email_broadcast_id]", "value": "", "type": "query", "description": "Filter customers who clicked a specific email broadcast ID" }, { "name": "filter[no_clicked_email_broadcast_id]", "value": "", "type": "query", "description": "Filter customers who did not click the specified email broadcast ID" }, { "name": "filter[bounced_email_broadcast_id]", "value": "", "type": "query", "description": "Filter customers who bounced a specific email broadcast ID" }, { "name": "filter[no_bounced_email_broadcast_id]", "value": "", "type": "query", "description": "Filter customers who did not bounce the specified email broadcast ID" }, { "name": "filter[dropped_email_broadcast_id]", "value": "", "type": "query", "description": "Filter customers who dropped a specific email broadcast ID" }, { "name": "filter[no_dropped_email_broadcast_id]", "value": "", "type": "query", "description": "Filter customers who did not drop the specified email broadcast ID" }, { "name": "filter[opened_email_in_last]", "value": "", "type": "query", "description": "Filter customers who opened an email in the last N days" }, { "name": "filter[not_opened_email_in_last]", "value": "", "type": "query", "description": "Filter customers who did not open an email in the last N days" }, { "name": "filter[delivered_email_in_last]", "value": "", "type": "query", "description": "Filter customers who were delivered an email in the last N days" }, { "name": "filter[not_delivered_email_in_last]", "value": "", "type": "query", "description": "Filter customers who were not delivered an email in the last N days" }, { "name": "filter[clicked_email_in_last]", "value": "", "type": "query", "description": "Filter customers who clicked an email in the last N days" }, { "name": "filter[not_clicked_email_in_last]", "value": "", "type": "query", "description": "Filter customers who did not click an email in the last N days" }, { "name": "filter[is_hard_bouncing]", "value": "", "type": "query", "description": "Filter customers that are hard bouncing" }, { "name": "filter[bounced_in_last]", "value": "", "type": "query", "description": "Filter customers who bounced in the last N days" }, { "name": "filter[complained_in_last]", "value": "", "type": "query", "description": "Filter customers who complained in the last N days" }, { "name": "filter[manually_unsubscribed_in_last]", "value": "", "type": "query", "description": "Filter customers manually unsubscribed in the last N days" }, { "name": "filter[opted_out_in_last]", "value": "", "type": "query", "description": "Filter customers who opted out in the last N days" }, { "name": "filter[healthy_contacts_with_open_data]", "value": "", "type": "query", "description": "Filter healthy customers with open data" }, { "name": "filter[passive_contacts_with_open_data]", "value": "", "type": "query", "description": "Filter passive customers with open data" }, { "name": "filter[unengaged_contacts_with_open_data]", "value": "", "type": "query", "description": "Filter unengaged customers with open data" }, { "name": "filter[inactive_contacts_with_open_data]", "value": "", "type": "query", "description": "Filter inactive customers with open data" }, { "name": "filter[subscribed_newsletter_id]", "value": "", "type": "query", "description": "Filter customers subscribed to a specific newsletter ID" }, { "name": "filter[unsubscribed_newsletter_id]", "value": "", "type": "query", "description": "Filter customers unsubscribed from a specific newsletter ID" }, { "name": "filter[mobile_phone_number_contains]", "value": "", "type": "query", "description": "Filter customers whose mobile phone number contains the given value" }, { "name": "filter[subscribed_email_sequence_id]", "value": "", "type": "query", "description": "Filter customers subscribed to a specific email sequence ID" }, { "name": "filter[not_subscribed_email_sequence_id]", "value": "", "type": "query", "description": "Filter customers not subscribed to a specific email sequence ID" } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "List of customers\n## Pagination\nUse `page[number]` and `page[size]` parameters to paginate results:\n### Get first page of 10 items\n* `GET /v1/customers?page[number]=1&page[size]=10`\n### Get second page of 25 items\n* `GET /v1/customers?page[number]=2&page[size]=25`\n\nThe response includes pagination links and meta data:\n```json\n{\n \"links\": {\n \"self\": \"https://app.kajabi.com/api/v1/customers?page[number]=2&page[size]=10\",\n \"first\": \"https://app.kajabi.com/api/v1/customers?page[number]=1&page" }, { "info": { "name": "Customer details", "type": "http" }, "http": { "method": "GET", "url": "https://api.kajabi.com/v1/customers/:id", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "include", "value": "", "type": "query", "description": "with ?include=offers,products the response will include the related resources" }, { "name": "fields[customers]", "value": "", "type": "query", "description": "Partial attributes as specified, e.g. fields[customers]=name,email" }, { "name": "filter[products_search]", "value": "", "type": "query", "description": "Search products by title" }, { "name": "filter[products_page]", "value": "", "type": "query" }, { "name": "filter[products_per]", "value": "", "type": "query" }, { "name": "filter[offers_search]", "value": "", "type": "query", "description": "Search offers by title or internal title" }, { "name": "filter[offers_page]", "value": "", "type": "query" }, { "name": "filter[offers_per]", "value": "", "type": "query" } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Show customer details\n* The `name` and `email` attributes are kept in sync with the related `contact` resource\n* The `external_user_id` attribute may be used as a customer reference in an external system\n\n## Customer Attributes\n* `name` (string) - The customer's full name. This is a required field and can be either user-provided or auto-generated from their email address if left blank.\n* `email` (string) - The customer's email address. This is a required field and must be unique within a site. I" }, { "info": { "name": "List customer's offers", "type": "http" }, "http": { "method": "GET", "url": "https://api.kajabi.com/v1/customers/:customer_id/relationships/offers", "params": [ { "name": "customer_id", "value": "", "type": "path" } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Get the customer's relationship to offers (granted).\n\nResponse is a list of resource identifiers\n```json\n{\n \"data\": [\n { \"type\": \"offers\", \"id\": \"123\" },\n { \"type\": \"offers\", \"id\": \"456\" }\n ]\n}\n```\nThe related tag resources are available using the GET `api/v1/offers` endpoint.\nThe resource identifier includes the offer id and type.\nExample URLs: `/api/v1/offers/123`, `/api/v1/offers/456`\n" }, { "info": { "name": "Grant offer to customer", "type": "http" }, "http": { "method": "POST", "url": "https://api.kajabi.com/v1/customers/:customer_id/relationships/offers", "params": [ { "name": "customer_id", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "## Grant offer(s) to a customer\nCreate an offer grant for a customer.\n\nIn the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: \"offers\"`.\n\n```\n{ \"data\": [{\"type\": \"offers\", \"id\": \"123\"}] }\n```\n\n## Response\n* A successful response body will list the offers related to the customer\n* An error response will include a JSON body with error details.\n\n## Behaviors and side effects\n* Checks if the customerwas already granted the offer\n* May send a gift granted email if this is a " }, { "info": { "name": "Replace offers for customer", "type": "http" }, "http": { "method": "PATCH", "url": "https://api.kajabi.com/v1/customers/:customer_id/relationships/offers", "params": [ { "name": "customer_id", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "## Replace offer grant(s) for a customer\nReplace offer grants (grants and revokes offers to/from customer) using a list of resource identifiers\nIn the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: \"offers\"`.\n```\n{ \"data\": [{\"type\": \"offers\", \"id\": \"456\"}, {\"type\": \"offers\", \"id\": \"789\"}] }\n```\n## Response\n* A successful response body will list the offers related to the customer\n* An error response will include a JSON body with error details.\n" }, { "info": { "name": "Revoke offer from customer", "type": "http" }, "http": { "method": "DELETE", "url": "https://api.kajabi.com/v1/customers/:customer_id/relationships/offers", "params": [ { "name": "customer_id", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "## Revoke offer grant(s) for a customer\nRevoke offer grant(s) using a list of resource identifiers\nIn the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: \"offers\"`.\n```\n{ \"data\": [{\"type\": \"offers\", \"id\": \"123\"}] }\n```\n## Response\n* A successful response body will list the offers related to the customer\n* An error response will include a JSON body with error details.\n\n## Behaviors and side effects\n* Only affects active offers\n* Handles both offer purchases and offer gra" } ] } ], "bundled": true }