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
chevron-right
lockRequired 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
chevron-right
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
chevron-right
lockRequired 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
chevron-right
200

OK

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

OK

Example headers:

Example body (first page; filter structure required):

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
chevron-right
lockRequired 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
chevron-right
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
chevron-right
lockRequired 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
chevron-right
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
chevron-right
lockRequired 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: true
trainingTypeinteger · nullableOptional

Optional: e.g. 0 for Survey enrollment

Responses
chevron-right
200

OK

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

OK

Example body (first page; filter with condition and filterGroups as required by the schema):

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
chevron-right
lockRequired 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
chevron-right
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