Skip to content
Dark mode

Create assets

Creates assets from Content Center files asynchronously and returns an execution ID to track progress.

Prerequisites

  1. Authentication and setup: A valid access token.
  2. Content Center: The file must exist in Content Center and be a valid, published, supported file type.
  3. Create a hub: The target hubs must exist.
  4. Create attributes: If you tag an asset, obtain the attribute IDs first. Attributes are optional.
POST /api/assethub/v2/assets/async

Base URL: the standard REST host for your region. See Base URLs.

Headers: Authorization: Bearer ACCESS_TOKEN, Content-Type: application/json.

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.

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"
}

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.
{
"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_id must correspond to a valid, published file in Content Center.
  • Validation: The asset name cannot contain / or \.
  • Synced files: If the file_id is 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_download defaults to true. The other boolean flags default to false.
  • Dependent properties: If a parent property is missing, for example expiry_date, dependent properties such as expiry_reminder are 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 attributes format 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}.

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 and failed_tasks count before treating the batch as successful. The example has execution status success even though one task failed.