Coming soon. This endpoint is not available yet, and the details below may change before release.
Submits an asynchronous job that archives up to 100 content records by id. Archiving is the reversible take-down; the records can be brought back one at a time with POST /contents/{id}/restore.
The endpoint responds immediately with 202 Accepted and a jobId; poll GET /contents/bulk/{jobId} for progress and per-item results.
Only published content can be archived. An id in any other state is reported as a NOT_PUBLISHED failure in results[] and does not affect the rest of the batch.
Note that this endpoint takes the acting user once for the whole batch, whereas bulk create and bulk update take one per entry — those endpoints allow each record to have its own author, while a batch of ids has nowhere to put one.
The Idempotency-Key requirement and the 207/422 batch validation behaviour are identical to bulk create — see POST /contents/bulk.
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.
Caller-generated idempotency key for the submission. Generate it once per logical submission and reuse it on retries — replaying the same key returns the existing job instead of creating a duplicate. Requests without the header are rejected with 422.
Act on three records by id
Used by both bulk archive and bulk delete. For delete, any id that is still published comes back as a MUST_ARCHIVE_FIRST failure.
{
"authorRef": "UID30084022",
"ids": [
"5f9d88d6e1b2a34c56d78902",
"5f9d88d6e1b2a34c56d78903",
"5f9d88d6e1b2a34c56d78904"
]
}The content records to act on, identified by id.
The ids of the content records, at most 100 per submission
Accepted — a bulk archive job was created (or an existing job was matched by idempotency key). Poll pollUrl for progress and per-item results.
Job accepted
The batch was accepted. Poll pollUrl for progress and per-entry results.
{
"jobId": "6863f9a2c1d2e3f4a5b6c7d8",
"status": "pending",
"pollUrl": "/rest/v2/contents/bulk/6863f9a2c1d2e3f4a5b6c7d8"
}Returned when a bulk content job has been accepted for processing.
The id of the job processing the batch
The processing status of a bulk job
The path to poll for progress and per-item results
Multi-Status — some ids failed validation, so no job was created. The envelope lists the ids that passed and the ones that were rejected, so the batch can be corrected and resubmitted.
Some entries rejected, no job created
Entry 2 failed validation, so nothing was submitted. Correct it and resubmit the whole batch.
{
"success": {
"count": "2",
"entities": [
{
"reference": "contents[0]"
},
{
"reference": "contents[1]"
}
]
},
"failure": {
"count": "1",
"entities": [
{
"reference": "contents[2]",
"message": "title is required"
}
]
}
}A multi-status envelope returned when some entries in the batch failed validation. No job is created — correct the failed entries and resubmit the whole batch.
The entries that passed validation
The number of entries that passed validation
The entry's position in the submitted array
The entries that failed validation
The number of entries that failed validation
The entry's position in the submitted array
The reason the entry was rejected
Unauthorized
Unauthorized
Forbidden
Forbidden
Unsupported Media Type — Content-Type must be application/json
The request could not be processed due to a validation error
Unprocessable Content — the submission was rejected before any job was created. This happens when the batch array is missing or empty, contains more than 100 entries, or no entry in it passed validation; and when the Idempotency-Key header is absent.
A batch in which only some entries fail validation returns 207 instead, so that you can see which ones to correct.
The request could not be processed due to a validation error
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