Vionlabs Portal API
Programmatically access your organization's curated Smartlists, Recipes, and Creative Assets.
Smartlists
Collections of movies and TV shows organized by themes, genres, moods, and custom filters.
Recipes
Configuration templates for generating thumbnails and preview clips from your content catalog.
Creative Assets
Generated thumbnails and preview clips created from Recipes applied to your assets.
Catalogs
Your organization's available content catalogs.
Authentication
This API uses OAuth 2.0 Client Credentials flow for authentication via Stytch.
Getting Started
- Create API Keys: Log in to app.vionlabs.com → Settings → API Keys
- Get Access Token: Exchange your Client ID and Client Secret for an access token using the Stytch OAuth2 endpoint
- Make API Calls: Include the access token in the Authorization header
Example Authentication
# Get Access Token from Stytch
curl -X POST "https://api.stytch.com/v1/public/project-live-ad1e793c-f32e-485c-b5a0-144d5cf64be7/oauth2/token" \
-H "Content-Type: application/json" \
-d '{
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"grant_type": "client_credentials",
"scope": "read:smartlist:published read:recipe:published read:creative-asset:published"
}'
# Response includes access_token
{
"access_token": "eyJhbGci...",
"expires_in": 3600,
"token_type": "bearer"
}
# Use Token in API Requests
curl -H "Authorization: Bearer ACCESS_TOKEN" \
"https://apis.prod.vionlabs.com/smartlists"Rate Limits
- 1000 requests per hour per organization
- Rate limit headers included in all responses
Support
- Documentation: https://docs.app.vionlabs.com
- Email: support@vionlabs.com
/smartlists/docs
Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN
In: header
Response Body
curl -X GET "https://apis.prod.vionlabs.com/smartlists/docs"/smartlists/docs/{*}
Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN
In: header
Path Parameters
Response Body
curl -X GET "https://apis.prod.vionlabs.com/smartlists/docs/string"/smartlists/openapi.json
Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN
In: header
Response Body
curl -X GET "https://apis.prod.vionlabs.com/smartlists/openapi.json"Get Access Token
Exchange your Client ID and Client Secret for an access token. This token is required for all API requests.
Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN
In: header
Your API client ID
Your API client secret
list of scopes (e.g., [read:smartlist:published, read:recipe:published, read:creative-asset:published])
Response Body
curl -X POST "https://apis.prod.vionlabs.com/auth/token" \ -H "Content-Type: application/json" \ -d '{ "clientId": "string", "clientSecret": "string" }'{
"access_token": "string",
"token_type": "bearer",
"expires_in": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}List Smartlists
Retrieve a paginated list of published Smartlists for your organization. Filter by creator, purpose, AI-generated status, or search by title. Use pagination to handle large collections efficiently.
Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN
In: header
Query Parameters
Page number for pagination (starts at 1)
11 <= value <= 9007199254740991Number of items per page (max: 100)
201 <= value <= 100Filter by catalog ID. If not provided, returns smartlists from all accessible catalogs.
-9007199254740991 <= value <= 9007199254740991Filter by catalog name (exact match). More user-friendly than catalogId since catalog names are visible in the portal.
Filter by creator email address
^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$emailFilter by smartlist purpose: editorial (curated collections), creative-lab (marketing campaigns), review-filter (quality control)
"editorial" | "creative-lab" | "review-filter"Filter by AI-generated smartlists (true) or manually curated (false)
"true" | "false"Search smartlists by title (case-insensitive partial match)
Response Body
curl -X GET "https://apis.prod.vionlabs.com/smartlists/?page=1&limit=20&catalogId=-9007199254740991&catalogName=string&creator=user%40example.com&purpose=editorial&is_ai_generated=true&search=string"{
"data": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"title": "string",
"description": "string",
"type": "string",
"publishing_state": "string",
"purpose": [
"string"
],
"is_ai_generated": true,
"creator": "user@example.com",
"item_count": 0,
"published_at": "string",
"created_at": "string",
"updated_at": "string",
"_links": {
"self": "http://example.com",
"assets": "http://example.com"
}
}
],
"pagination": {
"page": 0,
"limit": 0,
"total": 0,
"total_pages": 0
},
"_links": {
"catalogs": "http://example.com"
}
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}Get Smartlist Details
Retrieve complete details for a specific Smartlist, including its full filter configuration. The filter configuration shows exactly which criteria (genres, release years, keywords, moods, ratings, etc.) define which assets belong to this collection.
Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN
In: header
Path Parameters
Unique identifier of the Smartlist (UUID format)
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidResponse Body
curl -X GET "https://apis.prod.vionlabs.com/smartlists/497f6eca-6276-4993-bfeb-53cbbbba6f08"{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"title": "string",
"description": "string",
"type": "string",
"publishing_state": "string",
"purpose": [
"string"
],
"is_ai_generated": true,
"creator": "user@example.com",
"item_count": 0,
"published_at": "string",
"created_at": "string",
"updated_at": "string",
"_links": {
"self": "http://example.com",
"assets": "http://example.com"
},
"catalog": "string",
"filter": {
"property1": null,
"property2": null
}
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}Get Smartlist Assets
Retrieve a paginated list of all assets (movies and TV shows) that belong to a specific Smartlist. Each asset includes its position within the collection. Use pagination to efficiently handle large Smartlists.
Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN
In: header
Path Parameters
Unique identifier of the Smartlist (UUID format)
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidQuery Parameters
Page number for pagination (starts at 1)
11 <= value <= 9007199254740991Number of assets per page (max: 100)
201 <= value <= 100Response Body
curl -X GET "https://apis.prod.vionlabs.com/smartlists/497f6eca-6276-4993-bfeb-53cbbbba6f08/assets?page=1&limit=20"{
"data": [
{
"inventory_id": "string",
"title": "string",
"position": 0
}
],
"pagination": {
"page": 0,
"limit": 0,
"total": 0,
"total_pages": 0
},
"_links": {
"smartlist": "http://example.com"
}
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}List Catalogs
Retrieve a paginated list of all catalogs available to your organization. Use catalog IDs to filter smartlists by specific content catalogs.
Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN
In: header
Query Parameters
Page number for pagination (starts at 1)
11 <= value <= 9007199254740991Number of items per page (max: 100)
201 <= value <= 100Response Body
curl -X GET "https://apis.prod.vionlabs.com/catalogs/?page=1&limit=20"{
"data": [
{
"id": 0,
"name": "string",
"status": "active",
"account": "string",
"created_at": "string",
"updated_at": "string",
"_links": {
"self": "http://example.com",
"smartlists": "http://example.com"
}
}
],
"pagination": {
"page": 0,
"limit": 0,
"total": 0,
"total_pages": 0
},
"_links": {
"smartlists": "http://example.com"
}
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}Get Catalog Details
Retrieve details for a specific catalog by its ID.
Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN
In: header
Path Parameters
Unique identifier of the Catalog (integer)
-9007199254740991 <= value <= 9007199254740991Response Body
curl -X GET "https://apis.prod.vionlabs.com/catalogs/-9007199254740991"{
"id": 0,
"name": "string",
"status": "active",
"account": "string",
"created_at": "string",
"updated_at": "string",
"_links": {
"self": "http://example.com",
"smartlists": "http://example.com"
}
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}List Recipes
Retrieve a paginated list of published Recipes for your organization. Filter by type, creator, or search by title. Use pagination to handle large collections efficiently.
Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN
In: header
Query Parameters
Page number for pagination (starts at 1)
11 <= value <= 9007199254740991Number of items per page (max: 100)
201 <= value <= 100Filter by recipe product type: thumbnails or preview-clips
"thumbnails" | "preview-clips"Filter by creator email address
^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$emailSearch recipes by title (case-insensitive partial match)
Response Body
curl -X GET "https://apis.prod.vionlabs.com/recipes/?page=1&limit=20&type=thumbnails&creator=user%40example.com&search=string"{
"data": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"title": "string",
"description": "string",
"status": "string",
"type": "string",
"creator": "user@example.com",
"catalog": "string",
"test_runs_count": 0,
"published_at": "string",
"created_at": "string",
"updated_at": "string",
"_links": {
"self": "http://example.com"
}
}
],
"pagination": {
"page": 0,
"limit": 0,
"total": 0,
"total_pages": 0
}
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}Get Recipe Details
Retrieve complete details for a specific Recipe, including its full configuration. The configuration shows the parameters and settings used for generating thumbnails or preview clips.
Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN
In: header
Path Parameters
Unique identifier of the Recipe (UUID format)
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidResponse Body
curl -X GET "https://apis.prod.vionlabs.com/recipes/497f6eca-6276-4993-bfeb-53cbbbba6f08"{
"id": "string",
"title": "string",
"description": "string",
"status": "string",
"type": "string",
"creator": "string",
"catalog": "string",
"test_runs_count": 0,
"config": {
"property1": null,
"property2": null
},
"version": 0,
"published_at": "string",
"created_at": "string",
"updated_at": "string",
"_links": {
"self": "string"
}
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}List Creative Assets
Retrieve a paginated list of Creative Assets for your organization. Filter by recipe, asset, status, or type. Use pagination to handle large collections efficiently.
Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN
In: header
Query Parameters
Page number for pagination (starts at 1)
11 <= value <= 9007199254740991Number of items per page (max: 100)
201 <= value <= 100Filter by recipe ID
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidFilter by customer's asset inventory ID
Filter by creative asset type
"thumbnail" | "preview" | "thumbnail-vertical" | "preview-vertical"Response Body
curl -X GET "https://apis.prod.vionlabs.com/creative-assets/?page=1&limit=20&recipeId=497f6eca-6276-4993-bfeb-53cbbbba6f08&inventoryId=string&type=thumbnail"{
"data": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"title": "string",
"type": "string",
"status": "string",
"recipe_id": "fa7d15d4-7670-4586-a94b-5079ed028135",
"recipe_title": "string",
"inventory_id": "string",
"asset_title": "string",
"image_uri": "string",
"image_url": "string",
"small_image_uri": "string",
"small_image_url": "string",
"video_uri": "string",
"video_url": "string",
"logo_data": {
"has_logo": true,
"coordinates": [
0
],
"size": 0,
"logo_image": "string",
"logo_name": "string",
"score": 0
},
"created_at": "string",
"updated_at": "string",
"_links": {
"self": "http://example.com",
"recipe": "http://example.com"
}
}
],
"pagination": {
"page": 0,
"limit": 0,
"total": 0,
"total_pages": 0
}
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}Get Creative Asset Details
Retrieve complete details for a specific Creative Asset, including URIs, asset information, and recipe information.
Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN
In: header
Path Parameters
Unique identifier of the Creative Asset (UUID format)
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidResponse Body
curl -X GET "https://apis.prod.vionlabs.com/creative-assets/497f6eca-6276-4993-bfeb-53cbbbba6f08"{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"title": "string",
"type": "string",
"status": "string",
"recipe_id": "fa7d15d4-7670-4586-a94b-5079ed028135",
"recipe_title": "string",
"inventory_id": "string",
"asset_title": "string",
"image_uri": "string",
"image_url": "string",
"small_image_uri": "string",
"small_image_url": "string",
"video_uri": "string",
"video_url": "string",
"logo_data": {
"has_logo": true,
"coordinates": [
0
],
"size": 0,
"logo_image": "string",
"logo_name": "string",
"score": 0
},
"created_at": "string",
"updated_at": "string",
"_links": {
"self": "http://example.com",
"recipe": "http://example.com"
},
"run_number": 0,
"asset_index": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}{
"error": "string",
"message": "string",
"statusCode": 0
}