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

Update a company

As a Reseller you can update a customer company's details, license (type, target user limit, expiry), or other settings. Get the company's resourceId from the companies list, then call PUT /api/companies/{resourceId} with the fields you want to change. Use a credential with Client Role = Reseller.


POST /api/companies/search

Get the company's resourceId by calling this endpoint; use it in the next step as {resourceId}.

Retrieves a paginated list of all companies you manage with license details. Each item includes resourceId — use it as the Company ID. Test it: Authorize with Client ID/Secret, then Send — request body is pre-filled.

Retrieves a list of all companies

post
Required scopes
This endpoint requires the following scopes:
  • : API
Authorizations
OAuth2clientCredentialsRequired

Client ID and Client Secret from Company → Company Settings → REST API. Enter credentials to auto-fetch token.

Token URL:
Body
pageNumberintegerRequiredExample: 1
pageSizeintegerRequiredExample: 10
orderBystringRequiredExample: CreateTime
ascendingbooleanRequiredExample: false
isTargetUserCountExceededLimitbooleanOptional

If true, only companies exceeding license limit are returned

Example: false
Responses
200

OK

application/json
statusstringOptional
messagestring · nullableOptional
validationMessagesstring[] · nullableOptional
post/api/companies/search
POST /api/companies/search HTTP/1.1
Host: api.keepnetlabs.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 126

{
  "pageNumber": 1,
  "pageSize": 10,
  "orderBy": "CreateTime",
  "ascending": false,
  "filter": {
    "Condition": "AND",
    "SearchInputTextValue": ""
  }
}
200

OK

{
  "data": {
    "limitExceededCompanyCount": 1,
    "pageNumber": 1,
    "pageSize": 1,
    "totalNumberOfPages": 1,
    "totalNumberOfRecords": 1,
    "results": [
      {
        "companyName": "text",
        "companyResourceId": "text",
        "resellerName": "text",
        "industryName": "text",
        "industryResourceId": "text",
        "licenseTypeName": "text",
        "licenseTypeResourceId": "text",
        "isNumberOfUsersLimited": true,
        "numberOfUsers": "text",
        "privacyDurationId": 1,
        "licenceExpired": true,
        "licenseEndDate": "2026-01-01T00:00:00.000Z",
        "createTime": "2026-01-01T00:00:00.000Z",
        "targetUserCount": 1,
        "children": [
          {
            "companyName": "text",
            "companyResourceId": "text",
            "resellerName": "text",
            "industryName": "text",
            "industryResourceId": "text",
            "licenseTypeName": "text",
            "licenseTypeResourceId": "text",
            "isNumberOfUsersLimited": true,
            "numberOfUsers": "text",
            "privacyDurationId": 1,
            "licenceExpired": true,
            "licenseEndDate": "2026-01-01T00:00:00.000Z",
            "createTime": "2026-01-01T00:00:00.000Z",
            "targetUserCount": 1,
            "children": "[Circular Reference]",
            "tags": [
              "text"
            ],
            "deletedTargetUserCount": 1,
            "inactiveTargetUserCount": 1,
            "monthlyActiveUserCount": 1
          }
        ],
        "tags": [
          "text"
        ],
        "deletedTargetUserCount": 1,
        "inactiveTargetUserCount": 1,
        "monthlyActiveUserCount": 1
      }
    ]
  },
  "status": "text",
  "message": "text",
  "validationMessages": [
    "text"
  ]
}

From the response, pick the company and note its resourceId. Example: "resourceId": "xC5kfGz7w2Nz" → use in PUT /api/companies/xC5kfGz7w2Nz.


PUT /api/companies/{resourceId}

Updates company details, license (type, target user limit, expiry), or other settings. Replace {resourceId} with the company ID. Request body depends on what you change — see Endpoints → Company → Updates a company for the full schema.

Updates an existing company. Test it: Endpoints → Company → Updates a company — use dummy/placeholder values (H8d).

