Create assets
Creates assets from Content Center files asynchronously and returns an execution ID to track progress.
Prerequisites
- Authentication and setup: A valid access token.
- Content Center: The file must exist in Content Center and be a valid, published, supported file type.
- Create a hub: The target hubs must exist.
- Create attributes: If you tag an asset, obtain the attribute IDs first. Attributes are optional.
Endpoint
Section titled “Endpoint”POST /api/assethub/v2/assets/asyncBase URL: the standard REST host for your region. See Base URLs.
Headers: Authorization: Bearer ACCESS_TOKEN, Content-Type: application/json.
Request
Section titled “Request”| Parameter | Type | Required | Description |
|---|---|---|---|
assets |
array | Required | Array of asset objects to create. Maximum 50 assets per request. |
user_id |
string | Required | ID of the user performing the operation. Must have the DEVELOP_ASSETS permission. |
assets[].file_id |
string | Required | ID of the file in Content Center. Must be a valid, supported file type. |
assets[].hubs |
string[] | Required | List of valid hub IDs to add the asset to. |
assets[].properties |
object | Required | Metadata for the asset. See the properties object fields below. |
The properties object takes these fields:
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | Optional | Display name of the asset. Maximum 250 characters. Cannot contain / or \. Default: the file name. |
description |
string | Optional | Asset description. Maximum 1,000 characters, excluding HTML tags. |
status |
string | Required | Asset state. REFERENCE_ASSET_STATE_PUBLISHED or REFERENCE_ASSET_STATE_DRAFT. |
asset_owner |
string | Optional | Email of the asset owner. The user must have the necessary permissions. |
allow_download |
boolean | Optional | Whether users can download the asset. Default: true. |
usage |
string | Optional | Sharing type. SHARING_TYPE_INTERNAL or SHARING_TYPE_EXTERNAL. |
allow_mix_and_match |
boolean | Optional | Whether the asset can be mixed with others. Default: false. |
allow_edit_content |
boolean | Optional | Whether users can edit content. Default: false. |
allow_save_to_drive |
boolean | Optional | Whether users can save to external drives. Default: false. |
expiry_date |
string | Optional | Expiration date in YYYY-MM-DD format. Must be a future date. |
expiry_reminder |
string | Optional | Reminder setting for expiration. One of EXPIRY_REMINDER_DURATION_ON_THE_DAY_OF_EXPIRY, EXPIRY_REMINDER_DURATION_SEVEN_DAYS_BEFORE_EXPIRY, EXPIRY_REMINDER_DURATION_FIFTEEN_DAYS_BEFORE_EXPIRY. |
file_update_reminder |
string | Optional | Reminder setting for file updates. One of REF_ASSET_REMINDER_RECURSIVE_DURATION_WEEKLY, REF_ASSET_REMINDER_RECURSIVE_DURATION_BIWEEKLY, REF_ASSET_REMINDER_RECURSIVE_DURATION_MONTHLY, REF_ASSET_REMINDER_RECURSIVE_DURATION_QUARTERLY, REF_ASSET_REMINDER_RECURSIVE_DURATION_HALF_YEARLY, REF_ASSET_REMINDER_RECURSIVE_DURATION_YEARLY. |
attributes |
array | Optional | Attributes to tag the asset. Confirm the accepted array format before including this field. See Attributes format. |
Request example
Section titled “Request example”Replace the sample IDs with your own and choose future expiry_date values. Review Attributes format before including the optional attributes property.
{ "assets": [ { "file_id": "123456789012345101", "hubs": ["123456789012345102", "123456789012345103"], "properties": { "name": "Sample Asset 1", "description": "This is a sample asset", "status": "REFERENCE_ASSET_STATE_PUBLISHED", "asset_owner": "user@example.com", "allow_download": true, "usage": "SHARING_TYPE_INTERNAL", "allow_mix_and_match": false, "allow_edit_content": false, "allow_save_to_drive": false, "expiry_date": "2030-12-12", "expiry_reminder": "EXPIRY_REMINDER_DURATION_ON_THE_DAY_OF_EXPIRY", "file_update_reminder": "REF_ASSET_REMINDER_RECURSIVE_DURATION_WEEKLY", "attributes": [{ "attribute_id": "123456789012345104" }, { "attribute_id": "123456789012345105" }] } }, { "file_id": "123456789012345106", "hubs": ["123456789012345102", "123456789012345107"], "properties": { "name": "Q4 Marketing Deck", "description": "External facing pitch deck", "status": "REFERENCE_ASSET_STATE_DRAFT", "asset_owner": "marketing@example.com", "allow_download": false, "usage": "SHARING_TYPE_EXTERNAL", "allow_mix_and_match": true, "allow_edit_content": true, "allow_save_to_drive": true, "expiry_date": "2031-01-01", "expiry_reminder": "EXPIRY_REMINDER_DURATION_ON_THE_DAY_OF_EXPIRY", "file_update_reminder": "REF_ASSET_REMINDER_RECURSIVE_DURATION_HALF_YEARLY", "attributes": [{ "attribute_id": "123456789012345108" }] } } ], "user_id": "123456789abcd109"}Response
Section titled “Response”Returns an execution ID to track the background process.
| Field | Type | Description |
|---|---|---|
execution_id |
string | ID to track the async operation status. |
request_id |
string | Unique ID for the request. |
message |
string | System message. Present only if it is not empty. |
Response example
Section titled “Response example”{ "execution_id": "w123436", "request_id": "req_101", "message": "Operation initiated successfully"}- Async processing: This endpoint creates the assets in the background and returns an execution ID. Use it with Check status to follow the progress of each asset.
- Limits: Maximum 50 assets per request. Asset name 250 characters. Description 1,000 characters.
- Validation: The
file_idmust correspond to a valid, published file in Content Center. - Validation: The asset name cannot contain
/or\. - Synced files: If the
file_idis a synced file and metadata is available through the sync, that latest synced metadata is used and explicitly passed values for those properties are ignored. For non-synced properties, the explicitly passed metadata is used. - Defaults:
allow_downloaddefaults totrue. The other boolean flags default tofalse. - Dependent properties: If a parent property is missing, for example
expiry_date, dependent properties such asexpiry_reminderare ignored. - Governance rules: Embedded assets cannot have Allow download set to Yes. Only PPT, PDF, DOCX, and XLSX assets can have Allow customization set to Yes. PDF assets cannot have Edit content set to Yes.
- Attributes: Use unique attribute IDs rather than display names. To find these IDs, see the response of Create attributes. Check Attributes format before constructing the array.
- Feature flags: Properties controlled by disabled feature flags are ignored.
- Attributes format: Confirm the accepted
attributesformat with Mindtickle Support before submitting assets. The request example uses objects such as{ "attribute_id": "123456789012345104" }; do not substitute ID strings without confirming the accepted format. - Status response: Confirm the status response fields for your operation with Mindtickle Support before implementing polling. Do not assume creation and move or mirror operations use the same response shape because they share
GET /api/assethub/v2/assets/async/{execution_id}.
Check status
Section titled “Check status”Fetch the progress or completion status of an async asset creation request with the execution_id this endpoint returns.
GET /api/assethub/v2/assets/async/{execution_id}Query parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
user_id |
string | Required | User ID for authorization. Must be a valid user ID. |
limit |
integer | Optional | Maximum number of tasks to return. Maximum 100. Default: 0. |
skip |
integer | Optional | Number of tasks to skip. Default: 0. |
This standalone example illustrates a status response. Its task counts are independent of the request example above:
{ "execution_id": "w123436", "status": "success", "total_tasks": 25, "completed_tasks": 24, "failed_tasks": 1, "tasks": [ { "task_id": "t_101", "status": "success", "asset_id": "123456789012345110" }, { "task_id": "t_102", "status": "failed", "asset_id": "", "error": "Asset already exists with same name in one or more hubs." } ], "request_id": "req_102"}Response values:
- Execution status:
in_progress,success,failed,not_dispatched. - Task status:
success,failed,in_progress,not_dispatched. Check the task outcomes andfailed_taskscount before treating the batch as successful. The example has execution statussuccesseven though one task failed.