NAV Navbar
shell
  • Introduction
  • Base URL
  • Authentication
  • Request IDs
  • Response Format
  • Pagination
  • Account
  • Users
  • Groups
  • Phishing
  • Training
  • Rate Limiting
  • Terms of Use
  • Errors
  • Introduction

    KnowBe4’s APIs are REST APIs that allow you to pull phishing, training, user, and group data from the KnowBe4 console. Data is returned in a JSON structure.

    By using KnowBe4's APIs, you agree to our Terms of Use.

    Our APIs use resource-oriented URLs for requests and HTTP response codes for error handling. HTTP features, such as HTTP authentication and HTTP verbs, are built-in and understood by standard HTTP clients.

    Our APIs are available to Platinum and Diamond customers.

    Base URL

    When submitting API requests, you will need to use the correct base URL depending on where your KnowBe4 account is located. Accounts on the US server (located at training.knowbe4.com) must use the Base URL of https://us.api.knowbe4.com while accounts on the EU server (located at eu.knowbe4.com) must use https://eu.api.knowbe4.com.

    Authentication

    Authenticate your account by including your secret API key in the request. You can access your API key and generate a new key if needed in your KnowBe4 Account Settings. Your API keys provide access to the data within your KnowBe4 platform and should be kept private. Do not share your API key in publicly-accessible areas.

    To authenticate, use this code:

    # With shell, include the correct header with each request you submit:
    curl "https://us.api.knowbe4.com/v1/phishing/campaigns" 
    -H "Authorization: Bearer <your_token>"
    

    Make sure to replace <your_token> with your API key.

    The API key should be included in all API requests to the server. The header should look like the following:

    Authorization: Bearer <your_token>

    All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

    Request IDs

    Example:

    X-Request-Id →1235678-39e4-4005-bad8-33ec22f78fc0
    

    Each API request has an associated request identifier. You can find this value in the response headers, under X-Request-Id. If you need to contact us about a specific request, providing the request identifier will ensure the fastest possible resolution.

    Response Format

    The supported response format is JSON. The response will be returned in a JSON structure by default--no additional parameter is needed.

    Pagination

    There are certain API endpoints where pagination is supported when retrieving a list of records. We currently support two query parameters: page and per_page. These parameters are optional when making a HTTP request. The values used by default are indicated below.

    Example:

    # The below request displays the fourth page of results with one phishing campaign per page.
    curl "https://us.api.knowbe4.com/v1/phishing/campaigns?per_page=1&page=4"
    -H "Authorization: Bearer <your_token>"
    
    Parameter Default Description
    page 1 The page number you want to retrieve.
    per_page 100 The maximum number of results returned in the response (Max = 250).

    Account

    Get Account and Subscription Data

    This endpoint retrieves account data from your KnowBe4 account, including your subscription level, number of seats, risk score history, and more. Risk score history is not currently available for accounts at https://eu.knowbe4.com.

    curl "https://us.api.knowbe4.com/v1/account"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

      {
        "name": "KB4-Demo",
        "type": "paid",
        "domains": [
            "kb4-demo.com"
        ],
        "admins": [
            {
                "id": 974345,
                "first_name": "Shea",
                "last_name": "O'Malley",
                "email": "shea.o@kb4-demo.com"
            }
        ],
        "subscription_level": "Diamond",
        "subscription_end_date": "2021-03-06",
        "number_of_seats": 25,
        "current_risk_score": 45.742,
        "risk_score_history": [
            {
                "risk_score": 45.742,
                "date": "2018-09-20"
            },
            {
                "risk_score": 35.61236,
                "date": "2018-09-19"
            },
            {
                "risk_score": 46.91221,
                "date": "2018-09-18"
            }
        ]
        }
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/account

    Parameters

    You can add optional parameters to change the output of your request.

    Parameter Description
    ?full=true Include the entire risk score history of your organization. If this parameter isn't used, six months of data will show by default.

    Account Attributes

    Attribute Type Description
    name varchar Organization's name. If the name is unavailable, the domain will be displayed.
    type varchar Indicates whether the account is paid, trial, or free.
    domains varchar An array of the allowed domains on the account.
    admins varchar An array of admins on the account, along with each admin's basic user information.
    subscription_level varchar The account's subscription level. (Only appears with paid KnowBe4 subscription)
    subscription_end_date datetime The account's subscription end date. (Only appears with paid KnowBe4 subscription)
    number_of_seats integer The number of seats available on the account. (Only appears with paid KnowBe4 subscription)
    current_risk_score float Organization's current risk score (Example: 13.7847). (EU accounts will not include risk score data yet)
    risk_score_history array An array displaying the risk score history from the past six months on the account. To show the full history, add the above parameter to your request. (EU accounts will not include risk score data yet)

    Users

    Get a List of All Users

    This endpoint retrieves a list of all users in your KnowBe4 account.

    curl "https://us.api.knowbe4.com/v1/users"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

        {
            "id": 667548,
            "employee_number": "19586",
            "first_name": "William",
            "last_name": "Scott",
            "job_title": "VP of Sales",
            "email": "wscott@kb4-demo.com",
            "phish_prone_percentage": 13.235,
            "phone_number": "555-553-5555",
            "extension": "32",
            "mobile_phone_number": "555-553-4444",
            "location": "Office A",
            "division": "Sales",
            "manager_name": "Michael Marcoux",
            "manager_email": "MMarcoux@kb4-demo.com",
            "adi_manageable": false,
            "adi_guid": null,
            "groups": [
                3264,
                2837,
            ],
            "aliases": []
            "joined_on": "2017-09-29T21:19:13.000Z",
            "last_sign_in": null,
            "status": "active"
            "organization": "KB4-Demo",
            "department": "Sales",
            "language": "English - United States",
            "comment": "Low PPP",
            "employee_start_date": "2017-09-01T16:00:00.000Z",
            "archived_at": null,
            "custom_field_1": "Building C, 4th Floor",
            "custom_field_2": null,
            "custom_field_3": null,
            "custom_field_4": null
            "custom_date_1": "1982-11-16",
            "custom_date_2": null
        },
         {
            "id": 141862,
            "employee_number": "19583",
            "first_name": "Linda",
            "last_name": "Stephens",
            "job_title": "Production Assistant",
            "email": "LStephens@kb4-demo.com",
            "phish_prone_percentage": 76,
            "phone_number": "555-555-5555",
            "extension": "44",
            "mobile_phone_number": "555-555-4444",
            "location": "Plant",
            "division": "Sales",
            "manager_name": "Troy Leblanc",
            "manager_email": "TLeblanc@knowbe4.com",
            "adi_manageable": false,
            "adi_guid": null,
            "groups": [
                3264,
            ],
            "aliases": [],
            "joined_on": "2016-06-24T15:02:38.000Z",
            "last_sign_in": "2017-06-27T16:34:13.000Z",
            "status": "active"
            "organization": "KB4-Demo",
            "department": "Production",
            "language": "French - Canada",
            "comment": "High PPP",
            "employee_start_date": "2017-09-01T16:00:00.000Z",
            "archived_at": null,
            "custom_field_1": "Building A, 12th Floor",
            "custom_field_2": null,
            "custom_field_3": null,
            "custom_field_4": null
            "custom_date_1": "1979-09-16",
            "custom_date_2": null
        },
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/users

    Parameters

    You can add optional parameters to change the output of your request.

    Parameter Description
    status=active Returns a list of all active users in your account.
    status=archived Returns a list of all archived users in your account.
    group_id=[group_id] Returns a list of all users who are members of the group indicated by the [group_id].
    expand=group Expands groups to provide additional details.

    Users (All) Attributes

    Attribute Type Description
    id integer User ID.
    employee_number varchar Employee number.
    first_name varchar First name.
    last_name varchar Last name.
    job_title varchar Job title.
    email varchar Email.
    phish_prone_percentage float Phish-prone percentage.
    phone_number varchar Phone number.
    extension varchar Phone extension.
    mobile_phone_number varchar Mobile phone number.
    location varchar Location.
    division varchar Division.
    manager_name varchar Manager's name.
    manager_email varchar Manager's email.
    adi_manageable boolean Indicates whether a user would be managed by AD, if enabled. Default is "true".
    adi_guid varchar ADI GUID.
    groups integer An array of group IDs (active or archived) that the user is a member of.
    aliases varchar An array of alias email addresses for the user (imported from AD).
    joined_on datetime Date the user was added to the KnowBe4 account.
    last_sign_in datetime Date the user last signed in to their KnowBe4 account.
    status varchar Status of user (active or archived).
    organization varchar Organization.
    department varchar Department.
    language varchar User's language.
    comment varchar Comment as indicated in user profile.
    employee_start_date datetime Employee start date.
    archived_at datetime Date the user was archived in KnowBe4 console, if applicable.
    custom_field_1 varchar Custom field 1.
    custom_field_2 varchar Custom field 2.
    custom_field_3 varchar Custom field 3.
    custom_field_4 varchar Custom field 4.
    custom_date_1 date Custom date 1.
    custom_date_2 date Custom date 2.

    Get a List of Users in a Specific Group

    This endpoint retrieves a list of all users who are members of a specific group.

    curl "https://us.api.knowbe4.com/v1/groups/3264/members"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

        {
            "id": 667548,
            "employee_number": "19586",
            "first_name": "William",
            "last_name": "Scott",
            "job_title": "VP of Sales",
            "email": "wscott@kb4-demo.com",
            "phish_prone_percentage": 13.235,
            "phone_number": "555-553-5555",
            "extension": "32",
            "mobile_phone_number": "555-553-4444",
            "location": "Office A",
            "division": "Sales",
            "manager_name": "Michael Marcoux",
            "manager_email": "MMarcoux@kb4-demo.com",
            "adi_manageable": false,
            "adi_guid": null,
            "groups": [
                3264,
                2837,
            ],
            "aliases": []
            "joined_on": "2017-09-29T21:19:13.000Z",
            "last_sign_in": null,
            "status": "active"
            "organization": "KB4-Demo",
            "department": "Sales",
            "language": "English - United States",
            "comment": "Low PPP",
            "employee_start_date": "2017-09-01T16:00:00.000Z",
            "archived_at": null,
            "custom_field_1": "Building C, 4th Floor",
            "custom_field_2": null,
            "custom_field_3": null,
            "custom_field_4": null
            "custom_date_1": "1982-11-16",
            "custom_date_2": null
        },
         {
            "id": 141862,
            "employee_number": "19583",
            "first_name": "Linda",
            "last_name": "Stephens",
            "job_title": "Production Assistant",
            "email": "LStephens@kb4-demo.com",
            "phish_prone_percentage": 76,
            "phone_number": "555-555-5555",
            "extension": "44",
            "mobile_phone_number": "555-555-4444",
            "location": "Plant",
            "division": "Sales",
            "manager_name": "Troy Leblanc",
            "manager_email": "TLeblanc@knowbe4.com",
            "adi_manageable": false,
            "adi_guid": null,
            "groups": [
                3264,
            ],
            "aliases": [],
            "joined_on": "2016-06-24T15:02:38.000Z",
            "last_sign_in": "2017-06-27T16:34:13.000Z",
            "status": "active"
            "organization": "KB4-Demo",
            "department": "Production",
            "language": "French - Canada",
            "comment": "High PPP",
            "employee_start_date": "2017-09-01T16:00:00.000Z",
            "archived_at": null,
            "custom_field_1": "Building A, 12th Floor",
            "custom_field_2": null,
            "custom_field_3": null,
            "custom_field_4": null
            "custom_date_1": "1979-09-16",
            "custom_date_2": null
        },
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/groups/[group_id]/members

    Users (Specific Group) Attributes

    Attribute Type Description
    id integer User ID.
    employee_number varchar Employee number.
    first_name varchar First name.
    last_name varchar Last name.
    job_title varchar Job title.
    email varchar Email.
    phish_prone_percentage float Phish-prone percentage.
    phone_number varchar Phone number.
    extension varchar Phone extension.
    mobile_phone_number varchar Mobile phone number.
    location varchar Location.
    division varchar Division.
    manager_name varchar Manager's name.
    manager_email varchar Manager's email.
    adi_manageable boolean Indicates whether a user would be managed by AD, if enabled. Default is "true".
    adi_guid varchar ADI GUID.
    groups integer An array of group IDs (active or archived) that the user is a member of.
    aliases varchar An array of alias email addresses for the user (imported from AD).
    joined_on datetime Date the user was added to the KnowBe4 account.
    last_sign_in datetime Date the user last signed in to their KnowBe4 account.
    status varchar Status of user (active or archived).
    organization varchar Organization.
    department varchar Department.
    language varchar User's language.
    comment varchar Comment as indicated in user profile.
    employee_start_date datetime Employee start date.
    archived_at datetime Date the user was archived in KnowBe4 console, if applicable.
    custom_field_1 varchar Custom field 1.
    custom_field_2 varchar Custom field 2.
    custom_field_3 varchar Custom field 3.
    custom_field_4 varchar Custom field 4.
    custom_date_1 date Custom date 1.
    custom_date_2 date Custom date 2.

    Get a Specific User

    This endpoint retrieves a specific user based on the provided user identifier ([user_id]).

    curl "https://us.api.knowbe4.com/v1/users/141862"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

         {
            "id": 141862,
            "employee_number": "19583",
            "first_name": "Linda",
            "last_name": "Stephens",
            "job_title": "Production Assistant",
            "email": "LStephens@kb4-demo.com",
            "phish_prone_percentage": 76,
            "phone_number": "555-555-5555",
            "extension": "44",
            "mobile_phone_number": "555-555-4444",
            "location": "Plant",
            "division": "Sales",
            "manager_name": "Troy Leblanc",
            "manager_email": "TLeblanc@knowbe4.com",
            "adi_manageable": false,
            "adi_guid": null,
            "groups": [
                3264,
            ],
            "aliases": [],
            "joined_on": "2016-06-24T15:02:38.000Z",
            "last_sign_in": "2017-06-27T16:34:13.000Z",
            "status": "active",
            "organization": "KB4-Demo",
            "department": "Production",
            "language": "French - Canada",
            "comment": "High PPP",
            "employee_start_date": "2017-09-01T16:00:00.000Z",
            "archived_at": null,
            "custom_field_1": "Building A, 12th Floor",
            "custom_field_2": null,
            "custom_field_3": null,
            "custom_field_4": null
            "custom_date_1": "1979-09-16",
            "custom_date_2": null
        },
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/users/[user_id]

    User (Specific) Attributes

    Attribute Type Description
    id integer User ID.
    employee_number varchar Employee number.
    first_name varchar First name.
    last_name varchar Last name.
    job_title varchar Job title.
    email varchar Email.
    phish_prone_percentage float Phish-prone percentage.
    phone_number varchar Phone number.
    extension varchar Phone extension.
    mobile_phone_number varchar Mobile phone number.
    location varchar Location.
    division varchar Division.
    manager_name varchar Manager's name.
    manager_email varchar Manager's email.
    adi_manageable boolean Indicates whether a user would be managed by AD, if enabled. Default is "true".
    adi_guid varchar ADI GUID.
    groups integer An array of group IDs (active or archived) that the user is a member of.
    aliases varchar An array of alias email addresses for the user (imported from AD).
    joined_on datetime Date the user was added to the KnowBe4 account.
    last_sign_in datetime Date the user last signed in to their KnowBe4 account.
    status varchar Status of user (active or archive).
    organization varchar Organization.
    department varchar Department.
    language varchar User's language.
    comment varchar Comment as indicated in user profile.
    employee_start_date datetime Employee start date.
    archived_at datetime Date the user was archived in KnowBe4 console, if applicable.
    custom_field_1 varchar Custom field 1.
    custom_field_2 varchar Custom field 2.
    custom_field_3 varchar Custom field 3.
    custom_field_4 varchar Custom field 4.
    custom_date_1 date Custom date 1.
    custom_date_2 date Custom date 2.

    Groups

    Get a List of All Groups

    This endpoint retrieves a list of all groups in your KnowBe4 account.

    curl "https://us.api.knowbe4.com/v1/groups"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

        {
            "id": 14804,
            "name": "Admins",
            "group_type": "console_group",
            "adi_guid": null,
            "member_count": 15,
            "status": "active"
        },
        {
            "id": 14224,
            "name": "IT",
            "group_type": "console_group",
            "adi_guid": null,
            "member_count": 4,
            "status": "active"
        },
        {
            "id": 3140,
            "name": "Executives",
            "group_type": "console_group",
            "adi_guid": null,
            "member_count": 6,
            "status": "active"
        },
        {
            "id": 3141,
            "name": "Accounting",
            "group_type": "adi_managed_group",
            "adi_guid": "abc12345-6789-abc-1234-456789abc123",
            "member_count": 10,
            "status": "active"
        },
        {
            "id": 3139,
            "name": "Sales",
            "group_type": "console_group",
            "adi_guid": null,
            "member_count": 53,
            "status": "active"
        },
        {
            "id": 7824,
            "name": "Marketing",
            "group_type": "console_group",
            "adi_guid": null,
            "member_count": 14,
            "status": "active"
        },
        {
            "id": 1759,
            "name": "Customer Service",
            "group_type": "console_group",
            "adi_guid": null,
            "member_count": 50,
            "status": "active"
        },
        {
            "id": 6276,
            "name": "Clickers in the past 90 days",
            "group_type": "smart_group",
            "adi_guid": null,
            "member_count": 20,
            "status": "active"
        },
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/groups

    Parameters

    You can add optional parameters to filter the output of your request.

    Parameter Description
    status=active Returns a list of all active groups in your account.
    status=archived Returns a list of all archived groups in your account.

    Groups (All) Attributes

    Attribute Type Description
    id integer Group ID.
    name varchar Group Name.
    group_type varchar Indicates the group type (console_group, smart_group, adi_managed_group).
    adi_guid varchar ADI GUID.
    member_count integer Number of members in the group.
    status varchar Status of group (active or archived).

    Get a Specific Group

    This endpoint retrieves a specific group in your KnowBe4 account, based on the provided group identifier ([group_id]).

    curl "https://us.api.knowbe4.com/v1/groups/3140"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

        {
            "id": 3140,
            "name": "Executives",
            "group_type": "console_group",
            "adi_guid": null,
            "member_count": 6,
            "status": "active"
        },
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/groups/[group_id]

    Group (Specific) Attributes

    Attribute Type Description
    id integer Group ID.
    name varchar Group Name.
    group_type varchar Indicates the group type (console_group, smart_group, adi_managed_group).
    adi_guid varchar ADI GUID.
    member_count integer Number of members in the group.
    status varchar Status of group (active or archived).

    Phishing

    Get All Phishing Campaigns

    This endpoint retrieves data from all the phishing campaigns in your account.

    curl "https://us.api.knowbe4.com/v1/phishing/campaigns"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

    [
      {
        "campaign_id": 253322,
        "name": "One Time Phishing Security Test",
        "groups": [
          {
            "group_id": 0,
            "name": "All Users"
          }
        ],
        "last_phish_prone_percentage": 0.3,
        "last_run": "2017-12-23T21:21:06.000Z",
        "status": "Closed",
        "hidden": false,
        "send_duration": "3 Business Days",
        "track_duration": "3 Days",
        "frequency": "One Time",
        "difficulty_filter": [1,2,3,4,5],
        "create_date": "2017-12-06T21:21:06.000Z",
        "psts_count": 1,
        "psts": [
          {
            "pst_id": 1,
            "status": "Closed",
            "start_date": "2017-12-23T21:21:06.000Z",
            "users_count": 123,
            "phish_prone_percentage": 0.3
          }
        ]
      }
    ]
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/phishing/campaigns

    Parameters

    You can add optional parameters to change the output of your request.

    Parameter Description
    campaign_id=[campaign_id] Gets all phishing security tests from a specific campaign, based on the [campaign_id].

    Phishing Campaigns (All) Attributes

    Attribute Type Description
    campaign_ID integer Unique ID of the phishing campaign.
    name varchar Name of the phishing campaign.
    groups varchar An array of groups targeted by the phishing campaign, including group name and id.
    last_phish_prone_percentage integer Last phish-prone percentage on the campaign, shown in decimal format (Example: 0.2 = 20%).
    last_run datetime Date and time of the last phishing security test in the campaign.
    status varchar Status of the campaign.
    hidden boolean Indicates if the campaign has been hidden from reports (True = Hidden).
    send_duration varchar Duration of time the campaign will send phishing emails.
    track_duration varchar Duration of time the campaign will track phishing security test failures after the final phishing email is sent.
    frequency varchar How often the phishing campaign is configured to run.
    difficulty_filter integer An array indicating what difficulty level(s) of phishing templates were chosen on the campaign, from 1 - 5.
    create_date datetime Date and time the campaign was created.
    psts_count integer Number of phishing security tests in the campaign.
    psts varchar An array of all phishing security tests in the campaign, includes basic data about each phishing security test.

    Get a Specific Phishing Campaign

    This endpoint retrieves data from a specific phishing campaign, based on the provided campaign identifier (campaign_id).

    curl "https://us.api.knowbe4.com/v1/phishing/campaigns/226433"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

    {
        "campaign_id": 226433,
        "name": "Accounting and HR Monthly Test",
        "groups": [
                {
                    "group_id": 4215,
                    "name": "Accounting"
                },
                {
                    "group_id": 4317,
                    "name": "HR"
                }
        ],
        "last_phish_prone_percentage": 0.11,
        "last_run": "2017-08-03T21:10:01.000Z",
        "status": "Closed",
        "hidden": false,
        "send_duration": "3 Business Days",
        "track_duration": "1 Week",
        "frequency": "Monthly",
        "difficulty_filter": [
            1,
            2,
            3,
            4,
            5
        ],
        "create_date": "2017-08-03T20:57:41.000Z",
        "psts_count": 1,
        "psts": [
            {
                "pst_id": 14540,
                "status": "Closed",
                "start_date": "2017-08-03T21:10:01.000Z",
                "users_count": 15,
                "phish_prone_percentage": 0.11
            }
        ]
    }
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/phishing/campaigns/[campaign_id]

    Phishing Campaign (Specific) Attributes

    Attribute Type Description
    campaign_ID integer Unique ID of the phishing campaign.
    name varchar Name of the phishing campaign.
    groups varchar An array of groups targeted by the phishing campaign, including group name and id.
    last_phish_prone_percentage integer Last Phish-prone percentage on the campaign, shown in decimal format (Example: 0.2 = 20%).
    last_run datetime Date and time of the last phishing security test in the campaign.
    status varchar Status of the campaign.
    hidden boolean Indicates if the campaign has been hidden from reports (True = Hidden).
    send_duration varchar Duration of time the campaign will send phishing emails.
    track_duration varchar Duration of time the campaign will track phishing security test failures after the final phishing email is sent.
    frequency varchar How often the phishing campaign is configured to run.
    difficulty_filter integer An array indicating what difficulty level(s) of phishing templates were chosen on the campaign, from 1 - 5.
    create_date datetime Date and time the campaign was created.
    psts_count integer Number of phishing security tests in the campaign.
    psts varchar An array of all phishing security tests in the campaign, includes basic data about each phishing security test.

    Get All Phishing Security Tests (PSTs)

    This endpoint retrieves a list of all phishing security tests in your account.

    curl "https://us.api.knowbe4.com/v1/phishing/security_tests"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

    [
        {
            "campaign_id": 3325,
            "pst_id": 16190,
            "status": "Closed",
            "name": "IT Team Test",
            "groups": [
                {
                    "group_id": 16342,
                    "name": "IT"
                }
            ],
            "phish_prone_percentage": 0.25,
            "started_at": "2018-01-11T21:57:02.000Z",
            "duration": 1,
            "categories": [
                {
                    "category_id": 4537,
                    "name": "IT Phishing"
                }
            ],
            "template": {
                "id": 11728,
                "name": "Microsoft Update"
            },
            "landing_page": {
                "id": 1841,
                "name": "SEI Landing Page"
            },
            "scheduled_count": 4,
            "delivered_count": 4,
            "opened_count": 3,
            "clicked_count": 1,
            "replied_count": 0,
            "attachment_open_count": 0,
            "macro_enabled_count": 0,
            "data_entered_count": 0,
            "vulnerable_plugin_count": 0,
            "exploited_count": 0,
            "reported_count": 1,
            "bounced_count": 0
        },
        {
            "campaign_id": 3323,
            "pst_id": 16189,
            "status": "Closed",
            "name": "Corporate Test",
            "groups": [
                {
                    "group_id": 16342,
                    "name": "Corporate Employees"
                }
            ],
            "phish_prone_percentage": 0.5,
            "started_at": "2018-01-11T19:45:02.000Z",
            "duration": 1,
            "categories": [
                {
                    "category_id": 4537,
                    "name": "Current Events"
                }
            ],
            "template": {
                "id": 11728,
                "name": "CNN Breaking News"
            },
            "landing_page": {
                "id": 1841,
                "name": "SEI Landing Page"
            },
            "scheduled_count": 40,
            "delivered_count": 4,
            "opened_count": 36,
            "clicked_count": 16,
            "replied_count": 0,
            "attachment_open_count": 3,
            "macro_enabled_count": 0,
            "data_entered_count": 0,
            "vulnerable_plugin_count": 0,
            "exploited_count": 2,
            "reported_count": 0,
            "bounced_count": 0
        },
        . . .
    ]
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/phishing/security_tests

    Phishing Security Tests (All) Attributes

    Attribute Type Description
    campaign_id integer Unique ID of the phishing campaign the test was a part of.
    pst_id integer Unique ID of the phishing security test.
    status varchar Status of the phishing security test.
    name varchar Name of phishing security test.
    groups varchar An array of groups targeted by the phishing security test, including group name and id.
    phish_prone_percentage integer Phish-prone percentage on the test, shown in decimal format (Example: 0.2 = 20%).
    started_at datetime Date and time the phishing security test started.
    duration integer Duration of the phishing security test in calendar days (send_duration + track_duration).
    categories varchar An array of the template categories included in this phishing security test, including the category name and id.
    template varchar Template name and ID if a specific template was selected (or if the chosen setting was "Random"), "null" if not.
    landing_page varchar An array including the name and ID of the landing page used as part of the campaign.
    scheduled_count integer Number of users who were scheduled to receive phishing emails.
    delivered_count integer Number of users who received phishing emails.
    opened_count integer Number of users who opened the email.
    clicked_count integer Number of users who clicked.
    replied_count integer Number of users who replied.
    attachment_open_count integer Number of users who opened an attachment.
    macro_enabled_count integer Number of users who enabled a macro on an attachment they opened.
    data_entered_count integer Number of users who entered data on a landing page.
    vulnerable_plugin_count integer Number of users who were found to have vulnerable browser plugins.
    exploited_count integer Number of users who failed an EZXploit test.
    reported_count integer Number of users who reported the email using the Phish Alert Button.
    bounced_count integer Number of users whose phishing email bounced.

    Get All PSTs From a Specific Campaign

    This endpoint retrieves a list of all phishing security tests from a specific phishing campaign, based on the provided phishing campaign identifier (campaign_id).

    curl "https://us.api.knowbe4.com/v1/phishing/campaigns/2115/security_tests"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

    [
            {
            "campaign_id": 2115,
            "pst_id": 16368,
            "status": "Active",
            "name": "Current Events and Social Networking",
            "groups": [
                {
                    "group_id": 7157,
                    "name": "Northwest Building - All"
                }
            ],
            "phish_prone_percentage": 0.225806451612903,
            "started_at": "2018-02-01T14:21:01.000Z",
            "duration": 5,
            "categories": [
                {
                    "category_id": 2,
                    "name": "My Custom Categories"
                },
                {
                    "category_id": 8,
                    "name": "Current Events"
                },
                {
                    "category_id": 53,
                    "name": "Social Networking"
                },
                {
                    "category_id": 4047,
                    "name": "Sharepoint"
                }
            ],
            "template": {
                "id": null,
                "name": "Random"
            },
            "landing_page": {
                "id": 933,
                "name": "SEI Landing Page"
            },
            "scheduled_count": 31,
            "delivered_count": 31,
            "opened_count": 20,
            "clicked_count": 7,
            "replied_count": 0,
            "attachment_open_count": 0,
            "macro_enabled_count": 0,
            "data_entered_count": 0,
            "vulnerable_plugin_count": 0,
            "exploited_count": 0,
            "reported_count": 0,
            "bounced_count": 3
        },
        {
            "campaign_id": 2115,
            "pst_id": 17709,
            "status": "Closed",
            "name": "Current Events and Social Networking",
            "groups": [
                {
                    "group_id": 7157,
                    "name": "Northwest Building - All"
                }
            ],
            "phish_prone_percentage": 0.25,
            "started_at": "2018-01-05T14:00:01.000Z",
            "duration": 5,
            "categories": [
                {
                    "category_id": 2,
                    "name": "My Custom Categories"
                },
                {
                    "category_id": 8,
                    "name": "Current Events"
                },
                {
                    "category_id": 53,
                    "name": "Social Networking"
                },
                {
                    "category_id": 4047,
                    "name": "Sharepoint"
                }
            ],
            "template": {
                "id": null,
                "name": "Random"
            },
            "landing_page": {
                "id": 933,
                "name": "SEI Landing Page"
            },
            "scheduled_count": 32,
            "delivered_count": 32,
            "opened_count": 14,
            "clicked_count": 8,
            "replied_count": 0,
            "attachment_open_count": 0,
            "macro_enabled_count": 0,
            "data_entered_count": 0,
            "vulnerable_plugin_count": 0,
            "exploited_count": 0,
            "reported_count": 0,
            "bounced_count": 3
        },
        . . .
    ]
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/phishing/campaigns/[campaign_id]/security_tests

    Phishing Security Tests (From a Specific Campaign) Attributes

    Attribute Type Description
    campaign_id integer Unique ID of the phishing campaign the test was a part of.
    pst_id integer Unique ID of the phishing security test.
    status varchar Status of the phishing security test.
    name varchar Name of phishing security test.
    groups varchar An array of groups targeted by the phishing security test, including group name and id.
    phish_prone_percentage integer Phish-prone percentage on the test, shown in decimal format (Example: 0.2 = 20%).
    started_at datetime Date and time the phishing security test started.
    duration integer Duration of the phishing security test in calendar days (send_duration + track_duration).
    categories varchar An array of the template categories included in this phishing security test, including the category name and id.
    template varchar Template name and ID if a specific template was selected (or if the chosen setting was "Random"), "null" if not.
    landing_page varchar An array including the name and ID of the landing page used as part of the campaign.
    scheduled_count integer Number of users who were scheduled to receive phishing emails.
    delivered_count integer Number of users who received phishing emails.
    opened_count integer Number of users who opened the email.
    clicked_count integer Number of users who clicked.
    replied_count integer Number of users who replied.
    attachment_open_count integer Number of users who opened an attachment.
    macro_enabled_count integer Number of users who enabled a macro on an attachment they opened.
    data_entered_count integer Number of users who entered data on a landing page.
    vulnerable_plugin_count integer Number of users who were found to have vulnerable browser plugins.
    exploited_count integer Number of users who failed an EZXploit test.
    reported_count integer Number of users who reported the email using the Phish Alert Button.
    bounced_count integer Number of users whose phishing email bounced.

    Get a Specific PST

    This endpoint retrieves data from a specific phishing security test, based on the provided phishing security test identifier (pst_id).

    curl "https://us.api.knowbe4.com/v1/phishing/security_tests/14540"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

    {
        "campaign_id": 2643,
        "pst_id": 14540,
        "status": "Closed",
        "name": "Executive Group Test",
        "groups": [
            {
                "group_id": 7157,
                "name": "Executives"
            }
        ],
        "phish_prone_percentage": 0.33,
        "started_at": "2017-08-03T21:10:01.000Z",
        "duration": 7,
        "categories": [
            {
                "category_id": 23,
                "name": "Executive Phishing Templates"
            }
        ],
        "template": {
            "id": null,
            "name": "Random"
        },
        "landing_page": {
            "id": 0,
            "name": "Default"
        },
        "scheduled_count": 6,
        "delivered_count": 6,
        "opened_count": 0,
        "clicked_count": 2,
        "replied_count": 0,
        "attachment_open_count": 0,
        "macro_enabled_count": 0,
        "data_entered_count": 0,
        "vulnerable_plugin_count": 0,
        "exploited_count": 0,
        "reported_count": 3,
        "bounced_count": 0
    }
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/phishing/security_tests/[pst_id]

    Phishing Security Test (Specific) Attributes

    Attribute Type Description
    campaign_id integer Unique ID of the phishing campaign the test was a part of.
    pst_id integer Unique ID of the phishing security test.
    status varchar Status of the phishing security test.
    name varchar Name of phishing security test.
    groups varchar An array of groups targeted by the phishing security test, including group name and id.
    phish_prone_percentage integer Phish-prone percentage on the test, shown in decimal format (Example: 0.2 = 20%).
    started_at datetime Date and time the phishing security test started.
    duration integer Duration of the phishing security test in calendar days (send_duration + track_duration).
    categories varchar An array of the template categories included in this phishing security test, including the category name and id.
    template varchar Template name and ID if a specific template was selected (or if the chosen setting was "Random"), "null" if not.
    landing_page varchar An array including the name and ID of the landing page used as part of the test.
    scheduled_count integer Number of users who were scheduled to receive phishing emails.
    delivered_count integer Number of users who received phishing emails.
    opened_count integer Number of users who opened the email.
    clicked_count integer Number of users who clicked.
    replied_count integer Number of users who replied.
    attachment_open_count integer Number of users who opened an attachment.
    macro_enabled_count integer Number of users who enabled a macro on an attachment they opened.
    data_entered_count integer Number of users who entered data on a landing page.
    vulnerable_plugin_count integer Number of users who were found to have vulnerable browser plugins.
    exploited_count integer Number of users who failed an EZXploit test.
    reported_count integer Number of users who reported the email using the Phish Alert Button.
    bounced_count integer Number of users whose phishing email bounced.

    Get All Recipient Results

    This endpoint retrieves a list of all the recipients (users) that were part of a specific phishing security test, based on the provided phishing security test identifier (pst_id).

    curl "https://us.api.knowbe4.com/v1/phishing/security_tests/14540/recipients"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

    [
        {
            "recipient_id": 3077784,
            "pst_id": 14540,
            "user": {
                "id": 261899,
                "active_directory_guid": null,
                "first_name": "Fritz",
                "last_name": "O'Connell",
                "email": "fritzoconnell@kb4-demo.com"
        },
            "template": {
                "id": 1521,
                "name": "Your Amazon Order"
        },
            "scheduled_at": "2017-08-03T21:10:01.000Z",
            "delivered_at": "2017-08-03T21:11:32.000Z",
            "opened_at": null,
            "clicked_at": null,
            "replied_at": "2017-08-03T21:11:32.000Z",
            "attachment_opened_at": "2017-08-03T21:11:32.000Z",
            "macro_enabled_at": "2017-08-03T21:11:32.000Z",
            "data_entered_at": null,
            "vulnerable_plugins_at": null,
            "exploited_at": null,
            "reported_at": null,
            "bounced_at": null,
            "ip": "XX.XX.XXX.XXX",
            "ip_location": "Clearwater, FL",
            "browser": "IE",
            "browser_version": "10",
            "os": "Windows"
        },
        {
            "recipient_id": 3077785,
            "pst_id": 14540,
            "user": {
                "id": 264615,
                "active_directory_guid": null,
                "first_name": "Bill",
                "last_name": "Jones",
                "email": "BillJones@kb4-demo.com"
            },
            "template": {
                "id": 2,
                "name": ""
            },
            "scheduled_at": "2017-08-03T21:10:01.000Z",
            "delivered_at": "2017-08-03T21:11:32.000Z",
            "opened_at": "2016-03-18T18:44:25.000Z",
            "clicked_at": "2016-03-18T18:44:25.000Z",
            "replied_at": null,
            "attachment_opened_at": null,
            "macro_enabled_at": null,
            "data_entered_at": "2017-08-03T21:11:32.000Z",
            "vulnerable_plugins_at": null,
            "exploited_at": null,
            "reported_at": null,
            "bounced_at": null,
            "ip": "XX.XX.XXX.XXX",
            "ip_location": "St.Petersburg, FL",
            "browser": "Chrome",
            "browser_version": "48.0",
            "os": "MacOSX"
        }
    ]
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/phishing/security_tests/[pst_id]/recipients

    Phishing Security Test Recipients (All) Attributes

    Attribute Type Description
    recipient_id integer Unique ID of the recipient (user).
    pst_id integer Unique ID of the phishing security test.
    user varchar An array of phishing security test recipient information, including id, Active Directory GUID (if applicable), first and last name, and email.
    template varchar An array displaying the template the user received, including the template name and id.
    scheduled_at datetime Date and time the user was scheduled to receive the phishing security test.
    delivered_at datetime Date and time the user received the phishing security test.
    opened_at datetime Date and time the user opened the phishing security test.
    clicked_at datetime Date and time the user clicked.
    replied_at datetime Date and time the user replied.
    attachment_opened_at datetime Date and time the user opened an attachment.
    macro_enabled_at datetime Date and time the user enabled a macro on an attachment they opened.
    data_entered_at datetime Date and time the user entered data on a landing page.
    vulnerable_plugins_at datetime Date and time the user was found to have vulnerable browser plugins.
    exploited_at datetime Date and time the user failed an EZXploit test.
    reported_at datetime Date and time the user reported the email as phishing using the Phish Alert Button.
    bounced_at datetime Date and time the phishing email designated for this user bounced.
    ip varchar User's IP address.
    ip_location varchar User's IP geolocation.
    browser varchar User's browser.
    browser_version varchar User's browser version.
    os varchar User's operating system.

    Get a Specific Recipient's Results

    This endpoint retrieves details about a specific user's phishing security test results, based on the provided phishing security test identifier (pst_id) and recipient identifier (recipient_id).

    curl "https://us.api.knowbe4.com/v1/phishing/security_tests/14450/recipients/3077784"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

    {
        "recipient_id": 3077784,
        "pst_id": 14450,
        "user": {
            "id": 261899,
            "active_directory_guid": null,
            "first_name": "Fritz",
            "last_name": "O'Connell",
            "email": "fritzoconnell@kb4-demo.com"
        },
        "template": {
            "id": 1521,
            "name": "Your Amazon Order"
        },
        "scheduled_at": "2017-08-03T21:10:01.000Z",
        "delivered_at": "2017-08-03T21:11:32.000Z",
        "opened_at": null,
        "clicked_at": null,
        "replied_at": "2017-08-03T21:11:32.000Z",
        "attachment_opened_at": "2017-08-03T21:11:32.000Z",
        "macro_enabled_at": "2017-08-03T21:11:32.000Z",
        "data_entered_at": null,
        "vulnerable_plugins_at": null,
        "exploited_at": null,
        "reported_at": null,
        "bounced_at": null,
        "ip": "XX.XX.XXX.XXX",
        "ip_location": "Clearwater, FL",
        "browser": "IE",
        "browser_version": "10",
        "os": "Windows"
    }
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/phishing/security_tests/[pst_id]/recipients/[recipient_id]

    Phishing Security Test Recipient (Specific) Attributes

    Attribute Type Description
    recipient_id integer Unique ID of the recipient (user).
    pst_id integer Unique ID of the phishing security test.
    user varchar An array of phishing security test recipient information, including ID, Active Directory GUID (if applicable), first and last name, and email.
    template varchar An array displaying the template the user received, including the template name and id.
    scheduled_at datetime Date and time the user was scheduled to receive the phishing security test.
    delivered_at datetime Date and time the user received the phishing security test.
    opened_at datetime Date and time the user opened the phishing security test.
    clicked_at datetime Date and time the user clicked.
    replied_at datetime Date and time the user replied.
    attachment_opened_at datetime Date and time the user opened an attachment.
    macro_enabled_at datetime Date and time the user enabled a macro on an attachment they opened.
    data_entered_at datetime Date and time the user entered data on a landing page.
    vulnerable_plugins_at datetime Date and time the user was found to have vulnerable browser plugins.
    exploited_at datetime Date and time the user failed an EZXploit test.
    reported_at datetime Date and time the user reported the email as phishing using the Phish Alert Button.
    bounced_at datetime Date and time the phishing email designated for this user bounced.
    ip varchar User's IP address.
    ip_location varchar User's IP geolocation.
    browser varchar User's browser.
    browser_version varchar User's browser version.
    os varchar User's operating system.

    Training

    Get all Store Purchases

    This endpoint retrieves a list of all Store Purchases in your KnowBe4 account.

    curl "https://us.api.knowbe4.com/v1/training/store_purchases"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

        {
            "store_purchase_id": 6430,
            "content_type": "Store Purchase",
            "name": "A Day of Bad Passwords",
            "description": "Have you ever thought about how many accounts you log in to every day. Let's take a look at a day...",
            "type": "Video",
            "duration": null,
            "retired": false,
            "retirement_date": null,
            "publish_date": "2017-01-04T16:38:00.000Z",
            "publisher": "Security Awareness Company",
            "purchase_date": "2017-12-18T19:25:34.000Z",
            "policy_url": null
        },
    
        {
            "store_purchase_id": 978,
            "content_type": "Store Purchase",
            "name": "FFIEC (Financial Compliance)",
            "description": "This module covers specific IT practices for auditors or examiners in evaluating the levels of...",
            "type": "Training Module",
            "duration": 40,
            "retired": false,
            "retirement_date": null,
            "publish_date": "2017-01-31T19:47:00.000Z",
            "publisher": "Security Awareness Company",
            "purchase_date": "2017-01-31T05:00:00.000Z",
            "policy_url": null
        }
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/training/store_purchases

    Store Purchases (All) Attributes

    Attribute Type Description
    store_purchase_id integer ID.
    content_type varchar Indicates that the item is a Store Purchase.
    name varchar Name.
    description varchar Description. (Up to 100 characters)
    type varchar Type. (Training Module, Video Module, Video, Game, Poster/Artwork, Newsletter/Security Doc)
    duration integer Duration, in minutes.
    retired boolean Indicates if the Store Purchase item is retired. (True = Retired)
    retirement_date datetime Retirement date.
    publish_date datetime Published date.
    publisher varchar Publisher.
    purchase_date datetime Purchase date.
    policy_url varchar Policy URL location. (Null = No policy URL provided)

    Get a Specific Store Purchase

    This endpoint retrieves a specific Store Purchase from your KnowBe4 account.

    curl "https://us.api.knowbe4.com/v1/training/store_purchases/6430"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

        {
            "store_purchase_id": 6430,
            "content_type": "Store Purchase",
            "name": "A Day of Bad Passwords",
            "description": "Have you ever thought about how many accounts you log in to every day. Let's take a look at a day...",
            "type": "Video",
            "duration": null,
            "retired": false,
            "retirement_date": null,
            "publish_date": "2017-01-04T16:38:00.000Z",
            "publisher": "Security Awareness Company",
            "purchase_date": "2017-12-18T19:25:34.000Z",
            "policy_url": null
        },
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/training/store_purchases/[store_purchase_id]

    Store Purchases (Specific) Attributes

    Attribute Type Description
    store_purchase_id integer ID.
    content_type varchar Indicates that the item is a Store Purchase.
    name varchar Name.
    description varchar Description. (Up to 100 characters)
    type varchar Type. (Training Module, Video Module, Video, Game, Poster/Artwork, Newsletter/Security Doc)
    duration integer Duration, in minutes.
    retired boolean Indicates if the Store Purchase item is retired. (True = Retired)
    retirement_date datetime Retirement date.
    publish_date datetime Published date.
    publisher varchar Publisher.
    purchase_date datetime Purchase date.
    policy_url varchar Policy URL location. (Null = No policy URL provided)

    Get all Policies

    This endpoint retrieves a list of all uploaded policies in your KnowBe4 account.

    curl "https://us.api.knowbe4.com/v1/policies"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

        {
            "id": 2430,
            "content_type": "Uploaded Policy",
            "name": "Physical Security Policy",
            "minimum_time": 3,
            "default_language": "en-us",
            "published": true
        },
        {
            "id": 3474,
            "content_type": "Uploaded Policy",
            "name": "Harassment Policy",
            "minimum_time": 3,
            "default_language": "en-us",
            "published": true
        },
        {
            "id": 2345,
            "content_type": "Uploaded Policy",
            "name": "Dress Code Policy",
            "minimum_time": 1,
            "default_language": "en-us",
            "published": true
        }
    
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/policies

    Policies (All) Attributes

    Attribute Type Description
    policy_id integer Policy ID.
    name varchar Title of policy.
    content_type varchar Indicates that the item is an uploaded policy.
    minimum_time integer Minimum number of minutes that the user is required to review the policy. (Null = No minimum time required)
    default_language varchar Default language of the policy.
    published boolean Indicates if the policy is published. (True = Published)

    Get a Specific Policy

    This endpoint retrieves a specific uploaded policy from your KnowBe4 account.

    curl "https://us.api.knowbe4.com/v1/policies/2430"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

        {
            "id": 2430,
            "content_type": "Uploaded Policy",
            "name": "Physical Security Policy",
            "minimum_time": 3,
            "default_language": "en-us",
            "published": true
        },
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/policies/[policy_id]

    Policies (Specific) Attributes

    Attribute Type Description
    policy_id integer Policy ID.
    name varchar Title of policy.
    content_type varchar Indicates that the item is an uploaded policy.
    minimum_time integer Minimum number of minutes that the user is required to review the policy. (Null = No minimum time required)
    default_language varchar Default language of the policy.
    published boolean Indicates if the policy is published. (True = Published)

    Get all Training Campaigns

    This endpoint retrieves a list of all Training Campaigns in your KnowBe4 account.

    curl "https://us.api.knowbe4.com/v1/training/campaigns"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

    {
            "campaign_id": 3317,
            "name": "Remedial Campaign - Northwest",
            "groups": [
                {
                    "group_id": 16343,
                    "name": "Northwest Clickers"
                }
            ],
            "status": "Completed",
            "modules": [
                {
                    "store_purchase_id": 19,
                    "content_type": "Store Purchase",
                    "name": "2018 Kevin Mitnick Security Awareness Training - 15 min",
                    "description": "This 15-minute module is an advanced, condensed version of the full 45-minute training, often...",
                    "type": "Training Module",
                    "duration": 15,
                    "retired": false,
                    "retirement_date": null,
                    "publish_date": "2018-02-03T02:20:00.000Z",
                    "publisher": "KnowBe4",
                    "purchase_date": "2017-06-18T00:00:00.000Z",
                    "policy_url": "https://www.yourcompany.com/phishingawarenesspolicy.pdf"
                },
            ],
            "content": [
                {
                    "store_purchase_id": 19,
                    "content_type": "Store Purchase",
                    "name": "2018 Kevin Mitnick Security Awareness Training - 15 min",
                    "description": "This 15-minute module is an advanced, condensed version of the full 45-minute training, often...",
                    "type": "Training Module",
                    "duration": 15,
                    "retired": false,
                    "retirement_date": null,
                    "publish_date": "2018-02-03T02:20:00.000Z",
                    "publisher": "KnowBe4",
                    "purchase_date": "2017-06-18T00:00:00.000Z",
                    "policy_url": "https://www.yourcompany.com/phishingawarenesspolicy.pdf"
                },
            ],
            "duration_type": "Relative Duration",
            "start_date": "2018-05-04T13:00:00.000Z",
            "end_date": null,
            "relative_duration": 1 weeks,
            "auto_enroll": true,
            "allow_multiple_enrollments": true
        },
        {
            "campaign_id": 3261,
            "name": "Annual Training",
            "groups": [
                {
                    "group_id": 0,
                    "name": "All Users"
                }
            ],
            "status": "Completed",
            "modules": [
                {
                    "store_purchase_id": 9,
                    "content_type": "Store Purchase",
                    "name": "2018 Security Awareness Training",
                    "description": "A comprehensive overview of best practices when it comes to cybersecurity, this course will...",
                    "type": "Training Module",
                    "duration": 40,
                    "retired": false,
                    "retirement_date": null,
                    "publish_date": "2018-02-03T02:20:00.000Z",
                    "publisher": "KnowBe4",
                    "purchase_date": "2018-06-18T00:00:00.000Z",
                    "policy_url": "https://www.yourcompany.com/employees/acceptableusepolicy.html"
                },
                {
                    "store_purchase_id": 106,
                    "content_type": "Store Purchase",
                    "name": "HIPAA (Healthcare)",
                    "description": "This module covers HIPAA basics and best practices for protecting PHI.",
                    "type": "Training Module",
                    "duration": 15,
                    "retired": false,
                    "retirement_date": null,
                    "publish_date": "2017-01-06T02:20:00.000Z",
                    "publisher": "Security Awareness Company",
                    "purchase_date": "2017-01-09T05:00:00.000Z",
                    "policy_url": "https://www.yourcompany.com/employees/HIPAA-policy.html"
                }
            ],
            "content": [
                {
                    "store_purchase_id": 9,
                    "content_type": "Store Purchase",
                    "name": "2018 Security Awareness Training",
                    "description": "A comprehensive overview of best practices when it comes to cybersecurity, this course will...",
                    "type": "Training Module",
                    "duration": 40,
                    "retired": false,
                    "retirement_date": null,
                    "publish_date": "2018-02-03T02:20:00.000Z",
                    "publisher": "KnowBe4",
                    "purchase_date": "2018-06-18T00:00:00.000Z",
                    "policy_url": "https://www.yourcompany.com/employees/acceptableusepolicy.html"
                },
                {
                    "store_purchase_id": 106,
                    "content_type": "Store Purchase",
                    "name": "HIPAA (Healthcare)",
                    "description": "This module covers HIPAA basics and best practices for protecting PHI.",
                    "type": "Training Module",
                    "duration": 15,
                    "retired": false,
                    "retirement_date": null,
                    "publish_date": "2017-01-06T02:20:00.000Z",
                    "publisher": "Security Awareness Company",
                    "purchase_date": "2017-01-09T05:00:00.000Z",
                    "policy_url": "https://www.yourcompany.com/employees/HIPAA-policy.html"
                },
                {
                    "policy_id": 150,
                    "content_type": "Uploaded Policy",
                    "name": "Security Awareness Policy",
                    "minimum_time": 3,
                    "default_language": "en-us",
                    "published": true
                },
            ],
            "duration_type": "Specific End Date",
            "start_date": "2018-06-26T13:00:00.000Z",
            "end_date": "2018-07-27T03:59:00.000Z",
            "relative_duration": null,
            "auto_enroll": true,
            "allow_multiple_enrollments": false
        },
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/training/campaigns

    Training Campaigns (All) Attributes

    Attribute Type Description
    campaign_id integer Campaign ID.
    name varchar Campaign name.
    groups varchar An array that displays the groups targeted by the campaign, including group name and id.
    status varchar Campaign status. (Created, Enrolling, In Progress, Completed, Cancelled)
    modules varchar An array that displays the Store Purchases included in the campaign, as well as data about each Store Purchase.
    content varchar An array that displays both the Store Purchases and uploaded policies included in the campaign, as well as data about each item.
    duration_type varchar Duration type. (Specific End Date, Relative End Date, No End Date)
    start_date datetime Start date/time.
    end_date datetime End date/time. (Null = No specific end date)
    relative_duration varchar If relative duration was selected, this field will indicate how long each enrolled user has to complete their training assignments. (Null = no relative duration)
    auto-enroll boolean Indicates if the "Automatically enroll users that are added to the above groups in the future" function was selected for this campaign. (True = Yes)
    allow_multiple_enrollments boolean Indicates if the "Enable courses to be done multiple times" function was selected for this campaign. (True = Yes)

    Get a Specific Training Campaign

    This endpoint retrieves a specific Training Campaign from your KnowBe4 account.

    curl "https://us.api.knowbe4.com/v1/training/campaigns/2345"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

        {
            "campaign_id": 2345,
            "name": "Monthly Campaign - All",
            "groups": [
                {
                    "group_id": 0,
                    "name": "All Users"
                }
            ],
            "status": "In Progress",
            "modules": [
                {
                    "store_purchase_id": 19,
                    "content_type": "Store Purchase",
                    "name": "Phishing Bingo",
                    "description": "Play Phishing Bingo to learn about all the different social engineering methods to watch out for....",
                    "type": "Game",
                    "duration": 5,
                    "retired": false,
                    "retirement_date": null,
                    "publish_date": "2018-02-03T02:20:00.000Z",
                    "publisher": "Popcorn",
                    "purchase_date": "2018-06-18T00:00:00.000Z",
                    "policy_url": null
                },
            ],
            "content": [
                {
                    "store_purchase_id": 19,
                    "content_type": "Store Purchase",
                    "name": "Phishing Bingo",
                    "description": "Play Phishing Bingo to learn about all the different social engineering methods to watch out for....",
                    "type": "Game",
                    "duration": 5,
                    "retired": false,
                    "retirement_date": null,
                    "publish_date": "2018-02-03T02:20:00.000Z",
                    "publisher": "Popcorn",
                    "purchase_date": "2018-06-18T00:00:00.000Z",
                    "policy_url": null
                },
                {
                    "policy_id": 15,
                    "content_type": "Uploaded Policy",
                    "name": "Security Awareness Policy",
                    "minimum_time": 3,
                    "default_language": "en-us",
                    "published": true
                },
            ],
            "duration_type": "Relative Duration",
            "start_date": "2018-06-04T13:00:00.000Z",
            "end_date": null,
            "relative_duration": 2 weeks,
            "auto_enroll": true,
            "allow_multiple_enrollments": false
        },
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/training/campaigns/[campaign_id]

    Training Campaigns (Specific) Attributes

    Attribute Type Description
    campaign_id integer Campaign ID.
    name varchar Campaign name.
    groups varchar An array that displays the groups targeted by the campaign, including group name and id.
    status varchar Campaign status. (Created, Enrolling, In Progress, Completed, Cancelled)
    modules varchar An array that displays the Store Purchases included in the campaign, as well as data about each Store Purchase.
    content varchar An array that displays both the Store Purchases and uploaded policies included in the campaign, as well as data about each item.
    duration_type varchar Duration type. (Specific End Date, Relative End Date, No End Date)
    start_date datetime Start date/time.
    end_date datetime End date/time. (Null = No specific end date)
    relative_duration varchar If relative duration was selected, this field will indicate how long each enrolled user has to complete their training assignments. (Null = no relative duration)
    auto-enroll boolean Indicates if the "Automatically enroll users that are added to the above groups in the future" function was selected for this campaign. (True = Yes)
    allow_multiple_enrollments boolean Indicates if the "Enable courses to be done multiple times" function was selected for this campaign. (True = Yes)

    Get all Training Enrollments

    This endpoint retrieves a list of all Training Enrollments in your KnowBe4 account.

    curl "https://us.api.knowbe4.com/v1/training/enrollments"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

        {
            "enrollment_id": 1525526,
            "content_type": "Store Purchase",
            "module_name": "Phishing Gameshow Trivia",
            "user": {
                "id": 796713,
                "first_name": "John",
                "last_name": "Blake",
                "email": "jblake@kb4-demo.com"
            },
            "campaign_name": "Monthly Training",
            "enrollment_date": "2018-06-18T19:00:14.000Z",
            "start_date": "2018-06-18T19:49:00.000Z",
            "completion_date": null,
            "status": "In Progress",
            "time_spent": 497,
            "policy_acknowledged": false
        },
        {
            "enrollment_id": 1525524,
            "content_type": "Uploaded Policy",
            "module_name": "Data Protection Policy",
            "user": {
                "id": 796706,
                "first_name": "Bob",
                "last_name": "Jones",
                "email": "bjones@kb4-demo.com"
            },
            "campaign_name": "Compliance Policy Agreement",
            "enrollment_date": "2018-06-18T19:00:14.000Z",
            "start_date": null,
            "completion_date": null,
            "status": "Not Started",
            "time_spent": 0,
            "policy_acknowledged": false
        },
        {
            "enrollment_id": 2525523,
            "content_type": "Uploaded Policy",
            "module_name": "Acceptable Use Policy",
            "user": {
                "id": 796702,
                "first_name": "Sarah",
                "last_name": "Fisher",
                "email": "sfisher@kb4-demo.com"
            },
            "campaign_name": "New Employee Policies",
            "enrollment_date": "2018-06-18T19:00:14.000Z",
            "start_date": "2018-06-18T19:49:00.000Z",
            "completion_date": "2018-06-18T21:49:00.000Z",
            "status": "Passed",
            "time_spent": 2340,
            "policy_acknowledged": false
        },
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/training/enrollments

    Parameters

    You can add optional parameters to change the output of your request. You can use multiple parameters within a single request.

    Parameter Description
    store_purchase_id=[store_purchase_id] Returns a list of all training enrollments filtered by module, as indicated by the [store_purchase_id].
    campaign_id=[campaign_id] Returns a list of all training enrollments filtered by a campaign, as indicated by the [campaign_id].
    user_id=[user_id] Returns a list of all training enrollments filtered by a user, as indicated by the [user_id].

    Training Enrollments (All) Attributes

    Attribute Type Description
    enrollment_id integer Enrollment ID.
    module_name varchar Name of Module or title of Uploaded Policy.
    content_type varchar Indicates if the enrollment includes a Store Purchase or Uploaded Policy.
    user object ID, email, first and last name of enrolled user.
    campaign_name varchar Campaign name.
    enrollment_date datetime Enrollment date.
    start_date datetime Assignment start date.
    completion_date datetime Assignment completion date.
    status varchar Completion status. (Not Started, In Progress, Completed, Passed, Past Due)
    time_spent integer Indicates the time spent on the assignment, in seconds.
    policy_acknowledged boolean Indicates if the course-attached URL policy was acknowledged (if applicable).

    Get a Specific Training Enrollment

    This endpoint retrieves a specific Training Enrollment from your KnowBe4 account.

    curl "https://us.api.knowbe4.com/v1/training/enrollments/2525503"
      -H "Authorization: Bearer <your_token>"
    

    The above command returns JSON-structured data, like this:

        {
            "enrollment_id": 2525503,
            "content_type": "Store Purchase",
            "module_name": "PCI-DSS (Retail Compliance)",
            "user": {
                "id": 796704,
                "first_name": "Yanni",
                "last_name": "Laurel",
                "email": "ylaurel@kb4-demo.com"
            },
            "campaign_name": "Annual Training",
            "enrollment_date": "2018-06-18T19:00:14.000Z",
            "start_date": "2018-06-25T19:00:14.000Z",
            "completion_date": null,
            "status": "In Progress",
            "time_spent": 542,
            "policy_acknowledged": false
        },
    

    HTTP Request

    GET https://us.api.knowbe4.com/v1/training/enrollments/[enrollment_id]

    Training Enrollments (Specific) Attributes

    Attribute Type Description
    enrollment_id integer Enrollment ID.
    module_name varchar Name of Module or title of Uploaded Policy.
    content_type varchar Indicates if the enrollment includes a Store Purchase or Uploaded Policy.
    user object ID, email, first and last name of enrolled user.
    campaign_name varchar Campaign name.
    enrollment_date datetime Enrollment date.
    start_date datetime Assignment start date.
    completion_date datetime Assignment completion date.
    status varchar Completion status. (Not Started, In Progress, Completed, Passed, Past Due)
    time_spent integer Indicates the time spent on the assignment, in seconds.
    policy_acknowledged boolean Indicates if the course-attached URL policy was acknowledged (if applicable).

    Rate Limiting

    Usage of KnowBe4’s APIs is limited to 1000 requests per day plus the number of licensed users in your account, as well as a maximum of 300 requests every five minutes.

    By using KnowBe4's APIs, you agree to our API Terms of Use.

    Terms of Use

    API Terms of Use

    This agreement (“Terms”) between you and KnowBe4, Inc. applies to your use of KnowBe4’s Application Programming Interface (“API”), alone or in combination with any services provided by KnowBe4 as defined in KnowBe4’s Terms of Service and Privacy Policy (collectively “KnowBe4 Terms”). By using the APIs, you’re agreeing to these API Terms and the KnowBe4 Terms.

    Section 1: Account and Registration

    a. Accepting the Terms You may not use the APIs and may not accept the API Terms if (a) you are not of legal age to form a binding contract with KnowBe4, or (b) you are a person barred from using or receiving the APIs under the applicable laws of the United States or other countries including the country in which you are resident or from which you use the APIs.

    b. Entity Level Acceptance If you are using the APIs on behalf of an entity, you represent and warrant that you have authority to bind that entity to the Terms and by accepting the Terms, you are doing so on behalf of that entity (and all references to "you" in the Terms refer to that entity).

    c. Registration In order to access the APIs you will be required to provide certain information (such as an account-specific secret key provided to you through the KnowBe4 console) to authenticate the APIs, or as part of your continued use of the APIs.

    Section 2: Using Our APIs

    a. Compliance with Law, Third Party Rights, and Other KnowBe4 Terms of Service You will comply with all applicable law, regulation, and third party rights (including without limitation laws regarding the import or export of data or software, privacy, and local laws). You will not use the APIs to encourage or promote illegal activity or violation of third party rights. You will not violate any other terms of service with KnowBe4 (or its affiliates).

    b. Permitted Access You will only access (or attempt to access) the APIs by the means described in the documentation. When KnowBe4 assigns you account-specific secret keys, you must use them with the applicable APIs. You will not misrepresent or mask your identity when using the APIs.

    c. API Limitations KnowBe4 sets and enforces limits on your use of the APIs (e.g. limiting the number of API requests that you may make), in our sole discretion. API usage is designed for internal usage and as such the usage is limited to 1,000 requests per day plus the number of licensed users on your account. The APIs may only be accessed four times per second. You agree to, and will not attempt to circumvent, such limitations.

    d. Feedback If you provide feedback or suggestions about our APIs, then we (and those we allow) may use such information without obligation to you.

    Section 3: Use

    a. Monitoring The APIs are designed to help you access and export data derived from your KnowBe4 platform. YOU AGREE THAT KNOWBE4 MAY MONITOR USE OF THE APIS TO ENSURE QUALITY, IMPROVE KNOWBE4 PRODUCTS AND SERVICES, AND VERIFY YOUR COMPLIANCE WITH THE TERMS. You will not interfere with this monitoring. KnowBe4 may use any technical means to overcome such interference. KnowBe4 may suspend access to the APIs by you without notice if we reasonably believe that you are in violation of the Terms.

    b. Security You will use commercially reasonable efforts to protect user information from unauthorized access or use and will promptly report to your users any unauthorized access or use of such information to the extent required by applicable law.

    c. Ownership KnowBe4 does not acquire ownership in your websites or applications, and by using our APIs, you do not acquire ownership of any rights in our APIs or the content that is accessed through our APIs.

    d. User Privacy You will comply with all applicable privacy laws and regulations. You will provide and adhere to a privacy policy for your API use that clearly and accurately describes to users of your website or application what user information you collect and how you use and share such information (including for advertising) with KnowBe4 and third parties.

    Section 4: Prohibitions and Confidentiality

    a. API Prohibitions When using the APIs, you may not (or allow those acting on your behalf to): 1. Sublicense an API for use by a third party. Consequently, you will not create a website, platform, or application that functions substantially the same as the APIs or the KnowBe4 platform and offer it for use by third parties. 2. Perform an action with the intent of introducing to KnowBe4 products and services any viruses, worms, defects, Trojan horses, malware, or any items of a destructive nature. 3. Defame, abuse, harass, stalk, or threaten others. 4. Interfere with or disrupt the APIs or the servers or networks providing the APIs. 5. Promote or facilitate unlawful online gambling or disruptive commercial messages or advertisements. 6. Reverse engineer or attempt to extract the source code from any API or any related software, except to the extent that this restriction is expressly prohibited by applicable law. 7. Use the APIs for any activities where the use or failure of the APIs could lead to death, personal injury, or environmental damage (such as the operation of nuclear facilities, air traffic control, or life support systems). 8. Use the APIs to process or store any data that is subject to the International Traffic in Arms Regulations maintained by the U.S. Department of State. 9. Remove, obscure, or alter any KnowBe4 terms of service or any links to or notices of those terms. Unless otherwise specified in writing by KnowBe4, KnowBe4 does not intend use of the APIs to create obligations under the Health Insurance Portability and Accountability Act, as amended ("HIPAA"), and makes no representations that the APIs satisfy HIPAA requirements. If you are (or become) a "covered entity" or "business associate" as defined in HIPAA, you will not use the APIs for any purpose or in any manner involving transmitting protected health information to KnowBe4 unless you have received prior written consent to such use from KnowBe4.

    b. Confidential Matters 1. Credentials (such as passwords, account-specific secret keys, and client IDs) are intended to be used by you to authenticate the APIs. You will keep your credentials confidential and make reasonable efforts to prevent and discourage others from using your credentials. Credentials may not be embedded in open source projects. 2. Our communications to you and our APIs may contain KnowBe4 confidential information. KnowBe4 confidential information includes any materials, communications, and information that are marked confidential or that would normally be considered confidential under the circumstances. If you receive any such information, then you will not disclose it to any third party without KnowBe4's prior written consent. KnowBe4 confidential information does not include information that you independently developed, that was rightfully given to you by a third party without confidentiality obligation, or that becomes public through no fault of your own. You may disclose KnowBe4 confidential information when compelled to do so by law if you provide us reasonable prior notice, unless a court orders that we not receive notice.

    Section 5: Brand Features; Attribution

    a. Brand Features "Brand Features" is defined as the trade names, trademarks, service marks, logos, domain names, and other distinctive brand features of each party. Except where expressly stated, the Terms do not grant either party any right, title, or interest in or to the other party's Brand Features. All use by you of KnowBe4's Brand Features (including any goodwill associated therewith) will inure to the benefit of KnowBe4.

    b. Attribution You agree to display any attribution(s) required by KnowBe4 as described in the documentation for the APIs. KnowBe4 hereby grants to you a nontransferable, nonsublicenseable, nonexclusive license while the Terms are in effect to display KnowBe4's Brand Features for the purpose of promoting or advertising that you use the APIs. You must only use the KnowBe4 Brand Features in accordance with the Terms and for the purpose of fulfilling your obligations under this Section. You understand and agree that KnowBe4 has the sole discretion to determine whether your attribution(s) and use of KnowBe4's Brand Features are in accordance with this section.

    c. Publicity You will not make any statement regarding your use of the APIs which suggests partnership with, sponsorship by, or endorsement by KnowBe4 without KnowBe4's prior written approval.

    Section 6: Privacy

    a. By using our APIs, KnowBe4 may use submitted information in accordance with our Privacy Policy.

    Section 7: Termination

    a. Termination You may stop using our APIs at any time with or without notice. Further, if you want to terminate the Terms, you must provide KnowBe4 with prior written notice and upon termination, cease your use of the applicable APIs. KnowBe4 reserves the right to terminate the Terms with you or discontinue the APIs or any portion or feature or your access thereto for any reason and at any time without liability or other obligation to you.

    b. Your Obligations Post-Termination Upon any termination of the Terms or discontinuation of your access to an APIs, you will immediately stop using the APIs and cease all use of the KnowBe4 Brand Features.

    c. Surviving Provisions When the Terms come to an end, those terms that by their nature are intended to continue indefinitely will continue to apply, including but not limited to: Sections 4b, 7, 8, and 9.

    Section 8: Liability for our APIs

    a. WARRANTIES EXCEPT AS EXPRESSLY SET OUT IN THE TERMS, KNOWBE4 NOR ITS VENDORS OR LICENSORS MAKE ANY SPECIFIC PROMISES ABOUT THE APIS. FOR EXAMPLE, WE DON'T MAKE ANY COMMITMENTS ABOUT THE CONTENT ACCESSED THROUGH THE APIS, THE SPECIFIC FUNCTIONS OF THE APIS, OR THEIR RELIABILITY, AVAILABILITY, OR ABILITY TO MEET YOUR NEEDS. WE PROVIDE THE APIS "AS IS". SOME JURISDICTIONS PROVIDE FOR CERTAIN WARRANTIES, LIKE THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. EXCEPT AS EXPRESSLY PROVIDED FOR IN THE TERMS, TO THE EXTENT PERMITTED BY LAW, WE EXCLUDE ALL WARRANTIES, GUARANTEES, CONDITIONS, REPRESENTATIONS, AND UNDERTAKINGS.

    b. LIMITATION OF LIABILITY WHEN PERMITTED BY LAW, KNOWBE4, AND KNOWBE4'S VENDORS AND LICENSORS, WILL NOT BE RESPONSIBLE FOR LOST PROFITS, REVENUES, OR DATA; FINANCIAL LOSSES; OR INDIRECT, SPECIAL, CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES. TO THE EXTENT PERMITTED BY LAW, THE TOTAL LIABILITY OF KNOWBE4, AND ITS SUPPLIERS AND DISTRIBUTORS, FOR ANY CLAIM UNDER THE TERMS, INCLUDING FOR ANY IMPLIED WARRANTIES, IS LIMITED TO THE AMOUNT YOU PAID US TO USE THE APPLICABLE APIS (OR, IF WE CHOOSE, TO SUPPLYING YOU THE APIS AGAIN) DURING THE SIX MONTHS PRIOR TO THE EVENT GIVING RISE TO THE LIABILITY. IN ALL CASES, KNOWBE4, AND ITS VENDORS AND LICENSORS, WILL NOT BE LIABLE FOR ANY EXPENSE, LOSS, OR DAMAGE THAT IS NOT REASONABLY FORESEEABLE.

    c. Indemnification Unless prohibited by applicable law, you will defend and indemnify KnowBe4, and its affiliates, directors, officers, employees, and users, against all liabilities, damages, losses, costs, fees (including legal fees), and expenses relating to any allegation or third-party legal proceeding to the extent arising from: 1. your misuse or your end user's misuse of the APIs; 2. your violation or your end user's violation of the Terms; or 3. any content or data routed into or used with the APIs by you, those acting on your behalf, or your end users.

    Section 9: General Provisions

    a. Modification We may modify the Terms or any portion to, for example, reflect changes to the law or changes to our APIs. You should look at the Terms regularly. Our documentation will be updated in the event of material changes, depreciations, or removal of functionality from the APIs so that you may continue using the APIs with minimal interruption. Changes will not apply retroactively and will become effective no sooner than 30 days after they are posted. But changes addressing new functions for an APIs or changes made for legal reasons will be effective immediately. If you do not agree to the modified Terms for an API, you should discontinue your use of that API. Your continued use of the API constitutes your acceptance of the modified Terms.

    b. General Legal Terms We each agree to contract in the English language. If we provide a translation of the Terms, we do so for your convenience only and the English Terms will solely govern our relationship. The Terms do not create any third party beneficiary rights or any agency, partnership, or joint venture. Nothing in the Terms will limit either party's ability to seek injunctive relief. We are not liable for failure or delay in performance to the extent caused by circumstances beyond our reasonable control. If you do not comply with the Terms, and KnowBe4 does not take action right away, this does not mean that KnowBe4 is giving up any rights that it may have (such as taking action in the future). If it turns out that a particular term is not enforceable, this will not affect any other terms. The Terms are the entire agreement between you and KnowBe4 relating to its subject and supersede any prior or contemporaneous agreements on that subject. The laws of Florida, U.S.A., excluding Florida’s conflict of laws rules, will apply to any disputes arising out of or related to the Terms or the API. ALL CLAIMS ARISING OUT OF OR RELATING TO THE TERMS OR THE APIS WILL BE LITIGATED EXCLUSIVELY IN THE FEDERAL OR STATE COURTS OF HILLSBOROUGH COUNTY OR PINELLAS COUNTY, FLORIDA, USA, AND YOU AND KNOWBE4 CONSENT TO PERSONAL JURISDICTION IN THOSE COURTS.

    Errors

    KnowBe4 uses conventional HTTP response codes to indicate the success or failure of an API request. In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, a campaign wasn't found, etc.), and codes in the 5xx range indicate an error with KnowBe4's servers (these are rare).

    Error Code Meaning
    401 Unauthorized -- Your API key is incorrect.
    403 Forbidden -- The request is not allowed.
    404 Not Found -- The specified resource could not be found.
    406 Incorrect Response Format Requested -- The output must be in JSON format.
    429 Too many requests -- Too many requests were submitted at once. See Rate Limiting section above.
    500 Internal Server Error -- We had a problem with our server. Try again later.
    503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.