Updates an existing company

put
Required scopes
This endpoint requires the following scopes:
  • : API
Authorizations
OAuth2clientCredentialsRequired

Client ID and Client Secret from Company → Company Settings → REST API. Enter credentials to auto-fetch token.

Token URL:
Path parameters
resourceIdstringRequired
Body
Filestring · binaryOptional
LogoUrlstringOptional
Namestring · max: 64Required
Descriptionstring · max: 300Optional
IndustryResourceIdstringRequired
CountryResourceIdstringRequired
Addressstring · max: 200Optional
WebsiteUrlstring · max: 2000Optional
LicenseTypeResourceIdstringRequired
LicenseModuleResourceIdArraystring[]Optional
LicensePeriodTypeResourceIdstringRequired
LicenseStartDatestring · date-timeOptional
LicenseEndDatestring · date-timeOptional
IsNumberOfUsersLimitedbooleanOptional
NumberOfUsersinteger · int32Required
NotificationTemplateTypeResourceIdstringOptional
TrainingContentTypeResourceIdstringOptional
SmtpConfigurationTypeResourceIdstringOptional
PreferredLanguageTypeResourceIdstringOptional
IsVersionVisiblebooleanOptional
IsReleaseNotesVisiblebooleanOptional
ReleaseNotesUrlstring · max: 2000Optional
CompanyGroupResourceIdArraystring[]Optional
StatusIdinteger · int32Optional
TimeZoneIdstringRequired
DateFormatstringRequired
TimeFormatstringRequired
CallBackNumberBookingCountinteger · int32Optional
Tagsstring[]Optional
Responses
200

OK

application/json
statusstringOptional
messagestring · nullableOptional
validationMessagesstring[] · nullableOptional
put/api/companies/{resourceId}
PUT /api/companies/{resourceId} HTTP/1.1
Host: api.keepnetlabs.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: multipart/form-data
Accept: */*
Content-Length: 809

{
  "File": "binary",
  "LogoUrl": "text",
  "Name": "text",
  "Description": "text",
  "IndustryResourceId": "text",
  "CountryResourceId": "text",
  "Address": "text",
  "WebsiteUrl": "text",
  "LicenseTypeResourceId": "text",
  "LicenseModuleResourceIdArray": [
    "text"
  ],
  "LicensePeriodTypeResourceId": "text",
  "LicenseStartDate": "2026-01-01T00:00:00.000Z",
  "LicenseEndDate": "2026-01-01T00:00:00.000Z",
  "IsNumberOfUsersLimited": true,
  "NumberOfUsers": 1,
  "NotificationTemplateTypeResourceId": "text",
  "TrainingContentTypeResourceId": "text",
  "SmtpConfigurationTypeResourceId": "text",
  "PreferredLanguageTypeResourceId": "text",
  "IsVersionVisible": true,
  "IsReleaseNotesVisible": true,
  "ReleaseNotesUrl": "text",
  "CompanyGroupResourceIdArray": [
    "text"
  ],
  "StatusId": 1,
  "TimeZoneId": "text",
  "DateFormat": "text",
  "TimeFormat": "text",
  "CallBackNumberBookingCount": 1,
  "Tags": [
    "text"
  ]
}
200

OK

{
  "data": {
    "resourceId": "text"
  },
  "status": "text",
  "message": "text",
  "validationMessages": [
    "text"
  ]
}

Common errors

  • 403 Forbidden — Credential is not Reseller, or company is not one you manage. Set Client Role = Reseller. Roles and permissions →

  • 401 Unauthorized — Missing or invalid token. Request a new token via POST /connect/token.

  • 404 Not Found / 400 Bad Request — Invalid company ID or invalid request body. Verify company ID from POST /api/companies/search and check Endpoints → Company for the request schema.

Related: Scope API requests to a customer →. Get a company →. To add or update the company in a group: List and manage company groups → (PUT participants).

Last updated