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
Get Access Token
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
{
"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
Authorization
BearerAuth 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://example.com/smartlists/docs"Authorization
BearerAuth 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://example.com/smartlists/docs/string"Authorization
BearerAuth 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://example.com/portal/docs"Authorization
BearerAuth 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://example.com/portal/docs/string"Authorization
BearerAuth 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://example.com/smartlists/openapi.json"Authorization
BearerAuth 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
application/json
application/json
application/json
curl -X GET "https://example.com/smartlists/"{
"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
}Authorization
BearerAuth 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
application/json
application/json
application/json
application/json
curl -X GET "https://example.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
}Authorization
BearerAuth 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
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/smartlists/497f6eca-6276-4993-bfeb-53cbbbba6f08/assets"{
"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
}Authorization
BearerAuth 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
application/json
application/json
application/json
curl -X GET "https://example.com/catalogs/"{
"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
}Authorization
BearerAuth 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
application/json
application/json
application/json
application/json
curl -X GET "https://example.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
}Authorization
BearerAuth 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
application/json
application/json
application/json
curl -X GET "https://example.com/recipes/"{
"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
}Authorization
BearerAuth 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
application/json
application/json
application/json
application/json
curl -X GET "https://example.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
}Authorization
BearerAuth 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
application/json
application/json
application/json
curl -X GET "https://example.com/creative-assets/"{
"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",
"start_time": 0,
"stop_time": 0,
"metadata": {
"property1": null,
"property2": null
},
"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
}Authorization
BearerAuth 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
application/json
application/json
application/json
application/json
curl -X GET "https://example.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",
"start_time": 0,
"stop_time": 0,
"metadata": {
"property1": null,
"property2": null
},
"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
}