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

View customer's enrollment list and report

As a Reseller you can list a customer's enrollments (training or survey), get details and summary reports, and pull the Users report for an enrollment so you have per-user data for custom reporting. Use a credential with Client Role = Reseller. Send X-KEEPNET-Company-Id (and for enrollment search, x-ir-company-id with the same value) so results are scoped to that customer.


Get the customer's Company ID

Endpoint: POST /api/companies/search

Use the resourceId of the desired company as the Company ID in the enrollment and report requests below.

Retrieves a paginated list of all companies you manage with license details. Each item includes resourceId — use it as the Company ID for scoped requests. Test it: Authorize in the Endpoints panel, 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
200

OK

From the response, pick the company (e.g. by companyName) and note its companyResourceId. Use that value in the X-KEEPNET-Company-Id and x-ir-company-id headers in the next steps.


List enrollments for the customer

Endpoint: POST /api/enrollments/search

Returns a paginated list of enrollments for that customer. Send the Company ID in both X-KEEPNET-Company-Id and x-ir-company-id so the list is scoped to the chosen company. The response includes enrollmentId, name, type (e.g. "Survey" or training type), status, and other fields — use enrollmentId when calling the report endpoints below.

Returns a list of enrollments. As a Reseller, send X-KEEPNET-Company-Id: <companyResourceId> and x-ir-company-id: <companyResourceId> with the same customer Company ID.

Returns a list of enrollments

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: 20
orderBystringRequiredExample: CreateTime
ascendingbooleanRequiredExample: false
enrollmentTypestringOptional

Optional: use "Survey" to list only survey enrollments

Example: Survey
Responses
200

OK

application/json
statusstring · nullableOptional
messagestring · nullableOptional
validationMessagesstring[] · nullableOptional
post/api/enrollments/search
200

OK

Example headers:

Example body (first page; explicit orderBy / ascending, no null inside filter — use SearchInputTextValue: ""):

If your tenant returns 400 for this shape, add empty FilterGroups (two groups, FilterItems: []) as in past docs — still without null conditions or searchInputTextValue: null.

From the response, use enrollmentId (or resourceId) of the enrollment you want to report on.


List only Survey enrollments

To restrict the list to Survey enrollments (e.g. security culture surveys), add enrollmentType to the request body and use the same filter structure as above:

Each result includes "type": "Survey", name, enrollmentId, and delivery info. Use that enrollmentId for the summary and Users report endpoints below.


Get enrollment details

Endpoint: GET /api/enrollments/{resourceId}

Returns full details for one enrollment. Send X-KEEPNET-Company-Id with the customer's Company ID.

Get enrollment by Id. As a Reseller, send X-KEEPNET-Company-Id: <companyResourceId> for the customer that owns this enrollment.

Get enrollment by Id

get
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
Responses
200

OK

application/json
statusstring · nullableOptional
messagestring · nullableOptional
validationMessagesstring[] · nullableOptional
get/api/enrollments/{resourceId}
200

OK


Get enrollment summary report

Endpoint: GET /api/training-reports/{enrollmentId}/summary

Returns the enrollment summary (overview). Send X-KEEPNET-Company-Id. For Survey enrollments, you can pass the optional query parameter trainingType=0.

Returns enrollment summary report. As a Reseller, send X-KEEPNET-Company-Id: <companyResourceId>.

Returns enrollment summary report

get
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
enrollmentIdstringRequired
Query parameters
trainingTypestringOptional
Responses
200

OK

application/json
statusstring · nullableOptional
messagestring · nullableOptional
validationMessagesstring[] · nullableOptional
get/api/training-reports/{enrollmentId}/summary
200

OK


Pull Users report for an enrollment

Endpoint: POST /api/training-reports/{enrollmentId}/users/search

Returns the per-user training (or survey) report for that enrollment — one row per user with status, progress, and related fields. Use this to collect all users' data for a given enrollment (e.g. for custom reporting). Send X-KEEPNET-Company-Id and paginate with pageNumber / pageSize until you have all rows.

Returns target user training report for an enrollment. As a Reseller, send X-KEEPNET-Company-Id: <companyResourceId>. Request body: filter (required), pageNumber, pageSize, orderBy, ascending; for Survey enrollments include trainingType (e.g. 0) in the body. See Endpoints → TrainingReport for the full schema.

Returns target user training report for an enrollment

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:
Path parameters
enrollmentIdstringRequired
Body
pageNumberintegerRequiredExample: 1
pageSizeintegerRequiredExample: 100
orderBystringRequiredExample: Email
ascendingbooleanRequiredExample: false
trainingTypeinteger · nullableOptional

Optional: e.g. 0 for Survey enrollment

Responses
200

OK

application/json
statusstring · nullableOptional
messagestring · nullableOptional
validationMessagesstring[] · nullableOptional
post/api/training-reports/{enrollmentId}/users/search
200

OK

Example body (first page; same contract: non-null orderBy, explicit ascending, searchInputTextValue is "" not null):

For Survey enrollments, add trainingType to the body (value depends on API; e.g. 0 for Survey). Paginate until results is empty or totalNumberOfRecords is reached.


Export the enrollment list

Endpoint: POST /api/enrollments/search/export

Export the enrollment list (e.g. CSV/Excel) for that customer. Send the same X-KEEPNET-Company-Id and a body similar to search (filter, exportType, etc.). See Endpoints → Enrollment for the full request schema.

Exports the list of enrollments. As a Reseller, send X-KEEPNET-Company-Id: <companyResourceId>.

Exports the list of enrollment

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: 20
orderBystringRequiredExample: CreateTime
ascendingbooleanRequiredExample: false
reportAllPagesbooleanOptionalExample: false
exportTypestringRequiredExample: CSV
enrollmentTypestringOptional

Optional: e.g. Survey

Responses
200

OK

No content

post/api/enrollments/search/export
200

OK

No content


Common errors

  • 403 Forbidden — Credential is not Reseller, or the Company ID 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.

  • 400 Bad Request — Invalid request body. For POST /api/enrollments/search, ensure filter is sent with the structure above (e.g. Condition, FilterGroups). For Survey-only results, include enrollmentType: "Survey".

  • 404 Not Found — Invalid Company ID or enrollment ID. Verify Company ID from POST /api/companies/search and enrollment ID from POST /api/enrollments/search; send X-KEEPNET-Company-Id (and for enrollment search x-ir-company-id) for the customer that owns the enrollment.

Related: Scope API requests to a customer →. For training report and enrollment schemas: EndpointsEnrollment, TrainingReport in the API Reference sidebar.

Last updated