Vionlabs Docs

Vionlabs Portal API

External docs:Swagger

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.

Rate Limits

  • 1000 requests per hour per organization
  • Rate limit headers included in all responses

Support

Authentication

All Vionlabs APIs share the same authentication setup. See Authentication for details.

GET
/smartlists/docs

Authorization

BearerAuth
AuthorizationBearer <token>

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"
Empty
GET
/smartlists/docs/{*}

Authorization

BearerAuth
AuthorizationBearer <token>

Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN

In: header

Path Parameters

**string

Response Body

curl -X GET "https://example.com/smartlists/docs/string"
Empty
GET
/portal/docs

Authorization

BearerAuth
AuthorizationBearer <token>

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"
Empty
GET
/portal/docs/{*}

Authorization

BearerAuth
AuthorizationBearer <token>

Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN

In: header

Path Parameters

**string

Response Body

curl -X GET "https://example.com/portal/docs/string"
Empty
GET
/smartlists/openapi.json

Authorization

BearerAuth
AuthorizationBearer <token>

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"
Empty
GET
/smartlists/

Authorization

BearerAuth
AuthorizationBearer <token>

Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN

In: header

Query Parameters

page?integer

Page number for pagination (starts at 1)

Default1
Range1 <= value <= 9007199254740991
limit?integer

Number of items per page (max: 100)

Default20
Range1 <= value <= 100
catalogId?integer

Filter by catalog ID. If not provided, returns smartlists from all accessible catalogs.

Range-9007199254740991 <= value <= 9007199254740991
catalogName?string

Filter by catalog name (exact match). More user-friendly than catalogId since catalog names are visible in the portal.

creator?string

Filter by creator email address

Match^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
Formatemail
purpose?string

Filter by smartlist purpose: editorial (curated collections), creative-lab (marketing campaigns), review-filter (quality control)

Value in"editorial" | "creative-lab" | "review-filter"
is_ai_generated?string

Filter by AI-generated smartlists (true) or manually curated (false)

Value in"true" | "false"
search?string

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
}
GET
/smartlists/{id}

Authorization

BearerAuth
AuthorizationBearer <token>

Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN

In: header

Path Parameters

id*string

Unique identifier of the Smartlist (UUID format)

Match^([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)$
Formatuuid

Response 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
}
GET
/smartlists/{id}/assets

Authorization

BearerAuth
AuthorizationBearer <token>

Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN

In: header

Path Parameters

id*string

Unique identifier of the Smartlist (UUID format)

Match^([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)$
Formatuuid

Query Parameters

page?integer

Page number for pagination (starts at 1)

Default1
Range1 <= value <= 9007199254740991
limit?integer

Number of assets per page (max: 100)

Default20
Range1 <= value <= 100

Response 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
}
GET
/catalogs/

Authorization

BearerAuth
AuthorizationBearer <token>

Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN

In: header

Query Parameters

page?integer

Page number for pagination (starts at 1)

Default1
Range1 <= value <= 9007199254740991
limit?integer

Number of items per page (max: 100)

Default20
Range1 <= value <= 100

Response 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
}
GET
/catalogs/{id}

Authorization

BearerAuth
AuthorizationBearer <token>

Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN

In: header

Path Parameters

id*integer

Unique identifier of the Catalog (integer)

Range-9007199254740991 <= value <= 9007199254740991

Response 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
}
GET
/recipes/

Authorization

BearerAuth
AuthorizationBearer <token>

Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN

In: header

Query Parameters

page?integer

Page number for pagination (starts at 1)

Default1
Range1 <= value <= 9007199254740991
limit?integer

Number of items per page (max: 100)

Default20
Range1 <= value <= 100
type?string

Filter by recipe product type: thumbnails or preview-clips

Value in"thumbnails" | "preview-clips"
creator?string

Filter by creator email address

Match^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
Formatemail
search?string

Search 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
}
GET
/recipes/{id}

Authorization

BearerAuth
AuthorizationBearer <token>

Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN

In: header

Path Parameters

id*string

Unique identifier of the Recipe (UUID format)

Match^([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)$
Formatuuid

Response 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
}
GET
/creative-assets/

Authorization

BearerAuth
AuthorizationBearer <token>

Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN

In: header

Query Parameters

page?integer

Page number for pagination (starts at 1)

Default1
Range1 <= value <= 9007199254740991
limit?integer

Number of items per page (max: 100)

Default20
Range1 <= value <= 100
recipeId?string

Filter by recipe ID

Match^([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)$
Formatuuid
inventoryId?string

Filter by customer's asset inventory ID

type?string

Filter by creative asset type

Value in"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
}
GET
/creative-assets/{id}

Authorization

BearerAuth
AuthorizationBearer <token>

Access token obtained via OAuth 2.0 Client Credentials flow from Stytch. Include as: Authorization: Bearer YOUR_ACCESS_TOKEN

In: header

Path Parameters

id*string

Unique identifier of the Creative Asset (UUID format)

Match^([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)$
Formatuuid

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