For the complete documentation index, see llms.txt. This page is also available as Markdown.

Account Management APIs

APIs for MSPs and Distributors to manage accounts

Note: These APIs only apply to distributors of MSP accounts. Most MSPs are able to Manage Companies via commander 'msp' related commands.

Capabilities of the APIs

The primary use cases enabled via the API are:

  • Create Trial Accounts

  • Convert To Paid Accounts

  • List all MSPs

  • Get Current Usage

  • Get Monthly Usage

  • Cancel Paid Accounts

  • Activate Expired Accounts

  • List MSP Products

  • Delete Pending/Conflict Accounts

API definitions

Convert to Paid

post
/convert-to-paid

convert-to-paid

Authorizations
AuthorizationstringRequired

JWT with HS512 alg

Header parameters
AuthorizationstringOptional

Bearer

vendorstringOptional

vendor_name(Provided by Keeper)

Body
or
Responses
200

OK

application/json
successbooleanOptional
messagestringOptional
post/convert-to-paid
POST /bi_api/v1/services/mspvendor/convert-to-paid HTTP/1.1
Host: keepersecurity.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 29

{
  "vendorInternalId": "string"
}
{
  "success": true,
  "message": "Converted Trial to Paid"
}

Get Current Usage

post
/current-usage

Fetch Current Usage

Authorizations
AuthorizationstringRequired

JWT with HS512 alg

Header parameters
AuthorizationstringOptional

Bearer

vendorstringOptional

vendor_name(Provided by Keeper)

Body
or
Responses
200

OK

application/json

current usage details

post/current-usage
POST /bi_api/v1/services/mspvendor/current-usage HTTP/1.1
Host: keepersecurity.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 29

{
  "vendorInternalId": "string"
}
{
  "success": true,
  "usage": {
    "mspItem": {
      "companyName": "msp",
      "companyId": "msp_partnerId",
      "invitedUsers": 0,
      "products": [
        {
          "productName": "basePlan",
          "productId": 720,
          "quantity": 1
        },
        {
          "productName": "addon",
          "productId": 916,
          "quantity": 1
        }
      ]
    },
    "mcItems": [
      {
        "companyName": "mc1",
        "companyId": "mc1_partnerId",
        "invitedUsers": 0,
        "maximumAllowedUsers": 11110,
        "plan": "Keeper Business Bundle",
        "products": [
          {
            "productName": "bundle",
            "productId": 10011,
            "quantity": 2
          },
          {
            "productName": "addon",
            "productId": 916,
            "quantity": 1.1
          }
        ]
      },
      {
        "companyName": "mc2",
        "companyId": "mc2_partnerId",
        "invitedUsers": 0,
        "maximumAllowedUsers": 1000,
        "plan": "Keeper Business Plus Bundle",
        "products": [
          {
            "productName": "bundle2",
            "productId": 10011,
            "quantity": 1.1
          },
          {
            "productName": "addon",
            "productId": 916,
            "quantity": 1.1
          }
        ]
      }
    ]
  }
}

Fetch Monthly Usage

post
/monthly-usage

Fetch Monthly Usage

Authorizations
AuthorizationstringRequired

JWT with HS512 alg

Header parameters
AuthorizationstringOptional

Bearer

vendorstringOptional

vendor_name(Provided by Keeper)

Body
or
Responses
200

OK

application/json

usage details

subTotalnumberOptional
taxnumberOptional
totalCostnumberOptional
currencystringOptional
post/monthly-usage
POST /bi_api/v1/services/mspvendor/monthly-usage HTTP/1.1
Host: keepersecurity.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 56

{
  "vendorInternalId": "string",
  "month": "08",
  "year": "2021"
}
{
  "success": true,
  "usage": {
    "mspItem": {
      "companyName": "msp",
      "companyId": "msp_partner_id",
      "products": [
        {
          "productName": "basePlan",
          "productId": 720,
          "quantity": 1.1,
          "unitPrice": 2.54,
          "unit": "string",
          "avgMonthlyCost": 3.11
        },
        {
          "productName": "addon",
          "productId": 916,
          "quantity": 1.1,
          "unitPrice": 2.54,
          "unit": "string",
          "avgMonthlyCost": 3.11
        }
      ],
      "total": 2.54
    },
    "mcItems": [
      {
        "companyName": "mc1",
        "companyId": "mc1_partner_id",
        "products": [
          {
            "productName": "bundle",
            "productId": 720,
            "quantity": 1.1,
            "unitPrice": 2.54,
            "unit": "string",
            "avgMonthlyCost": 3.11
          },
          {
            "productName": "addon",
            "productId": 916,
            "quantity": 1.1,
            "unitPrice": 2.54,
            "unit": "string",
            "avgMonthlyCost": 3.11
          }
        ],
        "total": 2.54
      },
      {
        "companyName": "mc2",
        "companyId": "mc2_partner_id",
        "products": [
          {
            "productName": "bundle2",
            "productId": 720,
            "quantity": 1.1,
            "unitPrice": 2.54,
            "unit": "string",
            "avgMonthlyCost": 3.11
          },
          {
            "productName": "addon",
            "productId": 916,
            "quantity": 1.1,
            "unitPrice": 2.54,
            "unit": "string",
            "avgMonthlyCost": 3.11
          }
        ],
        "total": 2.54
      }
    ],
    "subTotal": 10.1,
    "tax": 0,
    "totalCost": 10.1,
    "currency": "USD"
  }
}

