Returns the status, progress, and per-item results of a bulk user lifecycle job created by POST /users/bulk/create, POST /users/bulk/suspend or POST /users/bulk/delete.
Per-item failures do not affect the HTTP status — a completed job whose items all failed still returns 200; inspect results[] for the individual outcomes.
HTTP Basic authentication using your Tenant ID and API secret.
- Username is the Tenant ID (i.e.
eu-west-2_AbcdEfghI) - Password is the API secret you would have received.
You can also authenticate using OAuth 2.0 client credentials (oauth2 security scheme) instead of Basic auth.
OAuth 2.0 client credentials authentication.
Use the following token endpoints (replace :tenantId with your Tenant ID):
Public API access tokens
- Staging:
https://public.api.learnstaging.link/oauth2/token/:tenantId - Production:
https://public.api.learn.link/oauth2/token/:tenantId - Staging MEA:
https://public.api.meastaging.learn.tech/oauth2/token/:tenantId - Production MEA:
https://public.api.mea.learn.tech/oauth2/token/:tenantId
- Staging:
Webhooks access tokens
- Staging:
https://user.api.learnstaging.link/oauth2/token/:tenantId - Production:
https://user.api.learn.link/oauth2/token/:tenantId - Staging MEA:
https://user.api.meastaging.learn.tech/oauth2/token/:tenantId - Production MEA:
https://user.api.mea.learn.tech/oauth2/token/:tenantId
- Staging:
All access tokens must be sent using the Authorization: Bearer <access_token> header.
Scopes
For API access (non-webhooks), the following scopes are available:
api/all– Full read and write access to the API.api/read– Read-only access to the API.api/write– Write access to the API.
For webhooks, the following scopes are available:
api/webhooks– Access to webhook functionality.api/all– Full read and write access to the API, including webhooks.
Tokens must include appropriate scopes for the endpoints you wish to call.
The job id returned by the bulk submit endpoint
The job's status, progress, and per-item results
The status, progress, and per-item results of a bulk user lifecycle job.
The type of bulk job
The processing status of a bulk job
Progress counters for a bulk job
The number of refs processed so far
The number of refs processed successfully
The number of refs that failed processing
The total number of distinct refs in the batch (duplicate refs in a submission are collapsed and processed once)
Per-item outcomes, one per distinct ref, in the order the refs were submitted (duplicate refs are collapsed and reported once). Populated as batches complete; empty until processing starts.
The outcome of a single item within a bulk job
The user ref this result corresponds to
The resolved user id — the user that was found for a suspend or delete item, or the user that a create item created
The per-item outcome
A stable code describing the outcome.
Suspend jobs: USER_NOT_FOUND, CANNOT_SUSPEND_SELF, USER_NOT_ELIGIBLE (the user is in a state, such as expired, that cannot be suspended), and SUSPEND_FAILED accompany a FAILED status; ALREADY_SUSPENDED accompanies a SUCCESS status (the user was already suspended, so no changes were made).
Delete jobs: USER_NOT_FOUND (also reported for a ref that was already deleted — deletion anonymises the user record, so the ref no longer resolves), DELETE_RETRYABLE (a transient failure, such as a rate limit or a network fault; the user is untouched and the ref can be retried by resubmitting it), and DELETE_FAILED accompany a FAILED status; DELETED_CLEANUP_INCOMPLETE accompanies a SUCCESS status (the user was deleted, but some post-delete cleanup did not fully complete).
Create jobs: USER_ALREADY_EXISTS (another active user already holds this ref or email address; no user was modified), VALIDATION_FAILED (the item was rejected by the create rules — message holds the field-level detail), INVALID_INPUT (the item carried no usable ref, so no ref is reported on the result), and CREATE_FAILED accompany a FAILED status.
Human-readable detail for the outcome
A job-level error message, present only when the job itself failed (per-item failures are reported in results[])
When processing started; null while the job is pending
When processing finished; null until the job completes or fails
When the job was created
Unauthorized
Unauthorized
Forbidden
Forbidden
Not Found — no bulk user lifecycle job with this id exists for the organisation (ids of other job kinds also return 404)
The resource cannot be found or does not exist
An unexpected error has occurred
When any default error occurs it may be a system failure and persistent errors may require support.
The server is unable to process the request