Invoke the Action API to retrieve information about invoked Actions.
- API v1.5 Documentation
- Payload Reference
API Endpoint Reference (1.5)
Tenovos has introduced version 1.5 to provide non-breaking improvements over previous versions.
Key Changes:
- Authentication Standards now include OAuth2 code flow.
- Client ID is no longer required to be passed when requesting an Authorization token using our Standard Auth from v1.4
- New endpoints have been added and will continue to be added until v2 is generally available to all customers.
- Adaptive Template endpoints
- A new Get Asset endpoint with a simplified Response
- A new Create Asset endpoint with simplified payloads for the Request and Response
- A new Update Asset endpoint with simplified payloads for the Request and Response
- We've made some performance improvements to most endpoints
Tenovos Content Delivery Network (CDN) - Coming Soon!
Tenovos CDN: Pull Zone Overview
Tenovos CDN provides global content acceleration and optimization through a pull zone architecture, ensuring that your assets are delivered to end users with maximum speed, reliability, and efficiency. A Content Delivery Network (CDN) works by caching static content—such as images, videos, and other media—on servers distributed across the globe. When an asset is requested, the CDN serves it from the nearest edge location, reducing load times and offloading traffic from the origin server, which in this case is Tenovos DAM.
A pull zone is the core mechanism that powers this system. It automatically fetches content from the origin the first time it is requested, then caches it at the edge. Subsequent requests are served directly from the CDN cache, improving response times and reducing bandwidth consumption.
Through the Tenovos CDN API, you can create, update, and manage pull zones programmatically. Pull zones support advanced features such as global edge caching, cache purging, bandwidth controls, and real-time performance statistics like cache hit rate and geographic request distribution. Optional optimization settings allow you to enhance performance further by enabling image compression, WebP and AVIF support, and content minification.
With just a few API calls, you can fully integrate high-performance content delivery into your Tenovos workflows—no complex infrastructure required.
Invoke the Collection API to create, retrieve, edit, and delete Collections. Collections are used to group and catalog related Assets for quick access and consumption. Collections can be configured as:
- private: Visible only to the user who created the Collection.
- secured: Visible to users with.
When retrieving the Assets within a Collection, the requesting user will only see the Assets that the user has access to view. For example, a librarian may see all Assets within a Collection, but a general consumer user may only see a portion of those Assets, due to limited security access.
Invoke the Metadata API to retrieve Metadata Template to be applied to Assets during Asset creation. A Metadata Template defines a set of Metadata Attributes of varying types, including Text, Date, Controlled Vocabulary, Tabular, and Cascading Attributes. When a Metadata Template is assigned to a new Asset, the corresponding Metadata Attributes will be available for population on the Asset.
Request
Provides the ability to scan a search result set of assets using a cursor to fetch the next set of results pages on the limit (page size) passed.
The Request Body must be a JSON object
Flag to denote whether or not to include prior versions of the asset in the result
Optional parameter on the first call. On subsequent calls requires the cursor value returned in the API response.
- https://api.uat.tenovos.io/v1/asset/scan
- https://api.tenovos.io/v1/asset/scan
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://api.uat.tenovos.io/v1/asset/scan \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: YOUR_API_KEY_HERE' \
-d '{
"limit": 100,
"searchTerm": [
"*"
],
"includeDeleted": true,
"includeVersions": true,
"sortBy": [
{
"metadataDefinitionSearchField": "lastUpdatedEpoch",
"order": "desc"
}
],
"operation": "AND",
"keywordSearchField": "string",
"cursor": "WzE2ODI5NTczMDM2NDgsMTY4Mjk1NzI2MzU5NSwxNjgyOTU3MjYzNTk1LCI3ZDkwZTkzMi01MmU4LTQ2NTEtYmQ3Ny03M2Y1OWFjMmY3YTMiLDEyMDI1OTA4NTEzMF0=",
"assetType": "Base Product"
}'The Response Body will be a JSON object
Cursor returned after the first call to be passed on all subsequent calls to get the next page of results
{ "hitCount": 1, "cursor": "WzE2ODI5NTczMDM2NDgsMTY4Mjk1NzI2MzU5NSwxNjgyOTU3MjYzNTk1LCI3ZDkwZTkzMi01MmU4LTQ2NTEtYmQ3Ny03M2Y1OWFjMmY3YTMiLDEyMDI1OTA4NTEzMF0=", "result": [ { … } ], "facets": [ { … } ] }
Request
There are two types of searches available:
- Simple Keyword Search: Requesting user can get list of Assets against search terms/keywords list. For example ["keyword1", "keyword2"]
- Facet Search: Requesting user can get list of Assets against Facet value list. For example ["Facet: facet_value"]
Specifying a value in the 'keywordSearchField' attribute in the request allows you to target keyword searches against Filename, Asset ID, Metadata, or Content (extracted text from documents.
By default, if not specified in the request, the search operation type will be set to 'AND' for search terms and/or facets. If the 'relevancy' field is passed as true, this will negate the operation selection used in legacy search and will leverage the relevancy search matching. When relevancy is set to true, the 'metadataDefinitionSearchField' field within the sortBy object should be set to 'relevance', and the 'order' field should be set to 'desc'.
By default, up to 50 Assets will return from the search. Should you want to limit the amount of assets returned in each response, the value for 'limit' can be set to a number up to 50. You can also set search offset by setting the 'from' property. For example, for the first page, set 'from' to 0. After that set 'from' to 50, 100, 150, etc.
This endpoint will only return a handful of metadata fields by default. To include more metadata fields in the response, those fields should be included in the 'includes' array. System metadata fields, such as Metadata Template ID, should be entered using camel case (ie, metadataTemplateId). Custom metadata fields should be entered by their attribute search term, prefixed by metadataDocument. For example, to retrieve an attribute called Published Channel, a user would include "metadataDocument.published_channel" in the includes array. Fields included in this array will be returned in an object called 'metadataDocument' if those attributes exist on the asset.
Average Response Time: 691ms
The Request Body must be a JSON object
Comma separated array of search term values.
System metadata fields, such as Metadata Template ID, should be entered using camel case (ie, metadataTemplateId). Custom metadata fields should be entered by their attribute search term, prefixed by metadataDocument. For example, to retrieve an attribute called Published Channel, a user would include "metadataDocument.published_channel" in the includes array. Fields included in this array will be returned in an object called 'metadataDocument' if those attributes exist on the asset.
Flag to denote whether or not to include prior versions of the asset in the result
Boolean field to indicate whether or not to return filter menu aggregation counts for the search term. Set to false to significant improve speed and reduce payload size.
Specified Search Target. Valid values are - filename, assetId, metadata, content
If the 'relevancy' field is passed as true, this will negate the operation selection used in legacy search and will leverage the relevancy search matching. When relevancy is set to true, the 'metadataDefinitionSearchField' field within the sortBy object should be set to 'relevance', and the 'order' field should be set to 'desc'.
- https://api.uat.tenovos.io/v1/search
- https://api.tenovos.io/v1/search
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://api.uat.tenovos.io/v1/search \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: YOUR_API_KEY_HERE' \
-d '{
"searchTerm": [
"Gilfoyle",
"Dinesh",
"Erlich"
],
"from": 0,
"limit": 50,
"includes": [
"metadataTemplateId",
"metadataDocument.asset_description",
"metadataDocument.file_size",
"metadataDocument.compression_type"
],
"includeDeleted": true,
"includeVersions": true,
"sortBy": [
{
"metadataDefinitionSearchField": "lastUpdatedEpoch",
"order": "desc"
}
],
"operation": "AND",
"aggregations": false,
"keywordSearchField": "filename",
"relevancy": true
}'{ "total": 1, "results": { "createdEpoch": 1727724108027, "metadataDocument": { … }, "fileId": "445c273a-235f-4d3b-8397-567f02f312e0", "filename": "gilfoyle_anton.png", "originalFileId": "2d69d72f-91be-4aeb-9d62-4fbd3759e451", "createdBy": "d6197e75-74e2-4a81-9c39-429148ab27a1", "objectId": "c5e24f53-cb77-4882-927c-0e8dddf5f7c9", "customerId": 1588091945182, "metadataTemplateId": "f5a66fac-7e81-44c1-b6eb-20997c559982", "renditionsDocument": { … }, "securityTemplateIds": [ … ] }, "facets": "{\"Company\":{\"buckets\":[{\"key\":\"Pied Piper\",\"doc_count\":47},{\"key\":\"Hooli\",\"doc_count\":4}]}" }
Request
Retrieve the collection list against the list of search terms/keywords. By default AND operation will be applied between the search terms.
By default 50 collections will return, you can also set search offset by setting from attribute, for example for first page set from to zero and after that you set 50, 100, 150 and so on.
Average Response Time: 244ms
The Request Body must be a JSON-formatted list of collections which include the following properties.
Flag to denote whether or not to include prior versions of the asset in the result
Boolean field to indicate whether or not to return filter menu aggregation counts for the search term. Set to false to significant improve speed and reduce payload size.
- https://api.uat.tenovos.io/v1/search/collection
- https://api.tenovos.io/v1/search/collection
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://api.uat.tenovos.io/v1/search/collection \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: YOUR_API_KEY_HERE' \
-d '{
"from": 0,
"searchTerm": [
"*"
],
"includeDeleted": true,
"includeVersions": true,
"sortBy": [
{
"metadataDefinitionSearchField": "lastUpdatedEpoch",
"order": "desc"
}
],
"operation": "AND",
"aggregations": false,
"keywordSearchField": "filename"
}'[ { "hitCount": 0, "result": [ … ], "facets": [ … ] } ]
Request
To Retrieve the Assets list there is two types of searches available,
Simple Keyword Search: Requesting user can get list of Assets against search terms/keywords list. For example ["keyword1", "keyword2"]
Facet Search: Requesting user can get list of Assets against Facet value list. For example ["Facet: facet_value"]
Targeted Search: Requesting user can target keyword searches against Filename, Asset ID, Metadata, or Content (extracted text from documents) by passing the optional property of keywordSearchField.
Requesting user can apply the combination of both searches and if there is no keyword/facet in requesting body it will apply wildcard search.
By default AND operation will be applied with search terms and/or facets.
By default, up to 50 Assets will return from the search.You can also set search offset by setting the from property. For example, for the first page, set from to zero. After that set from to 50, 100, 150, etc.
Average Response Time: 4185ms
The Request Body must be a JSON object
Flag to denote whether or not to include prior versions of the asset in the result
Boolean field to indicate whether or not to return filter menu aggregation counts for the search term. Set to false to significant improve speed and reduce payload size.
- https://api.uat.tenovos.io/v1/search/keyword
- https://api.tenovos.io/v1/search/keyword
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://api.uat.tenovos.io/v1/search/keyword \
-H 'Authorization: string' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: YOUR_API_KEY_HERE' \
-d '{
"from": 0,
"searchTerm": [
"*"
],
"includeDeleted": true,
"includeVersions": true,
"sortBy": [
{
"metadataDefinitionSearchField": "lastUpdatedEpoch",
"order": "desc"
}
],
"operation": "AND",
"aggregations": false,
"keywordSearchField": "filename"
}'{ "hitCount": 1, "result": [ { … } ], "facets": [ { … } ] }
Request
Use this endpoint to retrieve a list of User Profiles matching the search keyword provided in the request parameter. Do not enter your search term wrapped in quotation marks. Provided keyword will be matched against the user attributes case insensitively - First Name, Last Name, Friendly Name, Username, Email, Phone, Company, Contact, Country, Status, Group Names, and Role Name. Entering "*" as your search term will return all users. The response is formatted as an area of objects, with each user account being returned as an object, as well as a key called 'count', which indicates how many accounts met the search critera. A maximum limit of 100 accounts will be returned in the response. In the case that more than 100 accounts meet the search criteria, pagination using the optional 'from' and 'limit' query parameters will be required to retrieve all accounts.
The user performing this action must have the 'User Management' role privilege.
How to use pagination: Pagination should be used when the amount of user accounts that match the entered search term exceeds the amount of users (100) returned in a single response. Paginating through the results will require making more than one call to this endpoint. To retrieve the first 100 users, in your query parameters, set your 'from' value to 0, and your 'limit' value to 100. To return the next set of 100 users, leave your 'limit' value as 100, but set your 'from' value to 100.
Continue to repeat this process of adding 100 to your 'from' value until all user account results are captured.
- https://api.uat.tenovos.io/v1/search/users/{searchText}
- https://api.tenovos.io/v1/search/users/{searchText}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.uat.tenovos.io/v1/search/users/{searchText}?from=string&limit=string' \
-H 'Authorization: string' \
-H 'X-API-Key: YOUR_API_KEY_HERE'{ "status": "success", "data": [ { … } ] }
Tenovos Webhook Subscriptions
For more information about our Webhooks, see the Webhook section of our Developer Portal