Cancel Paid Account

post
/cancel-paid-account

Cancel Paid Account

Authorizations
AuthorizationstringRequired

JWT with HS512 alg

Header parameters
AuthorizationstringOptional

Bearer

vendorstringOptional

vendor_name(Provided by Keeper)

Body
or
Responses
200

OK

application/json
successbooleanOptional
messagestringOptional
post/cancel-paid-account
POST /bi_api/v1/services/mspvendor/cancel-paid-account HTTP/1.1
Host: keepersecurity.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 20

{
  "partnerId": "text"
}
{
  "success": true,
  "message": "Cancelled paid account"
}

Create Trial Account

post
/create-trial-account

Create Trial Account

Header parameters
AuthorizationstringOptional

Bearer JWT

vendorstringOptional

vendor_name(Provided by Keeper)

Body

Create Trial Account Request

namestring · max: 255Required
countrystring · max: 2Required

iso standard country code

Example: US
zipCodestring · max: 12Required
emailstring · emailRequired
vendorInternalIdstring · min: 1 · max: 52Required
statestringOptional
citystringOptional
streetstringOptional
phonestring · max: 15Optional

Country Code followed by phone number

Example: +1 9191919191
showPricingInMSPConsolebooleanOptionalDefault: false
Responses
200

Success Response

application/json

partner Details

partnerIdstring · uuid · max: 36Read-onlyOptional

Unique identifier for the given user.

first namestring · min: 1 · max: 119Optional
last namestring · min: 1 · max: 100Optional
countrystring · max: 2Required

iso standard country code

Example: US
emailstring · emailRequired
zipCodestringRequiredExample: zip-code for US , postalCode for non-US countries
streetstringOptional
citystringOptional
vendorInternalIdstringRequired

Unique identifier for each account.

