Kajabi Authentication API

The Authentication API from Kajabi — 2 operation(s) for authentication.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

kajabi-authentication-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Kajabi API V1 Authentication API
  version: 1.1.0
  description: "## Public API\n* Server URL `https://api.kajabi.com`\n* Endpoint paths are prefixed with `/v1`\n* Version endpoint `GET https://api.kajabi.com/v1/version`\n* See the [Developers Site](https://developers.kajabi.com) for documentation and examples.\n* Try the demo [Postman collection](https://www.postman.com/kajabi-apis/beta-public-api-demo/collection/fg4iyaz/kajabi-public-api-v1)\n## API Keys\n* Your API `client_id` and `client_secret` are available on the [User API Keys](https://app.kajabi.com/admin/settings/security) section of the Kajabi Admin Portal.\n  * Custom API Keys can be created with specific permissions.\n  * Click the \"Create User API Key\" button, enter a name (e.g. \"My project\"), select the user and permissions, and click \"Create\".\n  * For security purposes, you may \"Delete\" or \"Rotate\" the api credentials at any time; which will invalidate any access tokens granted with the credentials.\n## Video Walkthroughs\n* [Capabilities](https://drive.google.com/file/d/1Puc9B2sSdA-RQb7YMxmUXg4FVoEXytoc/view?usp=sharing)\n* [Getting Started](https://drive.google.com/file/d/1hbGRShkxven_QMWvgYrerHKURbcZrnvJ/view?usp=sharing)\n* [Error Examples](https://drive.google.com/file/d/1i0wQK71I1jpaZVsxYwsn62gVj40S_E7Y/view?usp=sharing)\n* [External Contact Form](https://drive.google.com/file/d/1HqpULXvan5TOK3LvM7nILCuCkCaX0kFT/view?usp=sharing)\n"
  contact:
    email: support@kajabi.com
    name: Support
    url: https://help.kajabi.com/hc/en-us/articles/4404549690523-How-to-Get-Help-From-Kajabi-Live-Agents
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://api.kajabi.com
  description: Production
tags:
- name: Authentication
paths:
  /v1/oauth/token:
    post:
      summary: Get access token
      tags:
      - Authentication
      description: '## 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)


        ### Using grant_type=client_credentials

        Only include params: `client_id`, `client_secret`, and `grant_type`.

        * The `grant_type` param value must be: `client_credentials`


        ### Using grant_type=refresh_token

        Only include params: `refresh_token` and `grant_type`.

        * The `grant_type` param value must be: `refresh_token`

        * The `refresh_token` must be a unexpired JWT token, from a prior client credential token grant.


        ### Using username and password

        Only include params: `username` and `password`.


        ## Response

        A successful response will provide `access_token` and `refresh_token` values.

        * Use the `access_token` in your `Authorization` header as a "Bearer" token to make authenticated requests to the API. E.g. `GET https://api.kajabi.com/v1/me`

        * Store the `refresh_token` to exchange for a new `access_token` when it expires.

        * Tokens may be invalidated using the `v1/oauth/revoke` endpoint to "log out".

        ### Attributes

        * `access_token` (string) - The access token for the API session

        * `refresh_token` (string) - The refresh token for the API session

        * `token_type` (string) - The type of token, always `Bearer`

        * `expires_in` (integer) - The number of seconds the access token will be valid for

        '
      parameters: []
      responses:
        '200':
          description: Authentication succeeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/oauth_token_response'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors_authentication_failed'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors_authentication_failed'
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                username:
                  type: string
                password:
                  type: string
                client_id:
                  type: string
                client_secret:
                  type: string
                grant_type:
                  type: string
                scope:
                  type: string
                refresh_token:
                  type: string
  /v1/oauth/revoke:
    post:
      summary: Revoke a token
      tags:
      - Authentication
      description: '## Revoke an `access_token` and `refresh_token`

        Either token may be provided to "log out" of the API session. Both tokens we be invalidated.


        * Only include param: `token` with your `access_token` or `refresh_token`

        * Requires an `Authorization` header as `Bearer access_token` to authenticate the request.


        ## Response

        * A successful response will have an empty body

        * An error response will include a JSON body with error details.

        '
      security:
      - Bearer: []
      parameters: []
      responses:
        '200':
          description: Token revocation succeeded
        '401':
          description: Unauthorized
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                token:
                  type: string
              required:
              - token
components:
  schemas:
    errors_authentication_failed:
      type: object
      properties:
        error:
          type: string
    oauth_token_response:
      type: object
      properties:
        access_token:
          type: string
        refresh_token:
          type: string
        token_type:
          type: string
        expires_in:
          type: integer
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
x-mint:
  mcp:
    enabled: true