Get Asset Library Item
Fetch a single Asset Library item by ID, including processingStatus for async ingest.
Returns a single Asset Library item by ID. Poll this endpoint after creating a SCORM or xAPI item
until processingStatus is ready or failed.
https://example.thoughtindustries.com/v3/assetLibraryItems/:idThis endpoint is served by the v3 API. Its full path is
https://{instance}.thoughtindustries.com/v3/assetLibraryItems/{id}, not the/incoming/v2base URL used by the rest of this reference. Use the full URL shown in the examples below.
Example request
curl "https://{instance}.thoughtindustries.com/v3/assetLibraryItems/443d8182-d461-4568-a777-918ca729fd85" \
-H 'Authorization: Bearer YOUR_API_KEY'Parameters
Requires a manager session or a company API key. List and get do not require an additional
centrallibrary permission.
| Name | Type | Required | Location | Description |
|---|---|---|---|---|
id | uuid | Yes | path | Asset Library item ID. |
Example response
Note the data wrapper — v3 endpoints nest their payload under data.
{
"data": {
"id": "443d8182-d461-4568-a777-918ca729fd85",
"title": "Test SCORM Asset",
"assetType": "scorm",
"description": "A test SCORM package for API validation",
"body": "3a131ac3-1a74-420d-b4da-ae10b18b2c68/443d8182-d461-4568-a777-918ca729fd85-1787775595630.zip",
"contentType": "SCORM20042NDEDITION",
"fileName": "golf-scorm-2004.zip",
"tagIds": [],
"version": 1,
"locationIds": [],
"imageAltText": null,
"imageCaption": null,
"imageLink": null,
"imageNewTab": false,
"imageTitle": null,
"isNew": true,
"processingStatus": "ready",
"createdAt": "2026-08-26T20:19:55.000Z",
"updatedAt": "2026-08-26T20:20:01.000Z"
}
}While a SCORM or xAPI package is still ingesting, processingStatus is pending or processing
and body is null. Do not treat a 200 with body: null as a finished upload — keep polling.
{
"data": {
"id": "c43e5367-577f-4bde-95c8-09dea5b414ba",
"title": "Test SCORM Asset",
"assetType": "scorm",
"processingStatus": "pending",
"body": null,
"contentType": null,
"fileName": "golf-scorm-2004.zip",
"tagIds": [],
"version": 1,
"locationIds": [],
"imageAltText": null,
"imageCaption": null,
"imageLink": null,
"imageNewTab": false,
"imageTitle": null,
"isNew": true,
"description": "A test SCORM package for API validation",
"createdAt": "2026-08-26T18:44:57.972Z",
"updatedAt": "2026-08-26T18:44:57.972Z"
}
}Response fields
| Field | Type | Description |
|---|---|---|
data.id | uuid | Asset Library item ID. |
data.title | string | null | Display title. |
data.assetType | string | null | Stored type: image, wysiwyg, resource_file, scorm, xapi, or certificateTemplate. |
data.description | string | null | Optional description. |
data.body | string | null | Stored file location after ingest. null until processing finishes, and always null for wysiwyg. |
data.contentType | string | null | MIME type, or a SCORM learning-standard label. |
data.fileName | string | null | Original file name. |
data.tagIds | uuid[] | Associated tag IDs. |
data.version | integer | null | Asset version. |
data.locationIds | uuid[] | Locations linked to the item. |
data.imageAltText | string | null | Image alt text. Meaningful only when assetType is image. |
data.imageCaption | string | null | Image caption. |
data.imageLink | string | null | Image click-through URL. |
data.imageNewTab | boolean | Whether the image link opens in a new tab. |
data.imageTitle | string | null | Image title attribute. |
data.isNew | boolean | Author-side "new asset" badge. |
data.processingStatus | string | pending, processing, ready, or failed. |
data.createdAt | datetime | Creation timestamp (ISO 8601). |
data.updatedAt | datetime | Last update timestamp (ISO 8601). |
Errors
A missing item, a soft-deleted item, a prior revision, or an ID that belongs to another instance
returns 404. The message names the ID. There is no existence leak across tenants — every miss
looks the same.
{
"code": "RESOURCE_NOT_FOUND",
"message": "AssetLibraryItem with identifier \"443d8182-d461-4568-a777-918ca729fd85\" was not found",
"category": "NOT_FOUND",
"timestamp": "2026-08-26T18:44:57.972Z",
"statusCode": 404,
"metadata": {
"resource": "AssetLibraryItem",
"identifier": "443d8182-d461-4568-a777-918ca729fd85"
}
}A path id that is not a UUID returns 400 with code: "BAD_REQUEST" and
category: "CLIENT_ERROR". message names the problem. timestamp and statusCode are always
present; metadata.errors is present when ValidationPipe rejected a constraint. A missing or
invalid API key returns 401 with code: "UNAUTHENTICATED".
Rate limit
200 requests per 60 seconds, counted per instance. This limit is specific to the Asset Library
controller and is independent of the per-family rate limits that apply to /incoming/v2 endpoints.