statestringOptional
phonestringOptional
trailbooleanOptional
showPricingInMSPConsolebooleanOptional
post/create-trial-account
POST /bi_api/v1/services/mspvendor/create-trial-account HTTP/1.1
Host: keepersecurity.com
Content-Type: application/json
Accept: */*
Content-Length: 199

{
  "name": "text",
  "country": "US",
  "zipCode": "text",
  "email": "name@gmail.com",
  "vendorInternalId": "text",
  "state": "text",
  "city": "text",
  "street": "text",
  "phone": "+1 9191919191",
  "showPricingInMSPConsole": false
}
{
  "success": true,
  "partnerDetails": {
    "partnerId": "12345678-1234-5678-1234-567812345678",
    "first name": "John",
    "last name": "Doe",
    "country": "US",
    "locale": "en_US",
    "state": "Colorado",
    "city": "Broomfield",
    "street": "4753 Pine Garden Lane",
    "zipCode": "80021",
    "phone": "+1 9191919191",
    "email": "johndoe@partner.test",
    "vendorInternalId": "msp-vendor-internal-id12345678-1234-5678-1234-567812345678",
    "trial": true,
    "showPricingInMSPConsole": false
  }
}

Fetch All MSPs linked to vendor

get
/accounts

Get All linked MSPs

Authorizations
AuthorizationstringRequired

JWT with HS512 alg

Header parameters
AuthorizationstringOptional

Bearer

vendorstringOptional

vendor_name(Provided by Keeper)

Responses
200

OK

application/json

get All accounts response

successbooleanOptional
get/accounts
GET /bi_api/v1/services/mspvendor/accounts HTTP/1.1
Host: keepersecurity.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "success": true,
  "accounts": [
    {
      "companyName": "msp11",
      "vendorInternalId": "msp11_internalId",
      "email": "email11",
      "status": "TRIAL"
    },
    {
      "companyName": "msp12",
      "vendorInternalId": "msp13_internalId",
      "email": "email12",
      "status": "ACTIVE"
    },
    {
      "companyName": "msp13",
      "vendorInternalId": "msp13_internalId",
      "email": "email13",
      "status": "EXPIRED"
    },
    {
      "vendorInternalId": "msp14_internalId",
      "email": "email14",
      "status": "PENDING"
    },
    {
      "vendorInternalId": "msp15_internalId",
      "email": "email15",
      "status": "REGION_CONFLICT",
      "accountRegion": "US"
    },
    {
      "vendorInternalId": "msp16_internalId",
      "email": "email16",
      "status": "PRODUCT_CONFLICT",
      "productType": "ENTERPRISE_TRIAL"
    }
  ]
}

Activate Expired Account

post
/activate-expired

Activate Expired Account

Authorizations
AuthorizationstringRequired

JWT with HS512 alg

Header parameters
AuthorizationstringOptional

Bearer

vendorstringOptional

vendor_name(Provided by Keeper)

Body
or
Responses
200

OK

application/json
successbooleanOptional
messagestringOptional
post/activate-expired
POST /bi_api/v1/services/mspvendor/activate-expired HTTP/1.1
Host: keepersecurity.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 27

{
  "vendorInternalId": "text"
}
{
  "success": true,
  "message": "Activated Expired Account"
}

Fetch available Keeper MSP Products

get
/msp-products

Get available Keeper MSP products

Authorizations
AuthorizationstringRequired

JWT with HS512 alg

Header parameters
AuthorizationstringOptional

Bearer

vendorstringOptional

vendor_name(Provided by Keeper)

Responses
200

OK

application/json

get MSP Products response

successbooleanOptional
get/msp-products
GET /bi_api/v1/services/mspvendor/msp-products HTTP/1.1
Host: keepersecurity.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "success": true,
  "products": [
    {
      "productId": 720,
      "productName": "Keeper MSP"
    }
  ]
}

Delete Pending/Conflict Account

post
/remove-account

Delete Pending/Conflict Account

Authorizations
AuthorizationstringRequired

JWT with HS512 alg

Header parameters
AuthorizationstringOptional

Bearer

vendorstringOptional

vendor_name(Provided by Keeper)

Body
or
Responses
200

OK

application/json
successbooleanOptional
messagestringOptional
post/remove-account
POST /bi_api/v1/services/mspvendor/remove-account HTTP/1.1
Host: keepersecurity.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 20

{
  "partnerId": "text"
}
{
  "success": true,
  "message": "Deleted Pending/Conflict Account"
}

Creating a JSON Web Token from your pre-shared secret

After access has been requested, Keeper will share a record with you that will include the necessary information to use the APIs. In order to use any of the above API methods, a JWT needs to be created. In the example below, the 'iat' and 'exp' are 5 minutes apart. The code below will generate the token needed in the web request:

Sample JWT script example

The script below will correctly generate JWT and has the data needed for the 'create-trial-account' POST.

Other methods to generate the JWT

You can use a look like JWT.io to generate your JSON Web Token from the pre-shared secret.

  • For encryption, use HS512 Algorithm

  • Use the below json as payload, note this token has a 5 minute expiration

  • use secret.key as secret key to encode the token

Additional API Details

MSP Account Statuses

Certain API endpoints will return the status of an MSP. The below explains what each status is:

Status
Definition

PENDING

When an account is created created via the /create-trial-account endpoint, an email is sent inviting the user to activate the account and begin their trial.

TRIAL

A newly activated MSP automatically starts with a 14 day trial. At the end of the trial, if the /convert-to-paid endpoint is not called, the MSP will be deactivated and they can no longer log in. Data will be deleted after 1 year. An expired trial can be re-activated within the data retention period.

ACTIVE

An active, paid MSP account with an expiration date some time in the future.

REGION_CONFLICT

When an account is created via the /create-trial-account endpoint in US region instead of activating account from email link, user activated trial account from website in other region. Field “accountRegion” in the response shows the registered account region.

PRODUCT_CONFLICT

When an account is created created via the /create-trial-account endpoint in US region instead of activating account from email link, user activated enterprise trial/consumer trial account from website. Field “productType” in the response shows the Keeper product type.

EXPIRED

If the /cancel-paid-account endpoint is called, the MSP provided will be immediately expired and billing will stop for this MSP.

Product ID to SKU Mapping

Each Keeper line item has a human-readable name that maps to IDs. These are provided in the usage API endpoints.

productID
Line Item

720

Keeper MSP

10001

Keeper Business

10002

Keeper Business Plus

10010

Keeper Enterprise

10011

Keeper Enterprise Plus

967

Keeper Connection Manager Add-On

968

Keeper Secrets Manager Add-On

910

KeeperChat Add-On

920

Keeper ARAM Add-On

930

Keeper BreachWatch Add-On

940

Keeper Compliance Reporting Add-On

1011

Keeper 1TB Storage Add-On

1012

Keeper 10TB Storage Add-On

730

Dedicated Service & Support

973

Remote Browser Isolation

978

Privileged Access Management

API definition YAML file

If you wish to explore the APIs in another tool like Postman or the Swagger Editor, download the associated YAML definition of the APIs below.

Sample output of current usage

Sample Output of Monthly Usage

The account creation API will automatically send an email to the created/invited account. Example below.

If you need support or have additional questions on the use of these APIs, contact support or your sales representative.

Last updated