diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e9d3b74..6c78945 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -9,11 +9,18 @@ jobs:
build-mcp-server:
name: Build MCP Server
runs-on: ubuntu-latest
+
steps:
- - uses: actions/checkout@v5
- - uses: actions/setup-node@v5
+ - name: Checkout
+ uses: actions/checkout@v5
+
+ - name: Setup Node
+ uses: actions/setup-node@v5
+ with:
+ node-version: "22"
+ cache: "yarn"
- - name: Install dependencies
+ - name: Install
run: yarn install --immutable
- name: Build
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
new file mode 100644
index 0000000..a82a071
--- /dev/null
+++ b/.github/workflows/publish.yml
@@ -0,0 +1,35 @@
+name: Publish
+on:
+ push:
+ tags:
+ - "v*"
+
+jobs:
+ publish:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+
+ - name: Setup Node (with npm auth)
+ uses: actions/setup-node@v5
+ with:
+ node-version: "22"
+ cache: "yarn"
+ registry-url: "https://registry.npmjs.org"
+ always-auth: true
+
+ - name: Enable Corepack
+ run: corepack enable
+
+ - name: Install
+ run: yarn install --immutable
+
+ - name: Build
+ run: yarn build
+
+ - name: Publish
+ env:
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
+ run: npm publish --access public
diff --git a/README.md b/README.md
index a68b9cb..a4b4d1b 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,89 @@
-# Plainly MCP server
+# Plainly's Official MCP Server
-## Local configuration
+Implementation of MCP server for [Plainly](https://www.plainlyvideos.com/) in NodeJS. Enables LLM clients to connect and interact with Plainly APIs.
-To configure MCP locally, add `.vscode/mcp.json` like following:
+## 🎥 Demo
+
+
+
+
+
+
+
+## 📋 Prerequisites
+
+- [Node.js](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) **≥ 18** (required)
+- [NPM](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
+- [Plainly Account](https://app.plainlyvideos.com)
+
+## ▶️ How to run (local installation)
+
+1. **Get your Plainly API key**
+
+- Go to [Settings page](https://app.plainlyvideos.com/dashboard/user/settings/general)
+- Create a new API key
+- Copy the new API key
+
+2. **Add config to your editor**
```json
{
"servers": {
- "Plainly": {
+ "plainly": {
+ "command": "npx",
+ "args": ["-y", "@plainly-videos/mcp-server@latest"],
+ "env": {
+ "PLAINLY_API_KEY": ""
+ }
+ }
+ }
+}
+```
+
+## 🛠️ Available tools
+
+- `list_renderable_items` - returns a list of all criteria matching designs and custom projects for authenticated user
+- `get_renderable_items_details` - returns details of a single design or custom project, such as: required and optional parameters, preview links, aspect ratios, etc.
+- `render_item` - submits a render with all needed parameters
+- `check_render_status` - checks the render status and report error or preview links
+
+## 🗣️ Prompts & Resources
+
+This implementation **does not** include `prompts` or `resources` from the MCP specification. However, this may change in the future when there is broader support across popular MCP clients.
+
+## 🚧 Development mode
+
+If you want to run the server in development mode, you can install dependencies and run the server using the following command:
+
+1. Clone, install, and build:
+
+```shell
+git clone git@github.com:plainly-videos/mcp-server.git
+cd mcp-server
+
+yarn install
+yarn build
+```
+
+2. Add your API key in `.vscode/mcp.json`
+
+```json
+{
+ "servers": {
+ "plainly": {
"command": "node",
"args": [""],
"env": {
- "PLAINLY_API_URL": "https://api.test.plainlyvideos.com",
- "PLAINLY_API_KEY": ""
+ "PLAINLY_API_KEY": ""
}
}
}
}
```
+
+3. Start MCP server from `.vscode/mcp.json`
+
+## 📄 Plainly developer resources
+
+- [Help center](https://help.plainlyvideos.com/)
+- [API reference](https://app.plainlyvideos.com/api-reference.html)
diff --git a/package.json b/package.json
index a2dd7aa..3b312f4 100644
--- a/package.json
+++ b/package.json
@@ -1,21 +1,42 @@
{
- "name": "plainly-mcp-server",
+ "name": "@plainly-videos/mcp-server",
"version": "1.0.0",
- "description": "MCP server for video generation platform",
- "type": "module",
- "main": "dist/index.js",
+ "description": "MCP server for Plainly Videos that allows browsing designs and projects, as well as rendering videos.",
+ "license": "MIT",
+ "author": "PlainlyVideos ",
+ "homepage": "https://plainlyvideos.com",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/plainly-videos/mcp-server.git"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "keywords": [
+ "plainly",
+ "plainlyvideos",
+ "mcp",
+ "mcp-server",
+ "modelcontextprotocol",
+ "aftereffects",
+ "video-api",
+ "video-automation"
+ ],
+ "bin": "dist/index.js",
+ "files": [
+ "dist"
+ ],
"scripts": {
"dev": "vite build --watch",
"build": "tsc --noEmit && vite build",
"typecheck": "tsc --noEmit",
"start": "node dist/index.js"
},
- "author": "Daniel Elero ",
- "license": "MIT",
"packageManager": "yarn@4.9.2",
"dependencies": {
"@modelcontextprotocol/sdk": "^1.0.4",
- "axios": "^1.12.2"
+ "axios": "^1.12.2",
+ "zod": "^3.25.76"
},
"devDependencies": {
"@types/node": "^22.10.6",
diff --git a/resources/api-docs.yaml b/resources/api-docs.yaml
deleted file mode 100644
index 52b1f56..0000000
--- a/resources/api-docs.yaml
+++ /dev/null
@@ -1,8069 +0,0 @@
-openapi: 3.1.0
-info:
- contact:
- email: contact@plainlyvideos.com
- description: |
- This is a reference for the **PlainlyVideos REST API**.
-
- You would generally use this API together with [Plainly Web App](https://app.plainlyvideos.com) and primary goal of the REST API is to enable users to render videos on demand using the REST API calls.
- Our API has predictable resource-oriented URLs, accepts JSON-encoded request bodies (if not otherwise specified), returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.
-
- Read the [Developer guide](https://help.plainlyvideos.com/docs/developer-guide) for more information on how to use the API.
-
- ### Authentication
- The API key is needed to authorize requests.
- You can get your API key in the [Settings](https://app.plainlyvideos.com/dashboard/user/settings) section of the Plainly Web App Dashboard.
- To authorize use the API key as the username in the basic HTTP authentication, leaving the password empty.
-
- ### Errors
- Plainly uses conventional HTTP response codes to indicate the success or failure of an API request.
- In general, codes in the `2xx` range indicate success.
- Codes in the `4xx` range indicate an error that failed given the information provided and codes in the `5xx` range indicate an error on our side.
-
- The response body in a case of an error will contain the basic information about the error (message, status, timestamp, etc) and will be JSON-encoded.
- In many cases we will include the `X-PlainlyErrorCode` header in the response, which contains the error code and helps in categorizing errors.
-
- ### Backward compatibility
- API is considered to be in the stable state and we don't expect any breaking changes in the future.
- However, you should regularly check the API documentation for any updates and deprecations.
-
- ### Rate limiting
- The API is rate limited to 400 requests per minute in average (per user).
- We support burst of up to 600 requests in a single minute.
- If you exceed above limits, you will get a `429 Too Many Requests` response, including `Retry-After` and `X-Retry-In` headers, for subsequent requests.
- Note that since the rate limiting is performed on the load balancer level, the response will not have the content type `application/json` and will not contain the usual error information in the response body.
- termsOfService: https://plainlyvideos.com/terms/
- title: PlainlyVideos API V2
- version: 0.19.20.e9e039f4
-servers:
-- description: The API V2 production server.
- url: https://api.plainlyvideos.com
-tags:
-- name: Designs
-- description: "Read the [Projects API developer guide](https://help.plainlyvideos.com/docs/developer-guide/projects-api)\
- \ introduction on managing projects using the API."
- name: Projects
-- description: "Read the [Templates API developer guide](https://help.plainlyvideos.com/docs/developer-guide/templates-api)\
- \ introduction on managing templates using the API."
- name: Templates
-- description: "Read the [Renders API developer guide](https://help.plainlyvideos.com/docs/developer-guide/renders-api)\
- \ introduction on managing renders using the API."
- name: Renders
-- name: VideoGenius / Brands
-- name: VideoGenius / Articles
-- name: VideoGenius / Videos
-- name: Utilities
-- name: Apps
-paths:
- /api/v2/apps/twitter:
- post:
- deprecated: true
- description: Renders a Twitter based design using the integration that automatically
- fetches the tweet data.
- operationId: render_1
- requestBody:
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/TwitterAppDto"
- required: true
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedRender"
- description: Render created.
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - APP_DESIGN_NOT_SUPPORTED
- - APP_TWITTER_TWEET_URL_NOT_VALID
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - DESIGN_VARIANT_DOES_NOT_EXIST
- - DESIGN_DOES_NOT_EXIST
- - APP_TWITTER_TWEET_NOT_FOUND
- style: simple
- "502":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad gateway.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - APP_TWITTER_GATEWAY_ERROR
- style: simple
- security:
- - ApiKey: []
- summary: Twitter
- tags:
- - Apps
- /api/v2/designs:
- get:
- description: Gets all the available designs.
- operationId: getDesigns
- responses:
- "200":
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: "#/components/schemas/Design"
- description: Returns a list of all available designs.
- "400":
- description: Bad Request
- security:
- - ApiKey: []
- summary: List All Designs
- tags:
- - Designs
- post:
- description: Renders a design.
- operationId: renderDesign
- requestBody:
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DesignRenderDto"
- required: true
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedRender"
- description: Render created.
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - DESIGN_DOES_NOT_EXIST
- - DESIGN_VARIANT_DOES_NOT_EXIST
- - RENDER_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Render Design
- tags:
- - Designs
- /api/v2/designs/{designId}:
- get:
- description: Gets a specific design by its ID.
- operationId: getDesign
- parameters:
- - in: path
- name: designId
- required: true
- schema:
- $ref: "#/components/schemas/DesignIds"
- description: The ID of a design.
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Design"
- description: Successfully retrieved the design.
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - DESIGN_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Get Single Design
- tags:
- - Designs
- /api/v2/me:
- get:
- description: Returns basic info about the organization.
- operationId: getMe
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/MeResponseDto"
- description: Call successful.
- "400":
- description: Bad Request
- security:
- - ApiKey: []
- summary: Organization Info
- tags:
- - Utilities
- /api/v2/projects:
- get:
- description: Returns all projects available for your organization.
- operationId: getAll_2
- responses:
- "200":
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: "#/components/schemas/DestructedProject"
- minItems: 0
- uniqueItems: true
- minItems: 0
- uniqueItems: true
- description: Call successful.
- "400":
- description: Bad Request
- security:
- - ApiKey: []
- summary: List All Projects
- tags:
- - Projects
- post:
- description: "Creates a new project. Please check the [following guidelines](https://help.plainlyvideos.com/docs/user-guide/projects)\
- \ in order to learn how to prepare your project files for the upload."
- operationId: createFromUpload
- requestBody:
- content:
- multipart/form-data:
- schema:
- type: object
- properties:
- aeVersion:
- type: string
- default: AE2025
- description: "The After Effects version of the project. Used as\
- \ a preliminary processing reference, the project analysis will\
- \ ensure correct project version is detected anyway."
- enum:
- - AE2023_AMD64
- - AE2024
- - AE2025
- description:
- type: string
- description: The description of the project
- file:
- type: string
- format: binary
- description: The project ZIP file to upload. Maximum size 300 MB.
- folder:
- type: string
- description: "The folder where the project will be stored. If not\
- \ provided, the project will be findable in the root folder on\
- \ the UI. The format should be `/folder/sub-folder`, where `/`\
- \ is a separator. If you want to create a root folder, use `/`\
- \ as a value. Only alphanumeric characters, spaces, underscores,\
- \ hyphens and slashes are allowed."
- example: /My_folder/Example subfolder
- name:
- type: string
- description: The name of the project
- tags:
- type: array
- items:
- type: string
- description: "The tags of the project. Note that since this endpoint\
- \ consumes `multipart/form-data`, multiple tags should be defined\
- \ as `tag1,tag2`."
- minItems: 0
- uniqueItems: true
- responses:
- "201":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedProject"
- description: Call successful.
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_UPLOAD_AEP_FILE_DUPLICATE
- - PROJECT_UPLOAD_AEP_FILE_NOT_FOUND
- - PROJECT_UPLOAD_AEP_FILE_EMPTY
- - PROJECT_UPLOAD_CHAR_ENCODING_WRONG
- - PROJECT_UPLOAD_ASSET_PATH_WRONG
- - PROJECT_UPLOAD_PROCESSING_FAILED
- - PROJECT_UPLOAD_ZIP_FILE_INVALID
- style: simple
- security:
- - ApiKey: []
- summary: Create Project
- tags:
- - Projects
- /api/v2/projects/upgrade-all:
- post:
- description: |2-
- Requests upgrade for all projects within organization, in order to switch to the latest After Effects version.
-
- > NOTE: Upgrade errors are silently ignored for projects that can't be upgraded or are already upgraded.
- operationId: upgradeAll
- responses:
- "200":
- description: Call successful.
- "400":
- description: Bad Request
- security:
- - ApiKey: []
- summary: Upgrade All Projects
- tags:
- - Projects
- /api/v2/projects/{projectId}:
- delete:
- description: Deletes an existing project.
- operationId: delete_1
- parameters:
- - description: The ID of a project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: projectId
- required: true
- schema:
- type: string
- responses:
- "201":
- content:
- '*/*':
- schema:
- type: object
- description: Call successful.
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_NOT_ANALYZED
- - PROJECT_HAS_ACTIVE_RENDERS
- - PROJECT_ANALYSIS_PENDING
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Delete Project
- tags:
- - Projects
- get:
- description: Returns a project by ID.
- operationId: getOne_1
- parameters:
- - description: The ID of a project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: projectId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedProject"
- description: Call successful.
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Get Single Project
- tags:
- - Projects
- post:
- description: |
- Edit an existing project. Please check the [following guidelines](https://help.plainlyvideos.com/docs/user-guide/projects) in order to learn how to prepare your project files for the upload.
- operationId: edit
- parameters:
- - description: The ID of a project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: projectId
- required: true
- schema:
- type: string
- requestBody:
- content:
- multipart/form-data:
- schema:
- type: object
- properties:
- aeVersion:
- type: string
- default: AE2025
- description: "The After Effects version of the updated project.\
- \ Used as a preliminary processing reference, the project analysis\
- \ will ensure correct project version is detected anyway."
- enum:
- - AE2022
- - AE2023_AMD64
- - AE2024
- - AE2025
- description:
- type: string
- description: The description of the project
- file:
- type: string
- format: binary
- description: The project ZIP file to upload. Maximum size 300 MB.
- folder:
- type: string
- description: "The folder where the project will be stored. If not\
- \ provided, the project will be findable in the root folder on\
- \ the UI. The format should be `/folder/sub-folder`, where `/`\
- \ is a separator. If you want to create a root folder, use `/`\
- \ as a value. Only alphanumeric characters, spaces, underscores,\
- \ hyphens and slashes are allowed."
- example: /My_folder/Example subfolder
- name:
- type: string
- description: The name of the project
- strictFontChecks:
- type: string
- description: "Controls the strictness of the font checks during\
- \ the rendering. If set to `ENABLED`, the render will fail if\
- \ the font can't support the characters in the text. If set to\
- \ `DISABLED`, the render will continue, but the text will be rendered\
- \ with a fallback font."
- enum:
- - DEFAULT
- - ENABLED
- - DISABLED
- tags:
- type: array
- items:
- type: string
- description: "The tags of the project. Note that since this endpoint\
- \ consumes `multipart/form-data`, multiple tags should be defined\
- \ as `tag1,tag2`."
- minItems: 0
- uniqueItems: true
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedProject"
- description: Call successful.
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_UPLOAD_AEP_FILE_DUPLICATE
- - PROJECT_UPLOAD_AEP_FILE_NOT_FOUND
- - PROJECT_UPLOAD_AEP_FILE_EMPTY
- - PROJECT_UPLOAD_CHAR_ENCODING_WRONG
- - PROJECT_UPLOAD_ASSET_PATH_WRONG
- - PROJECT_UPLOAD_PROCESSING_FAILED
- - PROJECT_UPLOAD_ZIP_FILE_INVALID
- - PROJECT_NOT_ANALYZED
- - PROJECT_RE_UPLOAD_HAS_ACTIVE_RENDERS
- - PROJECT_ANALYSIS_PENDING
- style: simple
- "500":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Internal server error.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_RE_UPLOAD_BACKUP_FAILED
- style: simple
- security:
- - ApiKey: []
- summary: Edit Project
- tags:
- - Projects
- /api/v2/projects/{projectId}/meta:
- get:
- description: Returns a project metadata defined by Plainly project analysis.
- operationId: getProjectMetaData
- parameters:
- - description: The ID of a project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: projectId
- required: true
- schema:
- type: string
- - description: If the results should be returned in tree or flat fashion. Note
- that `flatten` option is currently in beta.
- example: tree
- in: query
- name: responseType
- required: false
- schema:
- type: string
- default: tree
- enum:
- - tree
- - flatten
- pattern: tree|flatten
- - in: header
- name: If-None-Match
- required: false
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- example:
- - type: COMPOSITION
- internalId: "13251"
- name: Big Sale Promotion
- id: 13251
- duration: 5
- workAreaStart: 0
- width: 720
- height: 720
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- children:
- - type: TEXT
- internalId: "25894"
- name: EDIT-color-1(Yellow Default)
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: FFEA63
- font: Poppins-Black
- fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf
- fontStyle: Black
- fontFamily: Poppins
- fontSize: 18
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- isParagraph: false
- allCaps: false
- leading: 21.6000003814697
- tracking: 0
- - type: TEXT
- internalId: "25892"
- name: EDIT-color-2(Bright Blue Default)
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: 0065F2
- font: Poppins-Black
- fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf
- fontStyle: Black
- fontFamily: Poppins
- fontSize: 18
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- isParagraph: false
- allCaps: false
- leading: 21.6000003814697
- tracking: 0
- - type: TEXT
- internalId: "25903"
- name: EDIT-color-3(Dark Blue Default)
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: 00274A
- font: Poppins-Black
- fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf
- fontStyle: Black
- fontFamily: Poppins
- fontSize: 18
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- isParagraph: false
- allCaps: false
- leading: 21.6000003814697
- tracking: 0
- - type: TEXT
- internalId: "25905"
- name: EDIT-color-top-text(Dark Blue Default)
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: 00274A
- font: Poppins-Black
- fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf
- fontStyle: Black
- fontFamily: Poppins
- fontSize: 18
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- isParagraph: false
- allCaps: false
- leading: 21.6000003814697
- tracking: 0
- - type: TEXT
- internalId: "25899"
- name: EDIT-color-mid-text(White Default)
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: FFFFFF
- font: Poppins-Black
- fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf
- fontStyle: Black
- fontFamily: Poppins
- fontSize: 18
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- isParagraph: false
- allCaps: false
- leading: 21.6000003814697
- tracking: 0
- - type: TEXT
- internalId: "25907"
- name: EDIT-color-bot-text(White Default)
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: FFFFFF
- font: Poppins-Black
- fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf
- fontStyle: Black
- fontFamily: Poppins
- fontSize: 18
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- isParagraph: false
- allCaps: false
- leading: 21.6000003814697
- tracking: 0
- - type: MEDIA
- internalId: "25893"
- name: color-1-solid
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: "#2e4fe7"
- width: 1920
- height: 1080
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: false
- shy: true
- effects: []
- - type: MEDIA
- internalId: "25891"
- name: color-2-solid
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: "#2e4fe7"
- width: 1920
- height: 1080
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: false
- shy: true
- effects: []
- - type: MEDIA
- internalId: "25898"
- name: color-3-solid
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: "#2e4fe7"
- width: 1920
- height: 1080
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: false
- shy: true
- effects: []
- - type: MEDIA
- internalId: "25902"
- name: color-4-solid
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: "#2e4fe7"
- width: 1920
- height: 1080
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: false
- shy: true
- effects: []
- - type: MEDIA
- internalId: "25904"
- name: color-5-solid
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: "#2e4fe7"
- width: 1920
- height: 1080
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: false
- shy: true
- effects: []
- - type: MEDIA
- internalId: "25906"
- name: color-6-solid
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: "#2e4fe7"
- width: 1920
- height: 1080
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: false
- shy: true
- effects: []
- - type: COMPOSITION
- internalId: "25452"
- name: discount ammount
- startTime: 0
- inPoint: 0
- outPoint: 5.06666666666667
- layerName: discount ammount
- id: 25452
- duration: 7.04037370704037
- workAreaStart: 0
- width: 288
- height: 65
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- children:
- - type: MEDIA
- internalId: "25880"
- name: boundingBox
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: "#848484"
- width: 250
- height: 500
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: false
- shy: true
- effects: []
- - type: TEXT
- internalId: "25454"
- name: EDIT-discount ammount
- startTime: 0
- inPoint: 0
- outPoint: 7.04037370704037
- value: 30% oFF ON EVERYTHING
- font: Poppins-Black
- fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf
- fontStyle: Black
- fontFamily: Poppins
- fontSize: 67
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- isParagraph: false
- allCaps: true
- leading: 80.4000015258789
- tracking: 0
- - type: COMPOSITION
- internalId: "25438"
- name: mid text
- startTime: 0
- inPoint: 0
- outPoint: 5.06666666666667
- layerName: mid text
- id: 25438
- duration: 7.04037370704037
- workAreaStart: 0
- width: 288
- height: 65
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- children:
- - type: MEDIA
- internalId: "25884"
- name: boundingBox
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: "#848484"
- width: 250
- height: 500
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: false
- shy: true
- effects: []
- - type: TEXT
- internalId: "25440"
- name: EDIT-mid text
- startTime: 0
- inPoint: 0
- outPoint: 7.04037370704037
- value: SALE
- font: Poppins-Black
- fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf
- fontStyle: Black
- fontFamily: Poppins
- fontSize: 67
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- isParagraph: false
- allCaps: true
- leading: 80.4000015258789
- tracking: 0
- - type: COMPOSITION
- internalId: "25403"
- name: type of sale
- startTime: 0
- inPoint: 0
- outPoint: 5.06666666666667
- layerName: type of sale
- id: 25403
- duration: 7.04037370704037
- workAreaStart: 0
- width: 288
- height: 65
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- children:
- - type: MEDIA
- internalId: "25882"
- name: boundingBox
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: "#848484"
- width: 250
- height: 500
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: false
- shy: true
- effects: []
- - type: TEXT
- internalId: "25426"
- name: EDIT-type of sale
- startTime: 0
- inPoint: 0
- outPoint: 7.04037370704037
- value: END OF YEAR
- font: Poppins-Black
- fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf
- fontStyle: Black
- fontFamily: Poppins
- fontSize: 67
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- isParagraph: false
- allCaps: true
- leading: 80.4000015258789
- tracking: 0
- - type: MEDIA
- internalId: "25401"
- name: EDIT-color-bg
- startTime: 0
- inPoint: 0
- outPoint: 5.06666666666667
- value: "#ffffff"
- width: 800
- height: 800
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- effects: []
- - type: COMPOSITION
- internalId: "26046"
- name: Insta Story Last Piece Promo
- id: 26046
- duration: 5.00500500500501
- workAreaStart: 0
- width: 720
- height: 1280
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- children:
- - type: COMPOSITION
- internalId: "26096"
- name: product name comp
- startTime: 1.13446780113447
- inPoint: 1.13446780113447
- outPoint: 6.13947280613947
- layerName: product name comp
- id: 26096
- duration: 5.00500500500501
- workAreaStart: 0
- width: 720
- height: 106
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- children:
- - type: MEDIA
- internalId: "26173"
- name: boundingBox
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: "#848484"
- width: 250
- height: 500
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: false
- shy: true
- effects: []
- - type: TEXT
- internalId: "26108"
- name: edit_product
- startTime: 0
- inPoint: 0
- outPoint: 5
- value: BIG SALEEEEEE
- font: Poppins-Black
- fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf
- fontStyle: Black
- fontFamily: Poppins
- fontSize: 93.8000030517578
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- isParagraph: false
- allCaps: true
- leading: 48.6004104614258
- tracking: 50
- - type: COMPOSITION
- internalId: "26120"
- name: cta comp
- startTime: 1.6016016016016
- inPoint: 1.6016016016016
- outPoint: 6.60660660660661
- layerName: cta comp
- id: 26120
- duration: 5.00500500500501
- workAreaStart: 0
- width: 455
- height: 72
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- children:
- - type: MEDIA
- internalId: "26175"
- name: boundingBox
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: "#848484"
- width: 250
- height: 500
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: false
- shy: true
- effects: []
- - type: TEXT
- internalId: "26131"
- name: EDIT-cta
- startTime: 0
- inPoint: 0
- outPoint: 5
- value: LAst piece
- font: Poppins-Black
- fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf
- fontStyle: Black
- fontFamily: Poppins
- fontSize: 64.0999984741211
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- isParagraph: false
- allCaps: true
- leading: 76.9199981689453
- tracking: 50
- - type: COMPOSITION
- internalId: "26144"
- name: price short comp
- startTime: 2.16883550216884
- inPoint: 2.16883550216884
- outPoint: 7.17384050717384
- layerName: price short comp
- id: 26144
- duration: 5.00500500500501
- workAreaStart: 0
- width: 160
- height: 72
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- children:
- - type: MEDIA
- internalId: "26169"
- name: boundingBox
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: "#848484"
- width: 250
- height: 500
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: false
- shy: true
- effects: []
- - type: TEXT
- internalId: "26154"
- name: EDIT-price short
- startTime: 0
- inPoint: 0
- outPoint: 5
- value: $99
- font: Poppins-Black
- fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf
- fontStyle: Black
- fontFamily: Poppins
- fontSize: 67
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- isParagraph: false
- allCaps: false
- leading: 34.6179695129395
- tracking: 0
- - type: MEDIA
- internalId: "26095"
- name: Null 5
- startTime: 0
- inPoint: 0
- outPoint: 5
- value: "#ffffff"
- width: 100
- height: 100
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: false
- shy: false
- effects: []
- - type: MEDIA
- internalId: "26091"
- name: edit_image
- startTime: 0
- inPoint: 0
- outPoint: 5
- value: (Footage)/Assets/pexels-robert-bogdan-910122.jpg
- width: 1732
- height: 1155
- mediaType: IMAGE
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- effects:
- - type: EFFECT_CHECKBOX_CONTROL
- name: STC - Scale to Fit (Maintain Ratio)
- propertyName: Effects.STC - Scale to Fit (Maintain Ratio).Checkbox
- value: 1
- keyframeValues: []
- - type: EFFECT_CHECKBOX_CONTROL
- name: STC - Scale to Fill
- propertyName: Effects.STC - Scale to Fill.Checkbox
- value: 1
- keyframeValues: []
- - type: EFFECT_CHECKBOX_CONTROL
- name: STC - Restore Original Size
- propertyName: Effects.STC - Restore Original Size.Checkbox
- value: 0
- keyframeValues: []
- - type: EFFECT_CHECKBOX_CONTROL
- name: STC - Bypass
- propertyName: Effects.STC - Bypass.Checkbox
- value: 0
- keyframeValues: []
- preview:
- link: https://storage.googleapis.com/plainlyvideos-user-projects-test/0c83ea04-2728-4e89-b50c-c9825786a25a/%28Footage%29/Assets/pexels-robert-bogdan-910122.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=plainly-backend-signer-sa%40plainly-test.iam.gserviceaccount.com%2F20250811%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250811T101904Z&X-Goog-Expires=3600&X-Goog-SignedHeaders=host&X-Goog-Signature=5d8f6c8c7859221b0405e8393cd0fdf0527caae0d23929e82a9f6dfb904766c2b13e5ed8ad63f0d21b7c1b7f3011347ea890e62d080dbd16096480e148287100b0a8e4e2c0890a2401013dbff36511c548c592868cfd058692fccdac57d7e27bf4d4c16ba93a4fc543a257cd2bac2cb786862b75ee04ffb910a4d288f991c6fd38f7b1e0ac25f6ac51b873b66563dc97e9cb4bbebd76f9d2ac019daeb1c186c2bd1151265bacb79564db15743d64d412810dcd1cc946a68357096b64fad176314f37b61e50b32f8f4684c47bd33476513de81103c90dd7756df8f30be5e908f561f2139a8eba607d4c910a05efbc065929f5b353dd5c7e75f3fb738abac9d88a
- expiresAt: 2025-08-11T11:19:04.328587098Z
- internal: false
- - type: COMPOSITION
- internalId: "16215"
- name: Single Product Promo
- id: 16215
- duration: 6.03333333333333
- workAreaStart: 0
- width: 720
- height: 720
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- children:
- - type: COMPOSITION
- internalId: "25984"
- name: discount comp
- startTime: 1.36
- inPoint: 1.36
- outPoint: 6.04
- layerName: discount comp
- id: 25984
- duration: 4.68
- workAreaStart: 0
- width: 1080
- height: 194
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- children:
- - type: MEDIA
- internalId: "26045"
- name: boundingBox
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: "#848484"
- width: 250
- height: 500
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: false
- shy: true
- effects: []
- - type: TEXT
- internalId: "26001"
- name: EDIT-discount
- startTime: -0.72
- inPoint: 0
- outPoint: 4.68
- value: 30% OFF
- font: Poppins-Black
- fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf
- fontStyle: Black
- fontFamily: Poppins
- fontSize: 266
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- isParagraph: false
- allCaps: true
- leading: 25.0997009277344
- tracking: 0
- - type: COMPOSITION
- internalId: "26013"
- name: price comp
- startTime: 0.72
- inPoint: 0.72
- outPoint: 6.04
- layerName: price comp
- id: 26013
- duration: 5.32
- workAreaStart: 0
- width: 1080
- height: 228
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- children:
- - type: MEDIA
- internalId: "26043"
- name: boundingBox
- startTime: 0
- inPoint: 0
- outPoint: 60
- value: "#848484"
- width: 250
- height: 500
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: false
- shy: true
- effects: []
- - type: TEXT
- internalId: "26028"
- name: EDIT-price
- startTime: -0.72
- inPoint: 0
- outPoint: 5.32
- value: "$199,99"
- font: Poppins-Black
- fontLocation: C:\Program Files\Common Files\Adobe\Fonts\Poppins-Black.ttf
- fontStyle: Black
- fontFamily: Poppins
- fontSize: 266
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- isParagraph: false
- allCaps: false
- leading: 31.9737205505371
- tracking: 0
- - type: COMPOSITION
- internalId: "25942"
- name: product pic comp
- startTime: 0
- inPoint: 0
- outPoint: 6.04
- layerName: product pic comp
- id: 25942
- duration: 6.04
- workAreaStart: 0
- width: 500
- height: 500
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- children:
- - type: MEDIA
- internalId: "25954"
- name: EDIT-example 2 product pic
- startTime: 0
- inPoint: 0
- outPoint: 6.04
- value: (Footage)/Assets/generic%20keyboard.jpg
- width: 500
- height: 500
- mediaType: IMAGE
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- effects:
- - type: EFFECT_CHECKBOX_CONTROL
- name: STC - Scale to Fit (Maintain Ratio)
- propertyName: Effects.STC - Scale to Fit (Maintain Ratio).Checkbox
- value: 1
- keyframeValues: []
- - type: EFFECT_CHECKBOX_CONTROL
- name: STC - Scale to Fill
- propertyName: Effects.STC - Scale to Fill.Checkbox
- value: 1
- keyframeValues: []
- - type: EFFECT_CHECKBOX_CONTROL
- name: STC - Restore Original Size
- propertyName: Effects.STC - Restore Original Size.Checkbox
- value: 0
- keyframeValues: []
- - type: EFFECT_CHECKBOX_CONTROL
- name: STC - Bypass
- propertyName: Effects.STC - Bypass.Checkbox
- value: 0
- keyframeValues: []
- preview:
- link: https://storage.googleapis.com/plainlyvideos-user-projects-test/0c83ea04-2728-4e89-b50c-c9825786a25a/%28Footage%29/Assets/generic%20keyboard.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=plainly-backend-signer-sa%40plainly-test.iam.gserviceaccount.com%2F20250811%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250811T101904Z&X-Goog-Expires=3600&X-Goog-SignedHeaders=host&X-Goog-Signature=915cd5e63f1bb65f8505fb2f648ebc67806ed4b7a466ea746753a8151b021d01c40ec9238c774375625887e827a5e828837d68f061124e0df33d2f56b52cea1e47de5aec955716dcd39e6f9385be152fd9e8a2c5b94e8a9d88031f704475d40b3b68b93d2d806f7128aa7e1f254bbd52d12467202fad3904c22eb0398532f5e6d89627f82a67edec461ea12092d3c77e24842254d846de798e3566fcfd9655b40b2d71483d9d59b226e43eebd443ee5512d25398eb43fdcea2624e60065c1addead7edd47337376a8b9989e306c78d49cdb987dd5a8ca384e1ef2db0b712d33d036ebdbac8bc994c3122e69a054fea062684447ff26a75acb6f295affd2beae7
- expiresAt: 2025-08-11T11:19:04.330854605Z
- internal: false
- - type: MEDIA
- internalId: "25910"
- name: bg
- startTime: 0
- inPoint: 0
- outPoint: 6.04
- value: "#00274a"
- width: 800
- height: 800
- mediaType: SOLID
- guideLayer: false
- adjustmentLayer: false
- enabled: true
- shy: false
- effects: []
- schema:
- type: array
- items:
- type: string
- oneOf:
- - $ref: "#/components/schemas/AeItem"
- - $ref: "#/components/schemas/FlattenAeItem"
- description: "Call successful. Note that there are guarantees on the Metadata\
- \ schema, it can change at any time."
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_NOT_ANALYZED
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Get Metadata
- tags:
- - Projects
- /api/v2/projects/{projectId}/reanalyze:
- post:
- description: |-
- Requests project re-analysis in order to confirm project validity for rendering.
-
- > NOTE: Only one re-analysis is allowed per project for the same Plainly platform version.
- operationId: reanalyze
- parameters:
- - description: The ID of a project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: projectId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- '*/*':
- schema:
- $ref: "#/components/schemas/DestructedProject"
- description: Call successful.
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_ANALYSIS_PENDING
- - PROJECT_ANALYSIS_REANALYZE_LIMIT
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Re-analyze Project
- tags:
- - Projects
- /api/v2/projects/{projectId}/share:
- post:
- description: |-
- Controls project sharing via the static links.
-
- > NOTE: This feature is only available for subscriptions on *Team* and *Pro* packages, and during the free trial.
- operationId: share
- parameters:
- - description: The ID of a project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: projectId
- required: true
- schema:
- type: string
- requestBody:
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ProjectShareDto"
- required: true
- responses:
- "200":
- content:
- '*/*':
- schema:
- $ref: "#/components/schemas/DestructedProject"
- description: Call successful.
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - FEATURE_GATING_NOT_ALLOWED
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Share Project
- tags:
- - Projects
- /api/v2/projects/{projectId}/templates:
- post:
- description: Creates a new template in a project.
- operationId: create
- parameters:
- - description: The ID of a project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: projectId
- required: true
- schema:
- type: string
- - description: "The type of response to return. Can be `project` (default) which\
- \ means response will be a project where template is located, or `template`\
- \ which means response will be the template itself."
- in: query
- name: responseType
- required: false
- schema:
- type: string
- enum:
- - project
- - template
- pattern: project|template
- requestBody:
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/CreateTemplateDto"
- required: true
- responses:
- "200":
- content:
- application/json:
- schema:
- type: string
- anyOf:
- - $ref: "#/components/schemas/DestructedProject"
- - $ref: "#/components/schemas/DestructedTemplate"
- description: "Call successful. Returns the project with added template as\
- \ body by default, or template representation if the query param `responseType`\
- \ has value `template`."
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_METADATA_COMPOSITION_DOES_NOT_EXIST
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Create Template
- tags:
- - Templates
- /api/v2/projects/{projectId}/templates/auto-generate:
- post:
- description: Auto creates one or more templates based on provided auto-create
- type and its settings.
- operationId: autoCreateTemplates
- parameters:
- - description: The ID of a project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: projectId
- required: true
- schema:
- type: string
- requestBody:
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/AutoCreateTemplateDto"
- description: The auto-create template settings.
- required: true
- responses:
- "200":
- content:
- application/json:
- schema:
- type: string
- anyOf:
- - $ref: "#/components/schemas/DestructedProject"
- description: "Call successful. Returns the project with all templates, including\
- \ newly created templates as well."
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Auto Create Templates
- tags:
- - Templates
- /api/v2/projects/{projectId}/templates/{templateId}:
- delete:
- description: Deletes a template from a project.
- operationId: delete
- parameters:
- - description: The ID of a project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: projectId
- required: true
- schema:
- type: string
- - description: The ID of a template.
- example: 1b2081db-9881-4b2d-bde9-41d167d94e8e
- in: path
- name: templateId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedProject"
- description: Call successful. Returns the updated project as body.
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_DOES_NOT_EXIST
- - PROJECT_TEMPLATE_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Delete Template
- tags:
- - Templates
- get:
- description: Returns a template from a project by Project ID and Template ID.
- operationId: get
- parameters:
- - description: The ID of a project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: projectId
- required: true
- schema:
- type: string
- - description: The ID of a template.
- example: 1b2081db-9881-4b2d-bde9-41d167d94e8e
- in: path
- name: templateId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedTemplate"
- description: Call successful. Returns the template as body.
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_DOES_NOT_EXIST
- - PROJECT_TEMPLATE_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Get Single Template
- tags:
- - Templates
- put:
- description: Updates a new template in a project.
- operationId: update
- parameters:
- - description: The ID of a project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: projectId
- required: true
- schema:
- type: string
- - description: The ID of a template.
- example: 1b2081db-9881-4b2d-bde9-41d167d94e8e
- in: path
- name: templateId
- required: true
- schema:
- type: string
- - description: "The type of response to return. Can be `project` (default) which\
- \ means response will be a project where template is located, or `template`\
- \ which means response will be the template itself."
- in: query
- name: responseType
- required: false
- schema:
- type: string
- enum:
- - project
- - template
- pattern: project|template
- requestBody:
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/UpdateTemplateDto"
- required: true
- responses:
- "200":
- content:
- application/json:
- schema:
- type: string
- anyOf:
- - $ref: "#/components/schemas/DestructedProject"
- - $ref: "#/components/schemas/DestructedTemplate"
- description: "Call successful. Returns the project with added template as\
- \ body by default, or template representation if the query param `responseType`\
- \ has value `template`."
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_METADATA_COMPOSITION_DOES_NOT_EXIST
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_DOES_NOT_EXIST
- - PROJECT_TEMPLATE_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Update Template
- tags:
- - Templates
- /api/v2/projects/{projectId}/templates/{templateId}/clone:
- post:
- description: Clones a template in a project.
- operationId: cloneTemplate
- parameters:
- - description: The ID of a project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: projectId
- required: true
- schema:
- type: string
- - description: The ID of a template.
- example: 1b2081db-9881-4b2d-bde9-41d167d94e8e
- in: path
- name: templateId
- required: true
- schema:
- type: string
- - description: "The type of response to return. Can be `project` (default) which\
- \ means response will be a project where template is located, or `template`\
- \ which means response will be the template itself."
- in: query
- name: responseType
- required: false
- schema:
- type: string
- enum:
- - project
- - template
- pattern: project|template
- responses:
- "200":
- content:
- application/json:
- schema:
- type: string
- anyOf:
- - $ref: "#/components/schemas/DestructedProject"
- - $ref: "#/components/schemas/DestructedTemplate"
- description: "Call successful. Returns the project with added template as\
- \ body by default, or template representation if the query param `responseType`\
- \ has value `template`."
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_DOES_NOT_EXIST
- - PROJECT_TEMPLATE_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Clone Template
- tags:
- - Templates
- /api/v2/projects/{projectId}/templates/{templateId}/default:
- post:
- description: Sets a template in a project as default.
- operationId: setDefault
- parameters:
- - description: The ID of a project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: projectId
- required: true
- schema:
- type: string
- - description: The ID of a template.
- example: 1b2081db-9881-4b2d-bde9-41d167d94e8e
- in: path
- name: templateId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedProject"
- description: Call successful. Returns the project with added template as
- body.
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_DOES_NOT_EXIST
- - PROJECT_TEMPLATE_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Set Default
- tags:
- - Templates
- /api/v2/projects/{projectId}/templates/{templateId}/options:
- post:
- description: Sets a template default rendering options.
- operationId: setOptions
- parameters:
- - description: The ID of a project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: projectId
- required: true
- schema:
- type: string
- - description: The ID of a template.
- example: 1b2081db-9881-4b2d-bde9-41d167d94e8e
- in: path
- name: templateId
- required: true
- schema:
- type: string
- - description: "The type of response to return. Can be `project` (default) which\
- \ means response will be a project where template is located, or `template`\
- \ which means response will be the template itself."
- in: query
- name: responseType
- required: false
- schema:
- type: string
- enum:
- - project
- - template
- pattern: project|template
- requestBody:
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/RenderOptionsDto"
- required: true
- responses:
- "200":
- content:
- application/json:
- schema:
- type: string
- anyOf:
- - $ref: "#/components/schemas/DestructedProject"
- - $ref: "#/components/schemas/DestructedTemplate"
- description: "Call successful. Returns the project with added template as\
- \ body by default, or template representation if the query param `responseType`\
- \ has value `template`."
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_DOES_NOT_EXIST
- - PROJECT_TEMPLATE_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Update Options
- tags:
- - Templates
- /api/v2/projects/{projectId}/upgrade:
- post:
- description: Requests project upgrade in order to switch to the latest After
- Effects version.
- operationId: upgrade
- parameters:
- - description: The ID of a project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: projectId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- '*/*':
- schema:
- $ref: "#/components/schemas/DestructedProject"
- description: Call successful.
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_ANALYSIS_PENDING
- - PROJECT_NOT_ANALYZED
- - PROJECT_UPGRADE_ALREADY_FAILED
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: The project with given ID does not exist.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Upgrade Project
- tags:
- - Projects
- /api/v2/renders:
- get:
- description: "Returns all renders available for your organization, optionally\
- \ filtered by project and/or template."
- operationId: get_1
- parameters:
- - description: The ID of a project to return renders for (optional).
- example: 3934539a-d7f1-4308-a33c-ca523c0c916a
- in: query
- name: projectId
- required: false
- schema:
- type: string
- - description: "The ID of a template to return renders for (optional). Note\
- \ that if `projectId` is given, the provided `templateId` must be a part\
- \ of the given project."
- example: 0fade64c-588e-44c2-a9ea-d7435372cbfb
- in: query
- name: templateId
- required: false
- schema:
- type: string
- - description: Filters the returned renders by the given state (optional).
- example: DONE
- in: query
- name: state
- required: false
- schema:
- type: string
- description: |
- The state of the render, which can be one of the following:
-
- * `PENDING` - The render is successfully created and pending for processing.
- * `THROTTLED` - The render has been throttled temporary due to concurrent render limits.
- * `QUEUED` - The render is submitted to a rendering queue.
- * `IN_PROGRESS` - The render is currently being processed on a rendering worker node.
- * `DONE` - The render is successfully finalized and the output video is ready for download.
- * `FAILED` - The render process failed on a rendering worker node.
- * `INVALID` - The render has not been created successfully, as the input data is invalid.
- * `CANCELLED` - The render has been canceled on a user request.
- enum:
- - PENDING
- - THROTTLED
- - QUEUED
- - IN_PROGRESS
- - DONE
- - FAILED
- - INVALID
- - CANCELLED
- - description: Filters the returned renders by the webhook delivery status (optional).
- example: FAILURE
- in: query
- name: webhookStatus
- required: false
- schema:
- type: string
- enum:
- - PENDING
- - RETRYING
- - IGNORED
- - FAILURE
- - SUCCESS
- - description: The number of items to return per page.
- example: 20
- in: query
- name: size
- schema:
- type: string
- - description: The zero-indexed page number to return.
- example: 1
- in: query
- name: page
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: "#/components/schemas/DestructedRender"
- minItems: 0
- uniqueItems: true
- minItems: 0
- uniqueItems: true
- description: Call successful.
- "400":
- description: Bad Request
- security:
- - ApiKey: []
- summary: List All Renders
- tags:
- - Renders
- post:
- description: Invokes a new render generation.
- operationId: render
- requestBody:
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ProjectRenderDto"
- required: true
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedRender"
- description: Render created.
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - RENDER_PROJECT_NOT_UPLOADED
- - RENDER_PROJECT_NOT_ANALYZED
- - RENDER_PROJECT_NOT_TEMPLATED
- - RENDER_SCRIPTS_SCENE_MANAGEMENT_TOO_MANY_SCENES
- - RENDER_SCRIPTS_SCENE_MANAGEMENT_PARAMETER_INVALID
- - RENDER_SCRIPTS_SCENE_MANAGEMENT_PARAMETER_MISSING
- - RENDER_SCRIPTS_IMAGE_SEQUENCE_PARAMETER_INVALID
- - RENDER_SCRIPTS_IMAGE_SEQUENCE_PARAMETER_EMPTY
- - RENDER_OUTPUT_MODULE_NOT_SUPPORTED_BY_AFTER_EFFECTS_VERSION
- - RENDER_SETTINGS_TEMPLATE_NOT_SUPPORTED_BY_AFTER_EFFECTS_VERSION
- - RENDER_INPUT_SOLID_COLOR_NOT_VALID
- - RENDER_INPUT_EFFECT_COLOR_CONTROL_NOT_VALID
- - RENDER_INPUT_EFFECT_SLIDER_CONTROL_NOT_VALID
- - RENDER_INPUT_EFFECT_CHECKBOX_CONTROL_NOT_VALID
- - RENDER_INPUT_EFFECT_POINT_CONTROL_NOT_VALID
- - RENDER_INPUT_EFFECT_DROPDOWN_CONTROL_NOT_VALID
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_DOES_NOT_EXIST
- - PROJECT_TEMPLATE_DOES_NOT_EXIST
- - RENDER_DOES_NOT_EXIST
- style: simple
- "429":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Too many requests.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - RENDER_ORGANIZATION_QUEUE_FULL
- style: simple
- security:
- - ApiKey: []
- summary: New Render
- tags:
- - Renders
- /api/v2/renders/cancel-all:
- post:
- description: |-
- Cancels all not started renders for your organization, optionally filtered by project and/or template.",
-
- NOTE: This request return `HTTP 201` and processes cancellation in async mode.
- operationId: cancelAll
- parameters:
- - description: The ID of a project to cancel renders for (optional).
- example: 3934539a-d7f1-4308-a33c-ca523c0c916a
- in: query
- name: projectId
- required: false
- schema:
- type: string
- - description: "The ID of a template to cancel renders for (optional). Note\
- \ that if `projectId` is given, the provided `templateId` must be a part\
- \ of the given project."
- example: 0fade64c-588e-44c2-a9ea-d7435372cbfb
- in: query
- name: templateId
- required: false
- schema:
- type: string
- responses:
- "201":
- description: Action accepted.
- "400":
- description: Bad Request
- security:
- - ApiKey: []
- summary: Cancel All Renders
- tags:
- - Renders
- /api/v2/renders/search:
- get:
- description: Return all renders for your organization based on the provided
- search term.
- operationId: getBySearchTerm
- parameters:
- - description: The search term to return renders for.
- example: Twitter
- in: query
- name: searchTerm
- required: false
- schema:
- type: string
- - description: The number of items to return per page.
- example: 20
- in: query
- name: size
- schema:
- type: string
- - description: The zero-indexed page number to return.
- example: 1
- in: query
- name: page
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: "#/components/schemas/DestructedRender"
- minItems: 0
- uniqueItems: true
- minItems: 0
- uniqueItems: true
- description: Call successful.
- "400":
- description: Bad Request
- security:
- - ApiKey: []
- summary: Search Renders
- tags:
- - Renders
- /api/v2/renders/{renderId}:
- delete:
- description: Deletes an existing and processed render.
- operationId: delete_2
- parameters:
- - description: The ID of a render.
- example: 36fea4a1-934b-47c2-8151-875481055ffb
- in: path
- name: renderId
- required: true
- schema:
- type: string
- - description: "When set to `true`, the render assets like video and thumbnails\
- \ will be kept available until the end of the rentention period."
- example: true
- in: query
- name: skipAssets
- required: false
- schema:
- type: boolean
- responses:
- "201":
- content:
- '*/*':
- schema:
- type: object
- description: Call successful.
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - RENDER_NOT_FINISHED
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - RENDER_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Delete Render
- tags:
- - Renders
- get:
- description: Return a render by its ID.
- operationId: getOne_4
- parameters:
- - description: The ID of a render.
- example: 36fea4a1-934b-47c2-8151-875481055ffb
- in: path
- name: renderId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedRender"
- description: Call successful.
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - RENDER_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Get Single Render
- tags:
- - Renders
- /api/v2/renders/{renderId}/cancel:
- post:
- description: Cancels a render if it's not started yet.
- operationId: cancelOne
- parameters:
- - description: The ID of a render.
- example: 36fea4a1-934b-47c2-8151-875481055ffb
- in: path
- name: renderId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedRender"
- description: Render maybe cancelled.
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - RENDER_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Cancel Render
- tags:
- - Renders
- /api/v2/renders/{renderId}/promote:
- post:
- description: Promote render to static link if sharing for the project is enabled.
- operationId: promoteRenderToStaticLink
- parameters:
- - description: The ID of a render.
- example: 36fea4a1-934b-47c2-8151-875481055ffb
- in: path
- name: renderId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- '*/*':
- schema:
- type: object
- description: Render promoted.
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - PROJECT_SHARING_NOT_ENABLED
- - FEATURE_GATING_NOT_ALLOWED_SHARING_LINKS
- - RENDER_EXPIRED
- - RENDER_NOT_FINISHED
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - RENDER_DOES_NOT_EXIST
- - PROJECT_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Promote Render.
- tags:
- - Renders
- /api/v2/renders/{renderId}/resubmit:
- post:
- description: "Re-renders an existing render. This action effectively creates\
- \ a new render which information is returned as a response. Note that all\
- \ data from the original render will be reused (parameters, output format,\
- \ webhook information, etc)."
- operationId: resubmit
- parameters:
- - description: The ID of a render.
- example: 36fea4a1-934b-47c2-8151-875481055ffb
- in: path
- name: renderId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedRender"
- description: Render created.
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - RENDER_RESUBMIT_PARAMETRIZATION_ERROR
- - RENDER_PROJECT_NOT_UPLOADED
- - RENDER_PROJECT_NOT_ANALYZED
- - RENDER_PROJECT_NOT_TEMPLATED
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - RENDER_DOES_NOT_EXIST
- - PROJECT_DOES_NOT_EXIST
- - PROJECT_TEMPLATE_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Resubmit Render
- tags:
- - Renders
- /api/v2/renders/{renderId}/webhook:
- post:
- description: Re-triggers webhook call for an existing and finished render.
- operationId: reTriggerWebhook
- parameters:
- - description: The ID of a render.
- example: 36fea4a1-934b-47c2-8151-875481055ffb
- in: path
- name: renderId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- '*/*':
- schema:
- type: object
- description: Webhook called.
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - RENDER_NOT_FINISHED
- - RENDER_DOES_NOT_HAVE_WEBHOOK
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - RENDER_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Re-trigger webhook
- tags:
- - Renders
- /api/v2/video-genius/brands:
- get:
- description: Returns all brands available for your organization.
- operationId: getAll_1
- responses:
- "200":
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: "#/components/schemas/DestructedBrand"
- minItems: 0
- uniqueItems: true
- minItems: 0
- uniqueItems: true
- description: Call successful.
- "400":
- description: Bad Request
- security:
- - ApiKey: []
- summary: List All Brands
- tags:
- - VideoGenius / Brands
- post:
- description: Creates a new brand.
- operationId: createBrand
- requestBody:
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/CreateBrandDto"
- required: true
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedBrand"
- description: Call successful. Returns the created brand details as body.
- headers:
- Location:
- description: The URL of the created brand.
- schema:
- format: uri
- style: simple
- "400":
- description: Bad Request
- security:
- - ApiKey: []
- summary: Create Brand
- tags:
- - VideoGenius / Brands
- /api/v2/video-genius/brands/{brandId}:
- delete:
- description: Deletes an existing brand.
- operationId: deleteBrand
- parameters:
- - description: The ID of a brand.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: brandId
- required: true
- schema:
- type: string
- responses:
- "201":
- description: Call successful.
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Delete Brand
- tags:
- - VideoGenius / Brands
- get:
- description: Returns a brand by ID.
- operationId: getOne
- parameters:
- - description: The ID of a brand.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: brandId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedBrand"
- description: Call successful.
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Get Single Brand
- tags:
- - VideoGenius / Brands
- post:
- description: Updates an existing brand.
- operationId: updateBrand
- parameters:
- - in: path
- name: brandId
- required: true
- schema:
- type: string
- requestBody:
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/UpdateBrandDto"
- required: true
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedBrand"
- description: Call successful. Returns the updated brand details as body.
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Update Brand
- tags:
- - VideoGenius / Brands
- /api/v2/video-genius/brands/{brandId}/articles:
- get:
- description: Returns all articles available for a single brand in your organization.
- operationId: getAll
- parameters:
- - description: The ID of a brand.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: brandId
- required: true
- schema:
- type: string
- - description: The number of items to return per page.
- example: 20
- in: query
- name: size
- schema:
- type: string
- - description: The zero-indexed page number to return.
- example: 1
- in: query
- name: page
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: "#/components/schemas/DestructedArticle"
- minItems: 0
- uniqueItems: true
- minItems: 0
- uniqueItems: true
- description: Call successful.
- "400":
- description: Bad Request
- security:
- - ApiKey: []
- summary: List All Articles for Brand
- tags:
- - VideoGenius / Articles
- post:
- description: Creates a new article for a specific brand.
- operationId: createArticle
- parameters:
- - description: The ID of a brand.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: brandId
- required: true
- schema:
- type: string
- requestBody:
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/CreateArticleDto"
- required: true
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedArticle"
- description: Call successful. Returns the created brand details as body.
- headers:
- Location:
- description: The URL of the created article.
- schema:
- format: uri
- style: simple
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_ARTICLE_URL_NOT_FOUND
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_ARTICLE_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Create Article
- tags:
- - VideoGenius / Articles
- /api/v2/video-genius/brands/{brandId}/articles/{articleId}:
- delete:
- description: Deletes an existing article.
- operationId: deleteArticle
- parameters:
- - description: The ID of a brand.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: brandId
- required: true
- schema:
- type: string
- - description: The ID of an article. It must belong to the given brand.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: articleId
- required: true
- schema:
- type: string
- responses:
- "201":
- description: Call successful.
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_ARTICLE_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Delete Article
- tags:
- - VideoGenius / Articles
- get:
- description: Returns a article by ID.
- operationId: getOne_3
- parameters:
- - description: The ID of a brand.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: brandId
- required: true
- schema:
- type: string
- - description: The ID of an article. It must belong to the given brand.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: articleId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedArticle"
- description: Call successful.
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_ARTICLE_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Get Single Article for Brand
- tags:
- - VideoGenius / Articles
- /api/v2/video-genius/brands/{brandId}/articles/{articleId}/videos:
- get:
- description: Returns all videos available for a single article in your organization.
- operationId: getAll_3
- parameters:
- - description: The ID of a brand the article belongs to.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: brandId
- required: true
- schema:
- type: string
- - description: The ID of an article.
- example: 22a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: articleId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: "#/components/schemas/DestructedArticleVideo"
- minItems: 0
- uniqueItems: true
- minItems: 0
- uniqueItems: true
- description: Call successful.
- "400":
- description: Bad Request
- security:
- - ApiKey: []
- summary: List All Videos for Article
- tags:
- - VideoGenius / Videos
- /api/v2/video-genius/brands/{brandId}/articles/{articleId}/videos/{videoId}:
- get:
- description: Returns a article video by ID.
- operationId: getOne_2
- parameters:
- - description: The ID of a brand the article belongs to.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: brandId
- required: true
- schema:
- type: string
- - description: The ID of an article the video belongs to.
- example: 22a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: articleId
- required: true
- schema:
- type: string
- - description: The ID of the video.
- example: 33a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: videoId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedArticleVideo"
- description: Call successful.
- "400":
- description: Bad Request
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_ARTICLE_VIDEO_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Get Single Video for Article
- tags:
- - VideoGenius / Videos
- /api/v2/video-genius/brands/{brandId}/articles/{articleId}/videos/{videoId}/revisions/{revisionId}/clone:
- post:
- description: Clones an existing revision of a video.
- operationId: cloneRevision
- parameters:
- - description: The ID of a brand the article belongs to.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: brandId
- required: true
- schema:
- type: string
- - description: The ID of an article the video belongs to.
- example: 22a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: articleId
- required: true
- schema:
- type: string
- - description: The ID of the video.
- example: 33a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: videoId
- required: true
- schema:
- type: string
- - description: The ID of the revision.
- example: 44a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: revisionId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedArticleVideo"
- description: Call successful.
- "400":
- description: Bad Request
- "403":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Forbidden.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_ARTICLE_NOT_OWNED
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_ARTICLE_VIDEO_DOES_NOT_EXIST
- - BRAND_ARTICLE_VIDEO_REVISION_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Clone a Video Revision
- tags:
- - VideoGenius / Videos
- /api/v2/video-genius/brands/{brandId}/articles/{articleId}/videos/{videoId}/revisions/{revisionId}/save:
- post:
- description: Updates an existing revision of a video.
- operationId: save
- parameters:
- - description: The ID of a brand the article belongs to.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: brandId
- required: true
- schema:
- type: string
- - description: The ID of an article the video belongs to.
- example: 22a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: articleId
- required: true
- schema:
- type: string
- - description: The ID of the video.
- example: 33a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: videoId
- required: true
- schema:
- type: string
- - description: The ID of the revision.
- example: 44a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: revisionId
- required: true
- schema:
- type: string
- requestBody:
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/RevisionUpdateDto"
- required: true
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedArticleVideo"
- description: Call successful.
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_ARTICLE_VIDEO_REVISION_STATE_INVALID
- style: simple
- "403":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Forbidden.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_ARTICLE_NOT_OWNED
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_ARTICLE_VIDEO_DOES_NOT_EXIST
- - BRAND_ARTICLE_VIDEO_REVISION_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Update a Video Revision
- tags:
- - VideoGenius / Videos
- /api/v2/video-genius/brands/{brandId}/articles/{articleId}/videos/{videoId}/revisions/{revisionId}/submit:
- post:
- description: Submits an existing revision of a video for rendering.
- operationId: submitRevision
- parameters:
- - description: The ID of a brand the article belongs to.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: brandId
- required: true
- schema:
- type: string
- - description: The ID of an article the video belongs to.
- example: 22a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: articleId
- required: true
- schema:
- type: string
- - description: The ID of the video.
- example: 33a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: videoId
- required: true
- schema:
- type: string
- - description: The ID of the revision.
- example: 44a1578c-521c-49f4-b1b7-a8df71d87549
- in: path
- name: revisionId
- required: true
- schema:
- type: string
- responses:
- "200":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DestructedArticleVideo"
- description: Call successful.
- "400":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Bad request.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_ARTICLE_VIDEO_REVISION_STATE_INVALID
- style: simple
- "403":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Forbidden.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_ARTICLE_NOT_OWNED
- style: simple
- "404":
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ApiError"
- description: Not found.
- headers:
- X-PlainlyErrorCode:
- description: Error code.
- schema:
- enum:
- - BRAND_ARTICLE_VIDEO_DOES_NOT_EXIST
- - BRAND_ARTICLE_VIDEO_REVISION_DOES_NOT_EXIST
- style: simple
- security:
- - ApiKey: []
- summary: Submit a Video Revision
- tags:
- - VideoGenius / Videos
- /api/v2/webhook-test:
- get:
- description: "Calls a webhook your provided in order to simulate a call that\
- \ will be fired once a rendering with supplied webhook has been finalized.\
- \ This can be useful when you build the integrations using Zappier or other\
- \ integration tools, as you can receive the `POST` body structure the webhook\
- \ will be call with."
- operationId: doTest
- parameters:
- - description: The URL of the webhook to send the POST request with the example
- body.
- example: https://hooks.zapier.com/hooks/catch/123456/abcdefg/
- in: query
- name: url
- required: true
- schema:
- type: string
- - description: A string of your choice to receive as the passthrough on the
- webhook. This can help you to reference a render to your data identifiers.
- example: pid98765
- in: query
- name: passthrough
- required: false
- schema:
- type: string
- responses:
- "200":
- content:
- '*/*':
- example: 202
- schema:
- type: integer
- format: int32
- description: Test successful.
- "400":
- description: Bad Request
- security:
- - ApiKey: []
- summary: Webhook Test
- tags:
- - Utilities
-components:
- schemas:
- AeItem:
- type: object
- description: Project metadata tree item.
- discriminator:
- mapping:
- COMPOSITION: "#/components/schemas/AeItem.Composition"
- MEDIA: "#/components/schemas/AeItem.Media"
- TEXT: "#/components/schemas/AeItem.Text"
- propertyName: type
- oneOf:
- - $ref: "#/components/schemas/AeItem.Composition"
- - $ref: "#/components/schemas/AeItem.Media"
- - $ref: "#/components/schemas/AeItem.Text"
- properties:
- adjustmentLayer:
- type: boolean
- description: Indicates if this is an adjustment layer. Note that this property
- can be inherit from parent composition(s) properties.
- enabled:
- type: boolean
- description: Indicates if the layer is enabled. Note that this property
- can be inherit from parent composition(s) properties.
- guideLayer:
- type: boolean
- description: Indicates if this is a guide layer. Note that this property
- can be inherit from parent composition(s) properties.
- inPoint:
- type: number
- format: double
- description: In point of the item in seconds relative to containing composition.
- internalId:
- type: string
- description: Plainly's internal identifier of the item.
- name:
- type: string
- description: Name of the item.
- outPoint:
- type: number
- format: double
- description: Out point of the item in seconds relative to containing composition.
- shy:
- type: boolean
- description: "Indicates if the layer is shy, meaning it is hidden in the\
- \ timeline unless the shy switch is enabled. Note that this property can\
- \ be inherit from parent composition(s) properties."
- startTime:
- type: number
- format: double
- description: Start time of the item in seconds relative to containing composition.
- type:
- type: string
- description: Type of the After Effects layer.
- enum:
- - COMPOSITION
- - MEDIA
- - TEXT
- value:
- type: string
- description: "Value of the item, if applicable. Usually used for text layers\
- \ or expressions."
- AeItem.Composition:
- allOf:
- - $ref: "#/components/schemas/AeItem"
- - type: object
- properties:
- children:
- type: array
- items:
- $ref: "#/components/schemas/AeItem"
- duration:
- type: number
- format: double
- description: Duration of the composition in seconds.
- height:
- type: number
- format: double
- description: Height of the composition in pixels.
- id:
- type: integer
- format: int64
- description: Unique identifier for the composition as reported by After
- Effects.
- layerName:
- type: string
- description: Layer name of the composition. Note that composition name
- and it source layer name can differ.
- width:
- type: number
- format: double
- description: Width of the composition in pixels.
- workAreaStart:
- type: number
- format: double
- description: Work area start time of the composition in seconds.
- AeItem.Media:
- allOf:
- - $ref: "#/components/schemas/AeItem"
- - type: object
- properties:
- effects:
- type: array
- items:
- type: object
- description: List of effects applied to the media item.
- height:
- type: number
- format: double
- description: Height of the media item in pixels.
- mediaType:
- type: string
- description: "Type of the media item, such as video or image."
- enum:
- - AUDIO
- - VIDEO
- - IMAGE
- - SOLID
- - UNKNOWN
- preview:
- $ref: "#/components/schemas/SignedUrlFilePreview"
- width:
- type: number
- format: double
- description: Width of the media item in pixels.
- AeItem.Text:
- allOf:
- - $ref: "#/components/schemas/AeItem"
- - type: object
- properties:
- allCaps:
- type: boolean
- description: Indicates if the text has all caps option enabled.
- font:
- type: string
- description: Font name used in the text layer.
- fontFamily:
- type: string
- description: Font family used in the text layer.
- fontSize:
- type: number
- format: double
- description: Font size used in the text layer.
- fontStyle:
- type: string
- description: Font style used in the text layer.
- isParagraph:
- type: boolean
- description: Indicates if the text is a paragraph.
- leading:
- type: number
- format: double
- description: "Leading value for the text layer, which is the vertical\
- \ space between lines of text."
- tracking:
- type: number
- format: double
- description: "Tracking value for the text layer, which is the horizontal\
- \ space between characters."
- ApiError:
- properties:
- error:
- description: The error title.
- example: Error type
- message:
- description: Human-readable message that explains the error.
- example: "[ERROR_CODE] The error message describing the error."
- path:
- description: The path of the API request.
- example: /api/v2
- status:
- description: The HTTP status code.
- timestamp:
- description: Timestamp of the request.
- example: 2023-04-10T10:44:21.848+00:00
- App:
- type: object
- properties:
- apiUrl:
- type: string
- description: "The app API endpoint, which accepts POST requests using the\
- \ API key."
- id:
- type: string
- description: The app identifier.
- enum:
- - APP_TWITTER
- inputs:
- type: array
- items:
- $ref: "#/components/schemas/DesignParameter"
- minItems: 1
- parameters:
- type: array
- items:
- $ref: "#/components/schemas/DesignParameter"
- minItems: 0
- webApiUrl:
- type: string
- description: "The app Web-API endpoint, which accepts POST requests using\
- \ the JWT token."
- required:
- - apiUrl
- - id
- - inputs
- - webApiUrl
- ArticleInput:
- type: object
- description: Data for a the article input.
- discriminator:
- mapping:
- WEB_ARTICLE: "#/components/schemas/ArticleInput.Web"
- propertyName: type
- oneOf:
- - $ref: "#/components/schemas/ArticleInput.Web"
- properties:
- image:
- type: string
- description: The image of the article.
- example: http://static01.nyt.com/images/2023/09/26/science/26tb-fairy-circles/26tb-fairy-circles-facebookJumbo.jpg
- title:
- type: string
- description: The title of the article.
- example: Satellites Show Mysterious Fairy Circles in More Parts of the World
- type:
- type: string
- required:
- - type
- ArticleInput.Web:
- allOf:
- - $ref: "#/components/schemas/ArticleInput"
- - type: object
- properties:
- articleUrl:
- type: string
- description: The URL where article is published.
- example: https://www.nytimes.com/2021/01/20/us/politics/biden-inauguration.html
- body:
- type: string
- description: The complete text of the article.
- maxLength: 20000
- minLength: 250
- description:
- type: string
- description: The description of the article resolved from the existing
- metadata.
- example: "Researchers say that the rings of vegetation, which had mostly\
- \ been studied in Namibia and Australia, may exist in 15 countries."
- image:
- type: string
- description: The image of the article resolved from the existing metadata.
- example: http://static01.nyt.com/images/2023/09/26/science/26tb-fairy-circles/26tb-fairy-circles-facebookJumbo.jpg
- metadata:
- type: object
- additionalProperties:
- type: string
- description: Optional the complete metadata map resolved from the article
- HTML meta tags.
- example:
- og:title: Satellites Show Mysterious Fairy Circles in More Parts of
- the World
- og:description: "Researchers say that the rings of vegetation, which\
- \ had mostly been studied in Namibia and Australia, may exist in 15\
- \ countries."
- og:image: http://static01.nyt.com/images/2023/09/26/science/26tb-fairy-circles/26tb-fairy-circles-facebookJumbo.jpg
- title:
- type: string
- description: The title of the article resolved from the existing metadata.
- example: Satellites Show Mysterious Fairy Circles in More Parts of the
- World
- description: Data for a the web article input.
- required:
- - articleUrl
- - body
- ArticleVideoSceneHeadline:
- type: object
- description: Headline group for a scene.
- properties:
- heading:
- type: string
- description: The main heading.
- subheading:
- type: string
- description: The subheading.
- required:
- - heading
- Asset:
- type: object
- description: Parametrization details used to create assets.
- discriminator:
- mapping:
- audio: "#/components/schemas/Asset.Audio"
- data: "#/components/schemas/Asset.Data"
- image: "#/components/schemas/Asset.Image"
- script: "#/components/schemas/Asset.Script"
- static: "#/components/schemas/Asset.Static"
- video: "#/components/schemas/Asset.Video"
- propertyName: type
- oneOf:
- - $ref: "#/components/schemas/Asset.Script"
- - $ref: "#/components/schemas/Asset.Static"
- - $ref: "#/components/schemas/Asset.Data"
- - $ref: "#/components/schemas/Asset.Image"
- - $ref: "#/components/schemas/Asset.Video"
- - $ref: "#/components/schemas/Asset.Audio"
- properties:
- type:
- type: string
- required:
- - type
- Asset.Audio:
- allOf:
- - $ref: "#/components/schemas/Asset"
- - type: object
- properties:
- composition:
- type: string
- description: Composition name where layer is located.
- example: mainComposition
- contentType:
- type: string
- description: "Optional, assumed asset content type."
- layerName:
- type: string
- description: Layer name to update.
- example: productNameLayer
- src:
- type: string
- description: Asset source.
- example: https://my.cnd.net/image.png
- description: Media asset that contains the audio source.
- required:
- - layerName
- - src
- Asset.Data:
- allOf:
- - $ref: "#/components/schemas/Asset"
- - type: object
- properties:
- composition:
- type: string
- description: Composition name where layer is located.
- example: mainComposition
- extras:
- $ref: "#/components/schemas/Extras"
- layerName:
- type: string
- description: Layer name to update.
- example: productNameLayer
- property:
- type: string
- description: The After Effects property name to update.
- example: Source Text
- value:
- type: object
- description: Update value.
- example: Samsung TV
- description: Asset applying an update to the layer data.
- required:
- - layerName
- - property
- - value
- Asset.Image:
- allOf:
- - $ref: "#/components/schemas/Asset"
- - type: object
- properties:
- asSequence:
- type: boolean
- description: If asset is loaded as sequence.
- composition:
- type: string
- description: Composition name where layer is located.
- example: mainComposition
- contentType:
- type: string
- description: "Optional, assumed asset content type."
- layerName:
- type: string
- description: Layer name to update.
- example: productNameLayer
- src:
- type: string
- description: Asset source.
- example: https://my.cnd.net/image.png
- description: Media asset that contains the image source.
- required:
- - layerName
- - src
- Asset.Script:
- allOf:
- - $ref: "#/components/schemas/Asset"
- - type: object
- properties:
- parameters:
- type: array
- items:
- $ref: "#/components/schemas/AssetParameter"
- minItems: 0
- src:
- type: string
- description: "Technical field, should not be referenced and used."
- description: Asset applying a script to the project.
- Asset.Static:
- allOf:
- - $ref: "#/components/schemas/Asset"
- - type: object
- properties:
- name:
- type: string
- skipContentTypeFileExtension:
- type: boolean
- src:
- type: string
- description: Asset downloading a static resource.
- Asset.Video:
- allOf:
- - $ref: "#/components/schemas/Asset"
- - type: object
- properties:
- composition:
- type: string
- description: Composition name where layer is located.
- example: mainComposition
- contentType:
- type: string
- description: "Optional, assumed asset content type."
- layerName:
- type: string
- description: Layer name to update.
- example: productNameLayer
- src:
- type: string
- description: Asset source.
- example: https://my.cnd.net/image.png
- description: Media asset that contains the video source.
- required:
- - layerName
- - src
- AssetParameter:
- type: object
- description: Script parameter.
- properties:
- key:
- type: string
- description: Script parameter key.
- example: input
- value:
- type: object
- description: Script parameter value. Any JS object.
- AutoCreateTemplateDto:
- type: object
- description: Auto create templates for a project.
- discriminator:
- mapping:
- all: "#/components/schemas/AutoCreateTemplateDto.All"
- prefix: "#/components/schemas/AutoCreateTemplateDto.Prefix"
- propertyName: type
- oneOf:
- - $ref: "#/components/schemas/AutoCreateTemplateDto.All"
- - $ref: "#/components/schemas/AutoCreateTemplateDto.Prefix"
- properties:
- type:
- type: string
- required:
- - type
- AutoCreateTemplateDto.All:
- allOf:
- - $ref: "#/components/schemas/AutoCreateTemplateDto"
- - type: object
- properties:
- allLayers:
- type: boolean
- default: "false"
- description: "If true, all text and media layers contained in a composition\
- \ tree will be auto parametrized."
- applyExclusionsToCompositions:
- type: boolean
- default: "true"
- description: "If true, the exclusions will be applied to compositions\
- \ as well."
- excludeAdjustmentLayers:
- type: boolean
- default: "false"
- description: "If true, adjustment layers will be excluded from auto parametrization."
- excludeDisabledLayers:
- type: boolean
- default: "false"
- description: "If true, disabled layers will be excluded from auto parametrization."
- excludeGuideLayers:
- type: boolean
- default: "false"
- description: "If true, guide layers will be excluded from auto parametrization."
- excludeShyLayers:
- type: boolean
- default: "false"
- description: "If true, shy layer will be excluded from auto parametrization"
- greedy:
- type: boolean
- default: "false"
- description: "If true, template will be created for all root compositions,\
- \ otherwise only for the one with most sub-layers."
- targetCompositionName:
- type: string
- description: "The name of the target composition to create the template\
- \ for. If provided, greedy will be ignored."
- description: "Auto create templates for root compositions, with options to auto-parametrize\
- \ all layers that exist in them."
- AutoCreateTemplateDto.Prefix:
- allOf:
- - $ref: "#/components/schemas/AutoCreateTemplateDto"
- - type: object
- properties:
- applyExclusionsToCompositions:
- type: boolean
- default: "true"
- description: "If true, the exclusions will be applied to compositions\
- \ as well."
- excludeAdjustmentLayers:
- type: boolean
- default: "false"
- description: "If true, adjustment layers will be excluded from auto parametrization."
- excludeDisabledLayers:
- type: boolean
- default: "false"
- description: "If true, disabled layers will be excluded from auto parametrization."
- excludeGuideLayers:
- type: boolean
- default: "false"
- description: "If true, guide layers will be excluded from auto parametrization."
- excludeShyLayers:
- type: boolean
- default: "false"
- description: "If true, shy layers will be excluded from auto parametrization."
- prefixes:
- type: array
- default: "[\"plainly\"]"
- description: "Prefixes are used for auto-generating templates and auto-parametrizing\
- \ layers. All compositions that start with any of the provided prefixes\
- \ will be auto-generated. All layers that start with any of the provided\
- \ prefixes will be auto-parametrized. If not provided, the default prefix\
- \ is `plainly`."
- items:
- type: string
- stripPrefix:
- type: boolean
- default: "false"
- description: Strip the prefix from the composition and layer names when
- auto-generating templates and auto-parametrizing layers.
- targetCompositionName:
- type: string
- description: "The name of the target composition to create the template\
- \ for. If provided, the prefixes will not be considered for the template\
- \ creation."
- description: Auto-generate templates and auto-parametrize layers based on prefixes.
- Avatar:
- type: object
- description: Provides the input and output for the avatar presenter creation.
- properties:
- in:
- $ref: "#/components/schemas/AvatarIn"
- out:
- $ref: "#/components/schemas/AvatarOut"
- AvatarIn:
- type: object
- description: The input for the avatar presenter creation.
- properties:
- paragraphs:
- type: array
- description: The paragraphs of the avatar content.
- items:
- $ref: "#/components/schemas/AvatarInParagraph"
- presenterSignature:
- type: string
- description: The presenter name/signature to use for the avatar.
- settings:
- $ref: "#/components/schemas/AvatarProviderSettings"
- required:
- - paragraphs
- - settings
- AvatarInParagraph:
- type: object
- description: A single paragraph of the avatar content.
- properties:
- text:
- type: string
- description: The text to convert for avatar.
- required:
- - text
- AvatarOptions:
- type: object
- description: The options for the avatar presenter creation.
- properties:
- presenterSignature:
- type: string
- description: The presenter name/signature to use for the avatar.
- settings:
- $ref: "#/components/schemas/AvatarProviderSettings"
- required:
- - settings
- AvatarOut:
- type: object
- description: The output of the avatar presenter creation.
- properties:
- paragraphDurations:
- type: array
- description: The duration of each input paragraph in seconds.
- items:
- type: number
- format: double
- preview:
- type: boolean
- description: If the output is a preview (non-final asset).
- providerResponse:
- type: object
- additionalProperties:
- type: object
- description: The complete response from the avatar service provider used.
- url:
- type: string
- description: "The URL of the avatar video or audio. If `preview=false` it\
- \ will be a video, otherwise it can be either."
- required:
- - paragraphDurations
- - url
- AvatarProviderSettings:
- type: object
- description: Settings for the presenter avatar created by AI.
- discriminator:
- mapping:
- D_ID: "#/components/schemas/AvatarProviderSettings.Did"
- propertyName: type
- oneOf:
- - $ref: "#/components/schemas/AvatarProviderSettings.Did"
- properties:
- type:
- type: string
- required:
- - type
- AvatarProviderSettings.Did:
- allOf:
- - $ref: "#/components/schemas/AvatarProviderSettings"
- description: Settings for the D-ID avatar provider.
- BrandSettings:
- type: object
- description: The complete settings of a brand.
- properties:
- baseUrl:
- type: string
- description: The base url of the brand.
- example: https://www.nytimes.com
- language:
- type: string
- description: The default language code for the produced videos.
- example: en-US
- logoUrl:
- type: string
- description: The default logo of the brand.
- example: https://www.nytimes.com/logo.png
- name:
- type: string
- description: The name of the brand.
- example: New York Times
- videoTypes:
- type: array
- items:
- $ref: "#/components/schemas/VideoSettingsObject"
- required:
- - baseUrl
- - language
- - logoUrl
- - name
- Captions:
- type: object
- description: Captions options for the render.
- properties:
- captionsPosition:
- type: string
- default: BOTTOM
- description: Captions position.
- enum:
- - TOP
- - CENTER
- - BOTTOM
- example: TOP
- captionsStyle:
- type: string
- default: BASIC
- description: Captions style.
- enum:
- - BASIC
- - BASIC_WITH_STROKE_AND_SHADOW
- - BASIC_WITH_SHADOW
- - POPPINS_WHITE
- - POPPINS_WHITE_VERTICAL
- example: BASIC_WITH_STROKE_AND_SHADOW
- srtFileUrl:
- type: string
- description: Url to the srt file.
- example: https://my.cnd.net/srt.srt
- required:
- - srtFileUrl
- ColorPalette:
- type: object
- properties:
- defaultPalette:
- type: boolean
- description: Specifies whether is this the default color palette for a design
- (true) or not (false).
- example: true
- group:
- type: string
- description: The group this color palette logically belongs to.
- enum:
- - WHITE
- - YELLOW
- - GREEN
- - GRAY
- - BEIGE
- - PINK
- - CYAN
- - ORANGE
- - BLUE
- - NAVY
- - PURPLE
- - RED
- - BROWN
- - BLACK
- example: YELLOW
- primary:
- type: string
- description: Primary color.
- example: "#8400ff"
- secondary:
- type: string
- description: Secondary color.
- example: "#fff200"
- tertiary:
- type: string
- description: Tertiary color.
- example: "#ed1c24"
- required:
- - group
- - primary
- CompositionIdentifier:
- type: object
- properties:
- id:
- type: integer
- format: int64
- description: "The internal id of the composition. In case name contains\
- \ `->`, id should be the id of the last composition in the chain."
- example: 24L
- name:
- type: string
- description: The name of the composition. You can also use the `->` to create
- a concrete composition tree that should be matched. For example `Root
- composition->Concrete composition` would match the layer with the given
- name only in the `Concrete composition` that has a parent named `Root
- composition`.
- example: main-comp
- required:
- - name
- ConvertedAsset:
- type: object
- description: Details of an asset that was converted as part of a rendering job.
- properties:
- conversionDurationMillis:
- type: number
- format: double
- description: "Time taken to perform the conversion, in milliseconds."
- url:
- type: string
- description: "The URL of the converted asset (e.g. image, video, or audio)."
- example: https://example.com/my-asset.heic
- CreateArticleDto:
- type: object
- description: Data for a the article input.
- discriminator:
- mapping:
- WEB_ARTICLE: "#/components/schemas/CreateArticleDto.Web"
- propertyName: type
- oneOf:
- - $ref: "#/components/schemas/CreateArticleDto.Web"
- properties:
- type:
- type: string
- required:
- - type
- CreateArticleDto.Web:
- allOf:
- - $ref: "#/components/schemas/CreateArticleDto"
- - type: object
- properties:
- articleUrl:
- type: string
- description: The URL where article is published.
- example: https://www.nytimes.com/2021/01/20/us/politics/biden-inauguration.html
- body:
- type: string
- description: The complete text of the article.
- maxLength: 20000
- minLength: 250
- description: Data for creating a web article.
- required:
- - articleUrl
- - body
- CreateBrandDto:
- type: object
- properties:
- baseUrl:
- type: string
- description: The base url of the brand.
- example: https://www.nytimes.com
- language:
- type: string
- description: The default language code for the produced videos.
- example: en-US
- logoUrl:
- type: string
- description: The default logo of the brand.
- example: https://www.nytimes.com/logo.png
- name:
- type: string
- description: The name of the brand.
- example: New York Times
- required:
- - baseUrl
- - language
- - logoUrl
- - name
- CreateTemplateDto:
- type: object
- properties:
- defaultRenderOptions:
- $ref: "#/components/schemas/RenderOptionsDto"
- description: "The default render options for this template. If not provided,\
- \ the default options which only specify rendering format to MP4 will\
- \ be used. "
- layers:
- type: array
- description: List of dynamically changed layers in this template.
- items:
- $ref: "#/components/schemas/ParametrizedLayer"
- name:
- type: string
- description: The name of the template.
- example: My template
- renderingComposition:
- type: string
- description: The name of the composition to render in this template.
- example: render-comp
- renderingCompositionId:
- type: integer
- format: int64
- description: "The ID of the composition that will be rendered, as defined\
- \ by project metadata."
- example: 123456
- required:
- - layers
- - name
- - renderingComposition
- - renderingCompositionId
- Design:
- type: object
- properties:
- app:
- $ref: "#/components/schemas/App"
- description: The information about the app provider. Apps are like integrations
- that can be used to quickly render a design that is supported by the app.
- category:
- type: string
- description: The category identifier the design belongs to.
- enum:
- - TWITTER
- - SLIDESHOW
- - ECOMMERCE
- - MEDIA
- - SUMMARY
- example: TWITTER
- defaultExample:
- $ref: "#/components/schemas/DesignExample"
- description: "Provides information about the design example, which contains\
- \ an image and a video."
- description:
- type: string
- description: Human-readable description of the design.
- example: A gradient based video design that displays a tweet without a media
- in a white box.
- id:
- type: string
- $ref: "#/components/schemas/DesignIds"
- name:
- type: string
- description: Human-readable name of the design.
- example: Boxed gradient
- palettes:
- type: array
- items:
- $ref: "#/components/schemas/ColorPalette"
- minItems: 1
- parameters:
- type: array
- items:
- $ref: "#/components/schemas/DesignParameter"
- minItems: 1
- publishedDate:
- type: string
- format: date
- description: The date when the design was published.
- example: 2022-10-08
- renderUiDisabled:
- type: boolean
- description: Internal field. If rendering of the design is disabled on the
- UI.
- variants:
- type: array
- items:
- $ref: "#/components/schemas/DesignVariant"
- minItems: 1
- required:
- - category
- - defaultExample
- - description
- - id
- - name
- - palettes
- - publishedDate
- - variants
- DesignExample:
- type: object
- properties:
- thumbnailUrl:
- type: string
- description: The example image thumbnail of the variant.
- example: https://storage.googleapis.com/plainly-static-data/design-examples/twitter/box%40v1/square-blue-720p.jpg
- videoUrl:
- type: string
- description: The example video of the variant.
- example: https://storage.googleapis.com/plainly-static-data/design-examples/twitter/box%40v1/square-blue-720p.mp4
- required:
- - thumbnailUrl
- - videoUrl
- DesignIds:
- type: string
- description: The ID of a design.
- enum:
- - ecommerce-dapper@v1
- - ecommerce-flair@v1
- - ecommerce-moda@v1
- - ecommerce-pop@v1
- - ecommerce-street@v1
- - ecommerce-style@v1
- - ecommerce-trendy@v1
- - media-abstract@v1
- - media-classic@v1
- - media-evergreen@v1
- - media-retro@v1
- - media-timeless@v1
- - media-urban@v1
- - slideshow-corporate@v1
- - slideshow-rollercoaster@v1
- - slideshow-serif@v1
- - summary-business@v1
- - summary-common@v1
- - summary-economic@v1
- - summary-endless@v1
- - summary-funky@v1
- - summary-placeholder@v1
- - twitter-bird@v1
- - twitter-box@v1
- - twitter-duotone@v1
- - twitter-dusty@v1
- - twitter-elegant@v1
- - twitter-industrial@v1
- DesignParameter:
- type: object
- properties:
- defaultValue:
- type: object
- description: Default value to be used if not given.
- description:
- type: string
- description: Human-readable description of the parameter.
- key:
- type: string
- description: Technical key of the parameter.
- name:
- type: string
- description: Human-readable name of the parameter.
- optional:
- type: boolean
- description: Specifies whether is this parameter optional.
- example: true
- sampleValue:
- type: object
- description: Example data to be used.
- type:
- type: string
- description: Type of the parameter.
- enum:
- - STRING
- - MEDIA
- - COLOR
- - NUMBER
- - BOOLEAN
- - COMPLEX
- required:
- - key
- - name
- - type
- DesignRenderDto:
- type: object
- properties:
- attributes:
- type: object
- $ref: "#/components/schemas/RenderAttributes"
- additionalProperties:
- type: object
- colorPalette:
- type: string
- description: "The color palette identifier to use. If the provided palette\
- \ is not supported by the selected design, this parameter will be ignored."
- enum:
- - WHITE
- - YELLOW
- - GREEN
- - GRAY
- - BEIGE
- - PINK
- - CYAN
- - ORANGE
- - BLUE
- - NAVY
- - PURPLE
- - RED
- - BROWN
- - BLACK
- example: BLUE
- designId:
- type: string
- $ref: "#/components/schemas/DesignIds"
- options:
- $ref: "#/components/schemas/ExtraOptions"
- outputFormat:
- $ref: "#/components/schemas/OutputFormatDto"
- parameters:
- type: object
- additionalProperties:
- type: object
- description: Map of the parameters that design expects. All required parameters
- should be provided. Keys in this map must not contain dots.
- variantId:
- type: string
- description: Variant id of the design to use. If not provided the default
- variant would be used.
- example: square
- webhook:
- $ref: "#/components/schemas/Webhook"
- required:
- - designId
- DesignVariant:
- type: object
- properties:
- aspectRatio:
- type: string
- description: The variant aspect ratio.
- enum:
- - WIDE
- - SQUARE
- - STORY
- example: STORY
- defaultVariant:
- type: boolean
- description: Specifies whether is this the default variant.
- example: true
- duration:
- type: number
- format: double
- description: Duration of this variant in seconds.
- example: 15
- examples:
- type: object
- additionalProperties:
- $ref: "#/components/schemas/DesignExample"
- description: "A mapping of color palette groups to design examples. The\
- \ key is a color palette group, and the value is an example of how the\
- \ design variant looks using given palette."
- example:
- BLUE:
- thumbnail-url: https://storage.googleapis.com/plainly-static-data/design-examples/twitter/box%40v1/square-blue-720p.jpg
- video-url: https://storage.googleapis.com/plainly-static-data/design-examples/twitter/box%40v1/square-blue-720p.mp4
- id:
- type: string
- description: Variant identifier.
- example: square
- name:
- type: string
- description: The human readable name of the variant.
- example: Square
- required:
- - aspectRatio
- - examples
- - id
- DestructedArticle:
- type: object
- properties:
- brandId:
- type: string
- description: The ID of the brand the article belongs to.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- createdDate:
- type: string
- format: date-time
- description: The date & time when the article was created.
- id:
- type: string
- description: The ID of the article.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- input:
- $ref: "#/components/schemas/ArticleInput"
- description: The input of the article including the meta-data collected.
- lastModified:
- type: string
- format: date-time
- description: The date & time when the article was last modified.
- videoCount:
- type: integer
- format: int32
- description: The amount of videos created for this article.
- DestructedArticleVideo:
- type: object
- properties:
- articleId:
- type: string
- description: The ID of the article the video belongs to.
- example: 22a1578c-521c-49f4-b1b7-a8df71d87549
- brandId:
- type: string
- description: The ID of the brand the video belongs to.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- createdDate:
- type: string
- format: date-time
- description: The date & time when the video was created.
- data:
- $ref: "#/components/schemas/VideoDataVideoTypeVideoSettingsObjectVideoRevisionObject"
- description: "The data of this video. Includes settings for automated video\
- \ creation, as well as all the revisions of this video."
- id:
- type: string
- description: The ID of the video.
- example: 33a1578c-521c-49f4-b1b7-a8df71d87549
- lastModified:
- type: string
- format: date-time
- description: The date & time when the video was last modified.
- DestructedBrand:
- type: object
- properties:
- createdDate:
- type: string
- format: date-time
- description: The date & time when the brand was created.
- id:
- type: string
- description: The ID of the brand.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- lastModified:
- type: string
- format: date-time
- description: The date & time when the brand was last modified.
- settings:
- $ref: "#/components/schemas/BrandSettings"
- DestructedOutputFormat:
- type: object
- properties:
- attachment:
- type: boolean
- default: "false"
- description: "If the output file should be consider as an attachment, meaning\
- \ that the video link will initiate a download of the file in a web browser."
- example: false
- attachmentFileName:
- type: string
- description: "Optional, name of the file when downloading as attachment.\
- \ Note that this has effect only if `attachment` is `true`. The file name\
- \ **must** be provided without extension which will be added automatically\
- \ based on the selected format. Could be any string or a render parameter\
- \ reference in formats `{{parameterName}}` or `{{parameterName:defaultValue}},\
- \ including a reference to `{{integrationPassthrough}}` or `{{webhookPassthrough}}\
- \ in the same manner`."
- example: my_cool_video
- outputModule:
- type: string
- description: |
- The output module defines the format of the video generated by the After Effects. Available options are:
- * `H_264` - output module for H.264 codec with 5 Mbps bitrate.
- * `H_264_HIGH_BIT_RATE` - output module for H.264 codec with 15 Mbps bitrate.
- * `HQ` - output module for quicktime video (`.mov`).
- * `HQ_ALPHA` - output module for quicktime video with alpha channel (`.mov`).
-
- *NOTE: If you use post encoding, the final video produced by Plainly will be in the format defined in the post encoding.*
- enum:
- - H_264
- - H_264_HIGH_BIT_RATE
- - HQ
- - HQ_ALPHA
- postEncoding:
- $ref: "#/components/schemas/PostEncoding"
- settingsTemplate:
- type: string
- description: |
- Defines render settings template to be used during After Effects rendering. Available options:
- * `BEST_SETTINGS`: `Best Settings` as defined in After Effects. Explicitly specifying the best settings for rendering has no effect, as this is already the default in After Effects.
- * `DRAFT`: `Draft Settings` as defined in After Effects, which means half resolution and lower quality settings. Should serve for testing purposes and previews.
-
- > NOTE: Using `DRAFT` template is currently free of charge and your video minutes will not be consumed.
- enum:
- - BEST_SETTINGS
- - DRAFT
- DestructedProject:
- type: object
- properties:
- aeVersion:
- type: string
- description: The selected After Effects version of the project.
- enum:
- - AENA
- - AE2022
- - AE2023_AMD64
- - AE2024
- - AE2025
- example: AE2022
- analysis:
- $ref: "#/components/schemas/DestructedProjectAnalysis"
- analyzed:
- type: boolean
- description: If project is considered as analysed successfully.
- example: true
- attributes:
- type: object
- additionalProperties:
- type: object
- description: "User-defined attributes of the project. The field `tags` is\
- \ reserved, and must contain a list of strings."
- example:
- author: John Doe
- location: New York
- tags:
- - internal
- - ad
- createdBy:
- type: string
- description: The ID of the user that created the project.
- example: 5f6d5f4f-5f4f-4f4f-4f4f-4f4f4f4f4f4f
- createdDate:
- type: string
- format: date-time
- description: The date & time when the project was created.
- defaultTemplateId:
- type: string
- description: "The ID of the default project template, which be use for rendering\
- \ the project if no template is specified. Can be `null` in case there\
- \ are no templates."
- example: 1b2081db-9881-4b2d-bde9-41d167d94e8e
- description:
- type: string
- description: The user-specified description of the project.
- example: My awesome project for automating video production.
- id:
- type: string
- description: The ID of the project.
- example: 11a1578c-521c-49f4-b1b7-a8df71d87549
- lastModified:
- type: string
- format: date-time
- description: The date & time when the project was last modified.
- name:
- type: string
- description: The user-specified name of the project.
- example: My Project
- revisionHistory:
- type: array
- description: Provides the project files revision history information.
- items:
- $ref: "#/components/schemas/DestructedProjectRevision"
- sharing:
- $ref: "#/components/schemas/DestructedProjectSharing"
- description: Provides the information on project sharing properties. Set
- to `null` if sharing is disabled.
- sharingLinks:
- type: object
- additionalProperties:
- type: string
- description: |-
- If static link sharing is enabled for the project, this object will contain a link for each template in the project. The keys in the object are the template IDs and the values are the static links.
-
- > NOTE: Sharable link will be provided for each template in the project, but there is no guarantee that the link will not return the `404 Not Found`. The existence of the video at the given link depends on the sharing rules. For example, if manual promotion is selected, the link would contain a video once a render for a specific template was promoted to the sharing link.
- size:
- type: integer
- format: int64
- description: The size of the project files in bytes.
- example: 1048576
- minimum: 1
- strictFontChecks:
- type: string
- description: |
- Controls the strictness of the font checks during the rendering. If set to `ENABLED`, the render will fail if the font can't support the characters in the text. If set to `DISABLED`, the render will continue, but the text will be rendered with a fallback font.
- enum:
- - DEFAULT
- - ENABLED
- - DISABLED
- example: ENABLED
- templates:
- type: array
- items:
- $ref: "#/components/schemas/DestructedTemplate"
- minItems: 0
- uniqueItems: true
- uploaded:
- type: boolean
- description: If project files are uploaded to the Plainly storage.
- example: true
- DestructedProjectAnalysis:
- type: object
- description: Defines the state of the project analysis.
- properties:
- done:
- type: boolean
- description: If analysis is finished.
- example: true
- error:
- type: object
- $ref: "#/components/schemas/WorkerAnalysisError"
- additionalProperties:
- type: object
- failed:
- type: boolean
- description: If analysis ended up with an error.
- example: false
- pending:
- type: boolean
- description: If analysis is currently in progress or pending.
- example: false
- upgradeError:
- type: object
- $ref: "#/components/schemas/WorkerUpgradeError"
- additionalProperties:
- type: object
- DestructedProjectRevision:
- type: object
- description: Defines the single revision of the project files.
- properties:
- createdDate:
- type: string
- format: date-time
- description: The date when the revision was created.
- expired:
- type: boolean
- description: If the revision has expired.
- expiredDate:
- type: string
- format: date-time
- description: The date when the revision expired.
- id:
- type: string
- description: The id if the revision.
- example: e8a3eW
- DestructedProjectSharing:
- type: object
- properties:
- autoLatest:
- type: boolean
- description: If publishing latest renders to the share link(s) is done automatically.
- example: true
- enabled:
- type: boolean
- description: If the sharing is enabled for the project.
- example: true
- enabledDate:
- type: string
- format: date-time
- description: When was the sharing enabled for the project.
- DestructedRender:
- type: object
- properties:
- attributes:
- type: object
- $ref: "#/components/schemas/RenderAttributes"
- additionalProperties:
- type: object
- compositionName:
- type: string
- description: Composition name given by the user.
- convertedAssets:
- type: array
- description: List of assets that were converted to a supported format. Only
- available when render state is `DONE` and conversion was needed.
- items:
- $ref: "#/components/schemas/ConvertedAsset"
- createdBy:
- type: string
- description: User ID that created the render.
- example: 5f6d5f4f-5f4f-4f4f-4f4f-4f4f4f4f4f4f
- createdDate:
- type: string
- format: date-time
- description: Render created date/time.
- error:
- type: object
- $ref: "#/components/schemas/WorkerRenderingError"
- additionalProperties:
- type: object
- expirationDate:
- type: string
- format: date-time
- description: Render output video expiration date.
- expired:
- type: boolean
- description: Whether render output video is deleted from the Plainly storage.
- id:
- type: string
- description: Render id.
- example: 36fea4a1-934b-47c2-8151-875481055ffb
- integrationDelivery:
- $ref: "#/components/schemas/IntegrationDelivery"
- description: Details for integration delivery. Not `null` only if at least
- one delivery integration type exists for the render.
- lastModified:
- type: string
- format: date-time
- description: Render last modified date/time.
- options:
- $ref: "#/components/schemas/ExtraOptions"
- output:
- type: string
- description: HTTP(S) link to the output file. Only available when render
- state is `DONE`.
- example: https://storage.googleapis.com/plainly-generated-videos-prod/f146a72e-06fa-405c-a108-2ea41e49cff8/0dbe5f2a-c813-4d3c-b694-441b44b85b1e/video.mp4
- outputFormat:
- $ref: "#/components/schemas/EncodingParamsOutputFormat"
- description: Output format of the render.
- outputWatermark:
- type: string
- description: HTTP(S) link to the output file with watermark. Only available
- when render state is `DONE` and watermark generation was requested.
- example: https://storage.googleapis.com/plainly-generated-videos-prod/f146a72e-06fa-405c-a108-2ea41e49cff8/0dbe5f2a-c813-4d3c-b694-441b44b85b1e/video-watermark.mp4
- parameters:
- type: object
- additionalProperties:
- type: object
- description: Parameters passed when the rendering was initiated. May be
- `null` or `empty` in case the render had no parameters.
- example:
- product_id: SU123456
- product_name: Samsung TV
- parametrizationResults:
- type: array
- description: Result of the template parametrization processing. May be `null`
- or `empty` in case template has no parametrization.
- items:
- $ref: "#/components/schemas/LayerParametrizationResult"
- projectId:
- type: string
- description: Project ID this render belongs to.
- example: 3934539a-d7f1-4308-a33c-ca523c0c916a
- projectName:
- type: string
- description: Project name this render belongs to.
- example: Summer Promotion
- projectZipUrl:
- type: string
- description: HTTP(S) link to the modified project zip. Only available when
- render state is `DONE` and project upload was requested.
- example: https://storage.googleapis.com/plainly-generated-videos-prod/f146a72e-06fa-405c-a108-2ea41e49cff8/0dbe5f2a-c813-4d3c-b694-441b44b85b1e/0dbe5f2a-c813-4d3c-b694-441b44b85b1e.zip
- publicDesign:
- type: boolean
- description: Whether the project used for rendering is one of the public
- designs offered by Plainly. This is `false` in case custom project is
- used.
- example: false
- retried:
- type: boolean
- description: |-
- If this render was automatically retried once on the rendering failure.
- > The value can be `null` for renders created before Plainly version `v0.5.3`.
- example: false
- state:
- type: string
- description: |
- The state of the render, which can be one of the following:
-
- * `PENDING` - The render is successfully created and pending for processing.
- * `THROTTLED` - The render has been throttled temporary due to concurrent render limits.
- * `QUEUED` - The render is submitted to a rendering queue.
- * `IN_PROGRESS` - The render is currently being processed on a rendering worker node.
- * `DONE` - The render is successfully finalized and the output video is ready for download.
- * `FAILED` - The render process failed on a rendering worker node.
- * `INVALID` - The render has not been created successfully, as the input data is invalid.
- * `CANCELLED` - The render has been canceled on a user request.
- enum:
- - PENDING
- - THROTTLED
- - QUEUED
- - IN_PROGRESS
- - DONE
- - FAILED
- - INVALID
- - CANCELLED
- submittedDate:
- type: string
- format: date-time
- description: Date/time when render was submitted to a rendering worker node.
- May be `null` in case render state is `INVALID`.
- templateId:
- type: string
- description: Template ID used to render.
- example: 0fade64c-588e-44c2-a9ea-d7435372cbfb
- templateName:
- type: string
- description: Template name used to render.
- example: Product Template
- thumbnailUris:
- type: array
- description: List of thumbnail HTTP(S) links. Only available when render
- state is `DONE`.
- example:
- - https://storage.googleapis.com/plainly-generated-videos-prod/f146a72e-06fa-405c-a108-2ea41e49cff8/0dbe5f2a-c813-4d3c-b694-441b44b85b1e/thumbnails/1.png
- items:
- type: string
- webhook:
- $ref: "#/components/schemas/Webhook"
- webhookDelivery:
- $ref: "#/components/schemas/WebhookDelivery"
- description: |-
- *Available for renders trigger with the Plainly version 0.4.3 or later*
-
- Details of the webhook delivery. Not `null` only if the webhook exist for the render.
- DestructedRenderOptions:
- type: object
- description: The default render options for this template.
- properties:
- options:
- $ref: "#/components/schemas/ExtraOptions"
- outputFormat:
- $ref: "#/components/schemas/DestructedOutputFormat"
- webhook:
- $ref: "#/components/schemas/Webhook"
- DestructedTemplate:
- type: object
- properties:
- createdBy:
- type: string
- description: The ID of the user that created the template.
- example: 5f6d5f4f-5f4f-4f4f-4f4f-4f4f4f4f4f4f
- createdDate:
- type: string
- format: date-time
- description: The date & time when the template was created.
- defaultRenderOptions:
- $ref: "#/components/schemas/DestructedRenderOptions"
- description: The default render options for this template.
- duration:
- type: number
- format: double
- description: |-
- The duration in seconds of the rendered composition, and thus the video output.
- > The value can be `null` for templates created before Plainly version `v0.3.4`.
- example: 15.0
- id:
- type: string
- description: The ID of the template.
- example: 1b2081db-9881-4b2d-bde9-41d167d94e8e
- lastModified:
- type: string
- format: date-time
- description: The date & time when the template was last modified.
- layers:
- type: array
- description: List of dynamically changed layers in this template.
- items:
- $ref: "#/components/schemas/ParametrizedLayer"
- name:
- type: string
- description: The user-specified template name.
- example: My Template
- renderingComposition:
- type: string
- description: The composition that will be rendered when this template is
- rendered.
- example: render-comp
- renderingCompositionId:
- type: integer
- format: int64
- description: "The ID of the composition that will be rendered, as defined\
- \ by project metadata."
- example: render-comp
- resolution:
- $ref: "#/components/schemas/Resolution"
- description: "Resolution of the rendered composition, and thus the video\
- \ output."
- required:
- - name
- EncodingParamsOutputFormat:
- type: object
- properties:
- attachment:
- type: boolean
- default: "false"
- description: "If the output file should be consider as an attachment, meaning\
- \ that the video link will initiate a download of the file in a web browser."
- example: false
- attachmentFileName:
- type: string
- description: "Optional, name of the file when downloading as attachment.\
- \ Note that this has effect only if `attachment` is `true`. The file name\
- \ **must** be provided without extension which will be added automatically\
- \ based on the selected format. Could be any string or a render parameter\
- \ reference in formats `{{parameterName}}` or `{{parameterName:defaultValue}},\
- \ including a reference to `{{integrationPassthrough}}` or `{{webhookPassthrough}}\
- \ in the same manner`."
- example: my_cool_video
- contentType:
- type: string
- description: Output file `Content-type` header.
- example: video/mp4
- encodingNeeded:
- type: boolean
- description: Boolean flag denoting a need to encode the output file after
- rendering.
- ext:
- type: string
- description: Output file extension.
- example: mp4
- outputModule:
- type: string
- description: |
- The output module defines the format of the video generated by the After Effects. Available options are:
- * `H_264` - output module for H.264 codec with 5 Mbps bitrate.
- * `H_264_HIGH_BIT_RATE` - output module for H.264 codec with 15 Mbps bitrate.
- * `HQ` - output module for quicktime video (`.mov`).
- * `HQ_ALPHA` - output module for quicktime video with alpha channel (`.mov`).
-
- *NOTE: If you use post encoding, the final video produced by Plainly will be in the format defined in the post encoding.*
- enum:
- - H_264
- - H_264_HIGH_BIT_RATE
- - HQ
- - HQ_ALPHA
- postEncoding:
- $ref: "#/components/schemas/PostEncoding"
- settingsTemplate:
- type: string
- description: |
- Defines render settings template to be used during After Effects rendering. Available options:
- * `BEST_SETTINGS`: `Best Settings` as defined in After Effects. Explicitly specifying the best settings for rendering has no effect, as this is already the default in After Effects.
- * `DRAFT`: `Draft Settings` as defined in After Effects, which means half resolution and lower quality settings. Should serve for testing purposes and previews.
-
- > NOTE: Using `DRAFT` template is currently free of charge and your video minutes will not be consumed.
- enum:
- - BEST_SETTINGS
- - DRAFT
- ExtraOptions:
- type: object
- description: The map of additional options for the render.
- properties:
- captions:
- $ref: "#/components/schemas/Captions"
- integrations:
- $ref: "#/components/schemas/Integrations"
- projectFiles:
- $ref: "#/components/schemas/ProjectFiles"
- thumbnails:
- $ref: "#/components/schemas/Thumbnails"
- watermark:
- $ref: "#/components/schemas/Watermark"
- Extras:
- type: object
- properties:
- fontPath:
- type: string
- FlattenAeItem:
- type: object
- description: Flattened project metadata item.
- discriminator:
- mapping:
- COMPOSITION: "#/components/schemas/FlattenAeItem.Composition"
- MEDIA: "#/components/schemas/FlattenAeItem.Media"
- TEXT: "#/components/schemas/FlattenAeItem.Text"
- propertyName: type
- oneOf:
- - $ref: "#/components/schemas/FlattenAeItem.Composition"
- - $ref: "#/components/schemas/FlattenAeItem.Media"
- - $ref: "#/components/schemas/FlattenAeItem.Text"
- properties:
- compositions:
- type: array
- description: "List of compositions that this item is part of, if any. When\
- \ empty it means that this item represents a root composition in a project."
- items:
- $ref: "#/components/schemas/FlattenCompositionDescriptor"
- uniqueItems: true
- internalId:
- type: string
- description: Plainly's internal identifier of the item.
- name:
- type: string
- description: Name of the item.
- type:
- type: string
- description: Type of the After Effects layer.
- enum:
- - COMPOSITION
- - MEDIA
- - TEXT
- value:
- type: string
- description: "Value of the item, if applicable. Usually used for text layers\
- \ or expressions."
- FlattenAeItem.Composition:
- allOf:
- - $ref: "#/components/schemas/FlattenAeItem"
- - type: object
- properties:
- duration:
- type: number
- format: double
- description: Duration of the composition in seconds.
- height:
- type: number
- format: double
- description: Height of the composition in pixels.
- id:
- type: integer
- format: int64
- description: Unique identifier for the composition as reported by After
- Effects.
- layerName:
- type: string
- description: Layer name of the composition. Note that composition name
- and it source layer name can differ.
- width:
- type: number
- format: double
- description: Width of the composition in pixels.
- workAreaStart:
- type: number
- format: double
- description: Work area start time of the composition in seconds.
- FlattenAeItem.Media:
- allOf:
- - $ref: "#/components/schemas/FlattenAeItem"
- - type: object
- properties:
- effects:
- type: array
- items:
- type: object
- description: List of effects applied to the media item.
- height:
- type: number
- format: double
- description: Height of the media item in pixels.
- mediaType:
- type: string
- description: "Type of the media item, such as video or image."
- enum:
- - AUDIO
- - VIDEO
- - IMAGE
- - SOLID
- - UNKNOWN
- preview:
- $ref: "#/components/schemas/SignedUrlFilePreview"
- width:
- type: number
- format: double
- description: Width of the media item in pixels.
- FlattenAeItem.Text:
- allOf:
- - $ref: "#/components/schemas/FlattenAeItem"
- - type: object
- properties:
- allCaps:
- type: boolean
- description: Indicates if the text has all caps option enabled.
- font:
- type: string
- description: Font name used in the text layer.
- fontFamily:
- type: string
- description: Font family used in the text layer.
- fontSize:
- type: number
- format: double
- description: Font size used in the text layer.
- fontStyle:
- type: string
- description: Font style used in the text layer.
- isParagraph:
- type: boolean
- description: Indicates if the text is a paragraph.
- leading:
- type: number
- format: double
- description: "Leading value for the text layer, which is the vertical\
- \ space between lines of text."
- tracking:
- type: number
- format: double
- description: "Tracking value for the text layer, which is the horizontal\
- \ space between characters."
- FlattenCompositionDescriptor:
- type: object
- properties:
- id:
- type: integer
- format: int64
- description: Unique identifier for the composition as reported by After
- Effects.
- inCompositionProps:
- $ref: "#/components/schemas/FlattenInCompositionProps"
- description: Set of layer properties that describe the behavior in the composition.
- internalId:
- type: string
- description: Plainly's internal ID of the composition descriptor.
- example: 12345678-1234-1234-1234-123456789012
- layerName:
- type: string
- description: Name of the composition source layer. Note that composition
- name and source layer name can differ.
- example: Main Composition
- name:
- type: string
- description: Name of the composition.
- example: Main Composition
- path:
- type: string
- description: Path to the composition in the project structure. Needed for
- parametrizing an item that is contained in this composition.
- example: Root->Main Composition
- FlattenInCompositionProps:
- type: object
- properties:
- adjustmentLayer:
- type: boolean
- description: Indicates if this is an adjustment layer. Note that this property
- can be inherit from parent composition(s) properties.
- enabled:
- type: boolean
- description: Indicates if the layer is enabled. Note that this property
- can be inherit from parent composition(s) properties.
- guideLayer:
- type: boolean
- description: Indicates if this is a guide layer. Note that this property
- can be inherit from parent composition(s) properties.
- inPoint:
- type: number
- format: double
- description: In point of the item in seconds relative to containing composition.
- outPoint:
- type: number
- format: double
- description: Out point of the item in seconds relative to containing composition.
- shy:
- type: boolean
- description: "Indicates if the layer is shy, meaning it is hidden in the\
- \ timeline unless the shy switch is enabled. Note that this property can\
- \ be inherit from parent composition(s) properties."
- startTime:
- type: number
- format: double
- description: Start time of the item in seconds relative to containing composition.
- IntegrationDelivery:
- type: object
- properties:
- deliveries:
- type: array
- description: List of all performed integration deliveries for a specific
- render.
- items:
- $ref: "#/components/schemas/IntegrationDelivery"
- Integrations:
- type: object
- description: "Integrations options for the render, meaningful only if integrations\
- \ are active for the project or template this render relates to."
- properties:
- passthrough:
- type: string
- description: "Data to be sent to the integration as the `integrationPassthrough`\
- \ parameter. Serves to pass arbitrary data to your active integrations.\
- \ Could be any string or a render parameter reference in formats `{{parameterName}}`\
- \ or `{{parameterName:defaultValue}}, including a reference to `{{webhookPassthrough}}\
- \ in the same manner`."
- skipAll:
- type: boolean
- description: "If `true`, any active integration for this project or template\
- \ will not be triggered."
- LayerParametrizationResult:
- type: object
- properties:
- assets:
- type: array
- description: List of assets to be updated in the video.
- items:
- $ref: "#/components/schemas/Asset"
- errorMessage:
- type: string
- description: Error message in case of the fatal error.
- fatalError:
- type: boolean
- description: If dynamic parameterization failed due to the error. Usually
- occurs when passed parameter(s) do not match expected structure.
- mandatoryNotResolved:
- type: boolean
- description: "If parameterization is mandatory, but the dynamic expression\
- \ could not be resolved."
- parametrization:
- $ref: "#/components/schemas/Parametrization"
- description: Parametrization details used to create assets. Can be `null`
- in case no parametrization has been defined for the layer.
- scripting:
- $ref: "#/components/schemas/Scripting"
- description: Scripting details used to create assets. Can be `null` in case
- no scripting has been defined for the layer.
- MeResponseDto:
- type: object
- properties:
- organizationId:
- type: string
- description: The ID of the organization.
- example: 123e4567-e89b-12d3-a456-426655440000
- organizationName:
- type: string
- description: The name of the organization.
- example: My Organization
- OutputFormatDto:
- type: object
- description: Output format to use for rendering. If not specified defaults to
- default output format for the target After Effects version.
- properties:
- attachment:
- type: boolean
- default: "false"
- description: "If the output file should be consider as an attachment, meaning\
- \ that the video link will initiate a download of the file in a web browser."
- example: false
- attachmentFileName:
- type: string
- description: "Optional, name of the file when downloading as attachment.\
- \ Note that this has effect only if `attachment` is `true`. The file name\
- \ **must** be provided without extension which will be added automatically\
- \ based on the selected format."
- example: my_cool_video
- outputModule:
- type: string
- description: |
- The output module defines the format of the video generated by the After Effects. Available options are:
- * `H_264` - output module for H.264 codec with 5 Mbps bitrate.
- * `H_264_HIGH_BIT_RATE` - output module for H.264 codec with 15 Mbps bitrate.
- * `HQ` - output module for quicktime video (`.mov`).
- * `HQ_ALPHA` - output module for quicktime video with alpha channel (`.mov`).
-
- *NOTE: If you use post encoding, the final video produced by Plainly will be in the format defined in the post encoding.*
- enum:
- - H_264
- - H_264_HIGH_BIT_RATE
- - HQ
- - HQ_ALPHA
- postEncoding:
- $ref: "#/components/schemas/PostEncoding"
- settingsTemplate:
- type: string
- description: |
- Defines render settings template to be used during After Effects rendering. Available options:
- * `BEST_SETTINGS`: `Best Settings` as defined in After Effects. Explicitly specifying the best settings for rendering has no effect, as this is already the default in After Effects.
- * `DRAFT`: `Draft Settings` as defined in After Effects, which means half resolution and lower quality settings. Should serve for testing purposes and previews.
-
- > NOTE: Using `DRAFT` template is currently free of charge and your video minutes will not be consumed.
- enum:
- - BEST_SETTINGS
- - DRAFT
- Parametrization:
- type: object
- properties:
- defaultValue:
- type: string
- description: Default value to use when `expression` is `true` and value
- can not be resolved.
- example: Samsung TV
- expression:
- type: boolean
- description: If `true` then `value` parameter represents a SpEl expression.
- example: true
- mandatory:
- type: boolean
- description: If render should fail immediately is a dynamic value for this
- parametrization can not be resolved.
- example: false
- value:
- type: string
- description: "Parametrization value. If `expression` parameter is `true`\
- \ then this represents a SpEl expression, otherwise static a value."
- example: "#productName"
- required:
- - value
- ParametrizedLayer:
- type: object
- description: Parametrization data for a single layer or composition.
- discriminator:
- mapping:
- COMPOSITION: "#/components/schemas/ParametrizedLayer.Composition"
- DATA: "#/components/schemas/ParametrizedLayer.Data"
- DATA_EFFECT: "#/components/schemas/ParametrizedLayer.DataEffect"
- MEDIA: "#/components/schemas/ParametrizedLayer.Media"
- SOLID_COLOR: "#/components/schemas/ParametrizedLayer.SolidColor"
- propertyName: layerType
- oneOf:
- - $ref: "#/components/schemas/ParametrizedLayer.Data"
- - $ref: "#/components/schemas/ParametrizedLayer.Media"
- - $ref: "#/components/schemas/ParametrizedLayer.SolidColor"
- - $ref: "#/components/schemas/ParametrizedLayer.Composition"
- - $ref: "#/components/schemas/ParametrizedLayer.DataEffect"
- properties:
- compositions:
- type: array
- items:
- $ref: "#/components/schemas/CompositionIdentifier"
- internalId:
- type: string
- description: "The internal ID of the layer, as defined in the project metadata."
- example: 123456
- layerName:
- type: string
- description: The name of the parametrized layer.
- example: cta
- layerType:
- type: string
- parametrization:
- $ref: "#/components/schemas/Parametrization"
- scripting:
- $ref: "#/components/schemas/Scripting"
- description: '`Beta Feature` The scripting definition for this parametrized
- layer.'
- required:
- - internalId
- - layerName
- ParametrizedLayer.Composition:
- allOf:
- - $ref: "#/components/schemas/ParametrizedLayer"
- description: Composition parametrization that can contain scripts applied on
- the composition.
- required:
- - compositions
- - internalId
- - layerName
- ParametrizedLayer.Data:
- allOf:
- - $ref: "#/components/schemas/ParametrizedLayer"
- - type: object
- properties:
- label:
- type: string
- description: The user-facing name of the layer when shown in the render
- form.
- example: Call to action
- parametrization:
- $ref: "#/components/schemas/Parametrization"
- description: The templated value definition for this parametrized layer.
- propertyName:
- type: string
- description: The property being parametrized.
- example: Source Text
- description: Data layer parametrization.
- example:
- propertyName: Source Text
- compositions:
- - id: 0
- name: main-comp
- internalId: "123456"
- label: Call to action
- layerName: cta
- layerType: DATA
- parametrization:
- defaultValue: Samsung TV
- expression: true
- mandatory: false
- value: "#productName"
- required:
- - compositions
- - internalId
- - label
- - layerName
- - propertyName
- ParametrizedLayer.DataEffect:
- allOf:
- - $ref: "#/components/schemas/ParametrizedLayer"
- - type: object
- properties:
- effectType:
- type: string
- description: The type of the effect.
- enum:
- - EFFECT_COLOR_CONTROL
- - EFFECT_SLIDER_CONTROL
- - EFFECT_CHECKBOX_CONTROL
- - EFFECT_POINT_CONTROL
- - EFFECT_DROPDOWN_CONTROL
- label:
- type: string
- description: The user-facing name of the layer when shown in the render
- form.
- example: Call to action
- parametrization:
- $ref: "#/components/schemas/Parametrization"
- description: The templated value definition for this parametrized layer.
- propertyName:
- type: string
- description: The property being parametrized.
- example: Effects.color1.Color
- description: Data effect parametrized layer.
- example:
- propertyName: Effects.color1.Color
- compositions:
- - id: 0
- name: main-comp
- internalId: "123456"
- label: Color control
- layerName: textColor
- layerType: DATA_EFFECT
- parametrization:
- defaultValue: "#0066ff"
- expression: true
- mandatory: false
- value: "#textColor"
- required:
- - compositions
- - effectType
- - internalId
- - label
- - layerName
- - propertyName
- ParametrizedLayer.Media:
- allOf:
- - $ref: "#/components/schemas/ParametrizedLayer"
- - type: object
- properties:
- label:
- type: string
- description: The user-facing name of the layer when shown in the render
- form.
- example: Call to action
- mediaType:
- type: string
- description: The type of the media being parametrized
- enum:
- - image
- - video
- - audio
- example: image
- pattern: image|video|audio
- parametrization:
- $ref: "#/components/schemas/Parametrization"
- description: The templated value definition for this parametrized layer.
- description: Media parametrized layer.
- example:
- propertyName: image
- compositions:
- - id: 0
- name: main-comp
- internalId: "123456"
- label: Main image
- layerName: image-layer
- layerType: MEDIA
- parametrization:
- defaultValue: https://some.cnd/image.png
- expression: true
- mandatory: false
- value: "#mainImage"
- required:
- - compositions
- - internalId
- - label
- - layerName
- - mediaType
- ParametrizedLayer.SolidColor:
- allOf:
- - $ref: "#/components/schemas/ParametrizedLayer"
- - type: object
- properties:
- label:
- type: string
- description: The user-facing name of the layer when shown in the render
- form.
- example: Call to action
- parametrization:
- $ref: "#/components/schemas/Parametrization"
- description: The templated value definition for this parametrized layer.
- propertyName:
- type: string
- description: The property being parametrized.
- enum:
- - source.mainSource.color
- description: Solid color parametrized layer.
- example:
- propertyName: source.mainSource.color
- compositions:
- - id: 0
- name: main-comp
- internalId: "123456"
- label: Background color
- layerName: backgroundSolid
- layerType: SOLID_COLOR
- parametrization:
- defaultValue: "#0066ff"
- expression: true
- mandatory: false
- value: "#background"
- required:
- - compositions
- - internalId
- - label
- - layerName
- PostEncoding:
- type: object
- description: |
- Enables the additional encoding on the output file of the After Effects render process.
-
- If not defined, following rules apply:
- * If output module which controls the output of the After Effects process is explicitly defined, then post-encoding is skipped.
- * Otherwise, the default post-encoding will be used.
-
- Available options are:
- * `default` - Default post encoding which in current version encodes into MP4 using H.264 codec with constant rate factor of `23`. Note that defaults might change in future versions.
- * `none` - No post encoding will be applied, the original After Effects output file will be kept.
- * `custom` - User specified custom encoding. The output format and encoding params can be specified.
- * `smallest` - Post encoding that produces the smallest file with acceptable quality, which in current version encodes into MP4 using H.265 codec with constant rate factor of `30`. Note that defaults might change in future versions.
- * `captions` - Post encoding that adds captions to the video.
- * `scale` - Post encoding that scales the video based on the specified percentage.
- discriminator:
- mapping:
- captions: "#/components/schemas/PostEncoding.Captions"
- custom: "#/components/schemas/PostEncoding.Custom"
- default: "#/components/schemas/PostEncoding.Default"
- none: "#/components/schemas/PostEncoding.None"
- scale: "#/components/schemas/PostEncoding.ScaleResolution"
- smallest: "#/components/schemas/PostEncoding.Smallest"
- propertyName: type
- oneOf:
- - $ref: "#/components/schemas/PostEncoding.Default"
- - $ref: "#/components/schemas/PostEncoding.None"
- - $ref: "#/components/schemas/PostEncoding.Custom"
- - $ref: "#/components/schemas/PostEncoding.Smallest"
- - $ref: "#/components/schemas/PostEncoding.Captions"
- - $ref: "#/components/schemas/PostEncoding.ScaleResolution"
- properties:
- type:
- type: string
- required:
- - type
- PostEncoding.Captions:
- allOf:
- - $ref: "#/components/schemas/PostEncoding"
- - type: object
- properties:
- baseEncoding:
- $ref: "#/components/schemas/PostEncoding"
- description: "Base encoding, that will be merged with this one."
- captionsPosition:
- type: string
- default: BOTTOM
- description: Captions position.
- enum:
- - TOP
- - CENTER
- - BOTTOM
- example: TOP
- captionsStyle:
- type: string
- default: BASIC
- description: Captions style.
- enum:
- - BASIC
- - BASIC_WITH_STROKE_AND_SHADOW
- - BASIC_WITH_SHADOW
- - POPPINS_WHITE
- - POPPINS_WHITE_VERTICAL
- example: BASIC_WITH_STROKE_AND_SHADOW
- srtFileUrl:
- type: string
- description: Url to the srt file.
- example: https://my.cnd.net/srt.srt
- description: Post encoding that adds captions to the video.
- required:
- - srtFileUrl
- PostEncoding.Custom:
- allOf:
- - $ref: "#/components/schemas/PostEncoding"
- - type: object
- properties:
- encodingFormat:
- type: string
- description: "Optional, format of the post-encoded file."
- enum:
- - MP4
- - GIF
- - OGG
- - WEBM
- - MOV
- - MP4_H265
- - MXF
- encodingParamsLine:
- type: string
- description: Encoding params passed to ffmpeg for post encoding.
- example: -vcodec libx264 -pix_fmt yuv420p
- description: Custom post encoding based on the user-defined parameters.
- PostEncoding.Default:
- allOf:
- - $ref: "#/components/schemas/PostEncoding"
- description: Default post encoding on the platform.
- PostEncoding.None:
- allOf:
- - $ref: "#/components/schemas/PostEncoding"
- description: No post encoding being performed.
- PostEncoding.ScaleResolution:
- allOf:
- - $ref: "#/components/schemas/PostEncoding"
- - type: object
- properties:
- scalingPercentage:
- type: integer
- format: int32
- description: "Scaling factor in percents. For example 50 scales the video\
- \ resolution down in half, and 200 doubles it up."
- example: 50
- maximum: 400
- description: Post encoding that scales the video down or up based on the provided
- percentage.
- PostEncoding.Smallest:
- allOf:
- - $ref: "#/components/schemas/PostEncoding"
- description: Smallest file size encoding type.
- ProjectFiles:
- type: object
- description: Project files options for the render.
- properties:
- uploadEnabled:
- type: boolean
- description: Enables uploading modified project files as a zip archive.
- ProjectRenderDto:
- type: object
- properties:
- attributes:
- type: object
- $ref: "#/components/schemas/RenderAttributes"
- additionalProperties:
- type: object
- options:
- $ref: "#/components/schemas/ExtraOptions"
- outputFormat:
- $ref: "#/components/schemas/OutputFormatDto"
- parameters:
- type: object
- additionalProperties:
- type: object
- description: Map of parameters to use in order to resolve the template parametrized
- layers. Keys in this map must not contain dots.
- example:
- name: Mike
- product:
- id: SU123456
- title: Samsung TV
- projectId:
- type: string
- description: The ID of the project to render.
- example: 3934539a-d7f1-4308-a33c-ca523c0c916a
- templateId:
- type: string
- description: "The ID of the template to use in the render. If not provided,\
- \ the project default template will be used."
- example: 0fade64c-588e-44c2-a9ea-d7435372cbfb
- webhook:
- $ref: "#/components/schemas/Webhook"
- required:
- - projectId
- ProjectShareDto:
- type: object
- properties:
- autoLatest:
- type: boolean
- description: "When true, the static link will automatically be updated with\
- \ the latest video for the given project and rendered template. Ignored\
- \ when `enabled` is `false`."
- example: true
- enabled:
- type: boolean
- description: If the static link sharing should be enabled for the project.
- example: true
- RenderAttributes:
- description: User-defined attributes of the render. The field `batchRenderId`
- is reserved and should be a string. The field `batchRenderSequenceNo` is reserved
- and should be a number. Keys in this map must not contain dots.
- example: "{\"author\": \"John\", \"batchRenderId\": \"render-id\"}"
- RenderInfo:
- type: object
- properties:
- error:
- type: boolean
- description: "The render is resulted to an error state, only `true` if `renderState=FAILED`\
- \ or `renderState=INVALID`."
- finished:
- type: boolean
- description: If render is not pending.
- renderId:
- type: string
- description: The id of the render that was used to produce the video.
- renderState:
- type: string
- description: The current state of the render.
- enum:
- - PENDING
- - THROTTLED
- - QUEUED
- - IN_PROGRESS
- - DONE
- - FAILED
- - INVALID
- - CANCELLED
- success:
- type: boolean
- description: "The render is done successfully, only `true` if `renderState=DONE`."
- required:
- - renderId
- - renderState
- RenderOptionsDto:
- type: object
- properties:
- options:
- $ref: "#/components/schemas/ExtraOptions"
- outputFormat:
- $ref: "#/components/schemas/OutputFormatDto"
- webhook:
- $ref: "#/components/schemas/Webhook"
- Resolution:
- type: object
- description: "Resolution of the rendered composition, and thus the video output."
- properties:
- height:
- type: number
- format: double
- description: The height pixels of the resolution.
- example: 1080
- minimum: 0
- width:
- type: number
- format: double
- description: The width pixels of the resolution.
- example: 1920
- minimum: 0
- RevisionUpdateDto:
- type: object
- description: Data for a the revision update.
- discriminator:
- mapping:
- PRESENTER: "#/components/schemas/RevisionUpdateDto.Presenter"
- SOCIAL_MEDIA: "#/components/schemas/RevisionUpdateDto.SocialMedia"
- SUMMARY_SLIDESHOW: "#/components/schemas/RevisionUpdateDto.Summary"
- propertyName: videoType
- oneOf:
- - $ref: "#/components/schemas/RevisionUpdateDto.Presenter"
- - $ref: "#/components/schemas/RevisionUpdateDto.Summary"
- - $ref: "#/components/schemas/RevisionUpdateDto.SocialMedia"
- properties:
- videoType:
- type: string
- required:
- - videoType
- RevisionUpdateDto.Presenter:
- allOf:
- - $ref: "#/components/schemas/RevisionUpdateDto"
- - type: object
- properties:
- avatarOptions:
- $ref: "#/components/schemas/AvatarOptions"
- description: The avatar updates for the revision.
- cta:
- type: string
- description: The call to action text at the end of the video.
- logoUrl:
- type: string
- description: The logo to be used in the video.
- scenes:
- type: array
- items:
- $ref: "#/components/schemas/VideoScene"
- minItems: 1
- description: Data for a presenter video type revision update.
- required:
- - avatarOptions
- - scenes
- RevisionUpdateDto.SocialMedia:
- allOf:
- - $ref: "#/components/schemas/RevisionUpdateDto"
- - type: object
- properties:
- asset:
- $ref: "#/components/schemas/StockAsset"
- description: Stock asset to display in the video.
- cta:
- type: string
- description: The call to action text at the end of the video.
- heading:
- type: string
- description: Main heading of an article to use in the video.
- logoUrl:
- type: string
- description: The logo of the news pr publishing company.
- musicUrl:
- type: string
- description: The custom music cover to use in the video.
- subheading:
- type: string
- description: Sub-heading of an article to use in the video.
- description: Data for a social media video type revision update.
- required:
- - asset
- - cta
- - heading
- - subheading
- RevisionUpdateDto.Summary:
- allOf:
- - $ref: "#/components/schemas/RevisionUpdateDto"
- - type: object
- properties:
- cta:
- type: string
- description: The call to action text at the end of the video.
- logoUrl:
- type: string
- description: The logo to be used in the video.
- scenes:
- type: array
- items:
- $ref: "#/components/schemas/VideoScene"
- minItems: 1
- voiceoverOptions:
- $ref: "#/components/schemas/VoiceoverOptions"
- description: The voiceover updates for the revision.
- description: Data for a summary video type revision update.
- required:
- - scenes
- - voiceoverOptions
- Script:
- type: object
- description: Script to apply to the layer.
- discriminator:
- mapping:
- COMPOSITION_SET_SIZE: "#/components/schemas/Script.CompositionActionSetSize"
- CROP: "#/components/schemas/Script.TimeActionCrop"
- EXTEND: "#/components/schemas/Script.TimeActionExtend"
- IMAGE_SEQUENCE_LOADER: "#/components/schemas/Script.ImageSequenceLoader"
- LAYER_MANAGEMENT: "#/components/schemas/Script.LayerManagement"
- MEDIA_AUTO_SCALE: "#/components/schemas/Script.MediaAutoScale"
- SCENE_MANAGEMENT: "#/components/schemas/Script.SceneManagement"
- SET_DURATION: "#/components/schemas/Script.TimeActionSetDuration"
- SHIFT_IN: "#/components/schemas/Script.TimeActionShiftIn"
- SHIFT_OUT: "#/components/schemas/Script.TimeActionShiftOut"
- SPREAD_LAYERS: "#/components/schemas/Script.TimeActionSpreadLayers"
- STRETCH: "#/components/schemas/Script.TimeActionStretch"
- TEXT_AUTO_SCALE: "#/components/schemas/TextAutoScaleScript"
- TRIM_IN: "#/components/schemas/Script.TimeActionTrimIn"
- TRIM_OUT: "#/components/schemas/Script.TimeActionTrimOut"
- propertyName: scriptType
- minLength: 1
- oneOf:
- - $ref: "#/components/schemas/Script.ImageSequenceLoader"
- - $ref: "#/components/schemas/Script.LayerManagement"
- - $ref: "#/components/schemas/Script.MediaAutoScale"
- - $ref: "#/components/schemas/TextAutoScaleScript"
- - $ref: "#/components/schemas/Script.SceneManagement"
- - $ref: "#/components/schemas/Script.TimeActionCrop"
- - $ref: "#/components/schemas/Script.TimeActionExtend"
- - $ref: "#/components/schemas/Script.TimeActionSetDuration"
- - $ref: "#/components/schemas/Script.TimeActionShiftIn"
- - $ref: "#/components/schemas/Script.TimeActionShiftOut"
- - $ref: "#/components/schemas/Script.TimeActionSpreadLayers"
- - $ref: "#/components/schemas/Script.TimeActionStretch"
- - $ref: "#/components/schemas/Script.TimeActionTrimIn"
- - $ref: "#/components/schemas/Script.TimeActionTrimOut"
- - $ref: "#/components/schemas/Script.CompositionActionSetSize"
- properties:
- scriptType:
- type: string
- required:
- - scriptType
- Script.CompositionActionSetSize:
- allOf:
- - $ref: "#/components/schemas/Script"
- - type: object
- properties:
- height:
- type: integer
- format: int32
- description: Height of the composition.
- example: 1080
- maximum: 30000
- width:
- type: integer
- format: int32
- description: Width of the composition.
- example: 1920
- maximum: 30000
- description: Script for changing the size of the composition.
- Script.ImageSequenceLoader:
- allOf:
- - $ref: "#/components/schemas/Script"
- - type: object
- properties:
- mandatory:
- type: boolean
- default: "false"
- description: Whether there should be at least one image passed when rendering.
- parameterName:
- type: string
- description: Name of the parameter that will be used to pass a list of
- images.
- pattern: "^[^.]+$"
- description: "This script replaces existing audio, image, or video layers with\
- \ a video compiled from a list of images."
- required:
- - parameterName
- Script.LayerManagement:
- allOf:
- - $ref: "#/components/schemas/Script"
- - type: object
- properties:
- parameterName:
- type: string
- description: Name of the parameter that will be used to pass data.
- pattern: "^[^.]+$"
- description: "This script replaces existing audio, image, or video layers with\
- \ a video compiled from a list of images."
- required:
- - parameterName
- Script.MediaAutoScale:
- allOf:
- - $ref: "#/components/schemas/Script"
- - type: object
- properties:
- fill:
- type: boolean
- description: "If true, the media will be scaled to fill the original layer\
- \ size."
- fixedRatio:
- type: boolean
- description: "If true, the media will be scaled to fit the original layer\
- \ size, but it will keep the original aspect ratio."
- transform:
- $ref: "#/components/schemas/Transform"
- description: "Script for automatically scaling the media according to its layer\
- \ size. If you wish to use position property, make sure to wrap the media\
- \ layer into a composition before use. If not wrapped, the layer reposition\
- \ based on its nearest parent composition. Refer to the [manual](https://help.plainlyvideos.com/docs/user-guide/projects/templates/template-creation/scripting/media-auto-scale)\
- \ for more information."
- Script.SceneManagement:
- allOf:
- - $ref: "#/components/schemas/Script"
- - type: object
- properties:
- headingLayerName:
- type: string
- default: heading
- description: Name of the layer that contains the heading text. This layer
- should exist in each composition that represents a heading.
- headlineCompositionPrefix:
- type: string
- default: Headline
- description: "Prefix for the headline composition names. If prefix equals\
- \ to `Headline`, it means that compositions that represent headlines\
- \ should be named `Headline 1-1`, `Headline 1-2`, `Headline 2-1`, etc.\
- \ The first number represents the scene, and the second number represents\
- \ the headline entry in the scene."
- mainAssetLayerName:
- type: string
- default: asset
- description: Name of the layer that contains the main asset. This layer
- should exist in the composition where this script is applied.
- maxHeadlines:
- type: integer
- format: int32
- default: "2"
- description: Maximum number of headlines that exist in each scene. Note
- that each headline can contain `heading` and `sub-heading`.
- maxScenes:
- type: integer
- format: int32
- default: "10"
- description: Maximum number of scenes that is contained in the container
- composition.
- mediaCompositionPrefix:
- type: string
- default: Media
- description: "Prefix for the media composition names. If prefix equals\
- \ to `Media`, it means that compositions that contains the media asset\
- \ should be named `Media 1`, `Media 2`, `Media 3`, etc. The number represents\
- \ the scene where the composition is contained."
- parameterName:
- type: string
- sceneAssetLayerName:
- type: string
- default: asset
- description: Name of the layer that contains the scene asset. This layer
- should exist in each composition that represents a scene.
- sceneCompositionPrefix:
- type: string
- default: Scene
- description: "Prefix for the scene composition names. If prefix equals\
- \ to `Scene`, it means that compositions that represent scenes should\
- \ be named `Scene 1`, `Scene 2`, etc."
- sceneShiftOverlap:
- type: integer
- format: int32
- default: "0"
- description: The overlap in frames to be applied in-between each scene.
- This is useful if you want to have a better transition between scenes.
- subHeadingLayerName:
- type: string
- default: sub-heading
- description: Name of the layer that contains the sub-heading text. This
- layer should exist in each composition that represents a sub-heading.
- description: This is a special script that is applied on a composition that
- represents a container of scenes. This script follows a naming convention
- that is described in the documentation.
- required:
- - headingLayerName
- - headlineCompositionPrefix
- - mainAssetLayerName
- - mediaCompositionPrefix
- - sceneAssetLayerName
- - sceneCompositionPrefix
- Script.TimeActionCrop:
- allOf:
- - $ref: "#/components/schemas/Script"
- - type: object
- properties:
- compEndsAtOutPoint:
- type: boolean
- description: Crops the end of a parent composition to the out-point (end)
- of this layer.
- compStartsAtInPoint:
- type: boolean
- description: Crops the beginning of a parent composition to the in-point
- (start) of this layer.
- description: Script for cropping composition based on it's layer variable duration.
- Script.TimeActionExtend:
- allOf:
- - $ref: "#/components/schemas/Script"
- - type: object
- properties:
- maxDuration:
- type: number
- format: double
- description: Maximum duration for extended layer.
- description: "Script for extending a layer out-point to match a full duration\
- \ of the source, regardless of parent composition duration."
- Script.TimeActionSetDuration:
- allOf:
- - $ref: "#/components/schemas/Script"
- - type: object
- properties:
- duration:
- type: number
- format: double
- description: New duration for a layer in seconds.
- description: Script for changing the duration of a layer.
- required:
- - duration
- Script.TimeActionShiftIn:
- allOf:
- - $ref: "#/components/schemas/Script"
- - type: object
- properties:
- shiftOverlap:
- type: integer
- format: int32
- description: The overlap of this layer and the target layer in frames.
- shiftTarget:
- type: string
- description: Name of the layer that is a shift target.
- shiftsTo:
- type: string
- description: |-
- Where to shift this layer in-point (start).
- * If the value is `in-point`, then it's shifted to the in-point (start) of the shift target.
- * If the value is `out-point`, then it's shifted to the out-point (end) of the shift target.
- pattern: in-point|out-point
- description: Script for shifting the start of a layer based on the duration
- of another layer in the same composition.
- required:
- - shiftTarget
- - shiftsTo
- Script.TimeActionShiftOut:
- allOf:
- - $ref: "#/components/schemas/Script"
- - type: object
- properties:
- shiftOverlap:
- type: integer
- format: int32
- description: The overlap of this layer and the target layer in frames.
- shiftTarget:
- type: string
- description: Name of the layer that is a shift target.
- shiftsTo:
- type: string
- description: |-
- Where to shift this layer out-point (end).
- * If the value is `in-point`, then it's shifted to the in-point (start) of the shift target.
- * If the value is `out-point`, then it's shifted to the out-point (end) of the shift target.
- pattern: in-point|out-point
- description: Script for shifting the end of a layer based on the duration of
- another layer in the same composition.
- required:
- - shiftTarget
- - shiftsTo
- Script.TimeActionSpreadLayers:
- allOf:
- - $ref: "#/components/schemas/Script"
- description: Script for equally spreading replaced layers inside the same composition.
- Script.TimeActionStretch:
- allOf:
- - $ref: "#/components/schemas/Script"
- - type: object
- properties:
- stretchOverlap:
- type: integer
- format: int32
- description: The overlap of this layer and the target layer in frames.
- stretchTarget:
- type: string
- description: Name of the layer that is a stretch target.
- stretchesTo:
- type: string
- description: |-
- How long to stretch this layer.
- * If the value is `in-point`, then it's stretched to the in-point (start) of the stretch target.
- * If the value is `out-point`, then it's stretched to the out-point (end) of the stretch target.
- * If the value is `end-of-comp`, then it's stretched to the end of the containing composition.
- pattern: in-point|out-point|end-of-comp
- description: Script for extending a layer duration based on the duration of
- another layer in the same composition.
- required:
- - stretchesTo
- Script.TimeActionTrimIn:
- allOf:
- - $ref: "#/components/schemas/Script"
- - type: object
- properties:
- trimOverlap:
- type: integer
- format: int32
- description: The overlap of this layer and the target layer in frames.
- trimTarget:
- type: string
- description: Name of the layer that is a trim target.
- trimsTo:
- type: string
- description: |-
- How to trim this layer.
- * If the value is `in-point`, then it's trimmed to the in-point (start) of the trim target.
- * If the value is `out-point`, then it's trimmed to the out-point (end) of the trim target.
- pattern: in-point|out-point
- description: Script for decreasing a layer duration (trimming) based on the
- duration of another layer in the same composition.
- required:
- - trimTarget
- - trimsTo
- Script.TimeActionTrimOut:
- allOf:
- - $ref: "#/components/schemas/Script"
- - type: object
- properties:
- trimOverlap:
- type: integer
- format: int32
- description: The overlap of this layer and the target layer in frames.
- trimTarget:
- type: string
- description: Name of the layer that is a trim target.
- trimsTo:
- type: string
- description: |-
- How to trim this layer.
- * If the value is `in-point`, then it's trimmed to the in-point (start) of the trim target.
- * If the value is `out-point`, then it's trimmed to the out-point (end) of the trim target.
- pattern: in-point|out-point
- description: Script for decreasing a layer duration (trimming) based on the
- duration of another layer in the same composition.
- required:
- - trimTarget
- - trimsTo
- Scripting:
- type: object
- properties:
- scripts:
- type: array
- description: List of scripts to apply to the layer.
- items:
- $ref: "#/components/schemas/Script"
- minLength: 1
- required:
- - scripts
- SignedUrlFilePreview:
- type: object
- description: Signed URL file preview with expiration time.
- properties:
- expiresAt:
- type: string
- format: date-time
- description: Expiration time of the signed URL.
- example: 2025-10-01T12:00:00Z
- link:
- type: string
- description: Link to the file preview.
- example: https://example.com/media-preview.jpg
- StockAsset:
- type: object
- description: Data for a the scene asset definition.
- discriminator:
- mapping:
- manual: "#/components/schemas/StockAsset.Manual"
- stock: "#/components/schemas/StockAsset.Stock"
- propertyName: type
- oneOf:
- - $ref: "#/components/schemas/StockAsset.Manual"
- - $ref: "#/components/schemas/StockAsset.Stock"
- properties:
- type:
- type: string
- required:
- - type
- StockAsset.Manual:
- allOf:
- - $ref: "#/components/schemas/StockAsset"
- - type: object
- properties:
- assetType:
- type: string
- enum:
- - IMAGE
- - VIDEO
- url:
- type: string
- description: Stock asset data containing custom stock asset provided by URL.
- required:
- - assetType
- - url
- StockAsset.Stock:
- allOf:
- - $ref: "#/components/schemas/StockAsset"
- - type: object
- properties:
- out:
- $ref: "#/components/schemas/StockAssetOut"
- description: Stock asset data containing stock asset provided by a stock provider.
- required:
- - out
- StockAssetIn:
- type: object
- description: The input for the stock asset search.
- properties:
- assetPreference:
- type: string
- description: The search preference.
- enum:
- - IMAGE
- - VIDEO
- - MIXED
- automated:
- type: boolean
- description: If the asset was selected automatically using AI.
- providers:
- type: array
- description: Limit the search to the explicit set of asset providers. If
- `null` or empty all providers will be searched.
- items:
- type: string
- enum:
- - RF123
- - UNSPLASH
- - PEXELS
- query:
- type: array
- description: The query used to search for the asset.
- items:
- type: string
- required:
- - query
- StockAssetOut:
- type: object
- description: The output of the stock asset search.
- properties:
- assetType:
- type: string
- description: The type of the asset.
- enum:
- - IMAGE
- - VIDEO
- duration:
- type: number
- format: double
- description: "The duration of the asset in seconds, if it is a video. In\
- \ case of the image it is `null`."
- height:
- type: integer
- format: int32
- description: The height of the asset in pixels.
- id:
- type: string
- description: "The ID of the asset, given by the provider."
- preview:
- type: boolean
- description: "If the asset is a preview, meaning that download of this asset\
- \ is needed to get the full resolution."
- provider:
- type: string
- description: The provider of the asset.
- enum:
- - RF123
- - UNSPLASH
- - PEXELS
- query:
- type: array
- description: The query used to search for the asset.
- items:
- type: string
- rank:
- type: string
- description: "The rank of the asset. The higher the rank, the better the\
- \ asset."
- enum:
- - LOW
- - MEDIUM
- - HIGH
- - EXCEPTIONAL
- thumb:
- type: string
- description: The thumbnail of the asset used for preview. Usually an image
- in lower resolution or a video thumbnail.
- url:
- type: string
- description: "The URL of the asset, usually a high resolution image or a\
- \ video. Can be `null` if asset is not free."
- width:
- type: integer
- format: int32
- description: The width of the asset in pixels.
- required:
- - assetType
- - id
- - provider
- - query
- - rank
- StockAssetSearch:
- type: object
- properties:
- in:
- $ref: "#/components/schemas/StockAssetIn"
- outs:
- type: array
- description: List of found assets during the search.
- items:
- $ref: "#/components/schemas/StockAssetOut"
- StockAssetSettings:
- type: object
- description: Defines preference for the types of assets used in the video
- properties:
- assetPreference:
- type: string
- description: "If videos should contain images, videos or both"
- enum:
- - IMAGE
- - VIDEO
- - MIXED
- required:
- - assetPreference
- SummaryProviderSettings:
- type: object
- description: "Settings for the AI summary creation. This summary settings are\
- \ used to produce headlines, voice over and presenter scripts."
- discriminator:
- mapping:
- CHAT_GPT: "#/components/schemas/SummaryProviderSettings.ChatGpt"
- propertyName: type
- oneOf:
- - $ref: "#/components/schemas/SummaryProviderSettings.ChatGpt"
- properties:
- type:
- type: string
- required:
- - type
- SummaryProviderSettings.ChatGpt:
- allOf:
- - $ref: "#/components/schemas/SummaryProviderSettings"
- - type: object
- properties:
- writingStyle:
- type: string
- description: |-
- Optional, writing style to use when producing the summary. If not specified, a generic style will be used. For example:
- > Please provide a comprehensive and well-sourced summary. Ensure the writing is in line with The New York Times' journalistic standards, tone, and clarity.
- example: "Please provide a comprehensive and well-sourced summary. Ensure\
- \ the writing is in line with The New York Times' journalistic standards,\
- \ tone, and clarity."
- description: Settings for the chat GPT summary provider.
- TextAutoScaleScript:
- allOf:
- - $ref: "#/components/schemas/Script"
- description: Script for automatically scaling the text layer based on its original
- size.
- Thumbnails:
- type: object
- description: "When specified, enables output of the video frames as PNG thumbnails.\
- \ Generated thumbnails would be available in addition to the video file. If\
- \ both frequencySeconds and atSeconds are specified, atSeconds takes precedence."
- properties:
- atSeconds:
- type: array
- description: Generated thumbnails would be PNG thumbnails based on specified
- timestamps in seconds.
- example:
- - 1
- - 23
- - 5.55
- - 10
- items:
- type: number
- format: double
- maxItems: 2147483647
- minItems: 1
- format:
- type: string
- default: PNG
- description: Thumbnail format.
- enum:
- - PNG
- - JPG
- example: PNG
- frequencySeconds:
- type: integer
- format: int32
- description: "Frequency in seconds to export a frame. For example, having\
- \ the value `frequencySeconds=5` and a rendered video that lasts `15 sec`,\
- \ would create 3 PNGs."
- example: 5
- minimum: 1
- fromEncodedVideo:
- type: boolean
- description: "When set to true, the thumbnails will be generated from the\
- \ encoded video. If set to false, the thumbnails will be generated from\
- \ the video outputted by the After Effects rendering process."
- Transform:
- type: object
- description: Transformation properties used to define custom size of the media
- layer and/or its position inside of the based on the parent composition.
- properties:
- position:
- $ref: "#/components/schemas/TransformPosition"
- size:
- $ref: "#/components/schemas/TransformSize"
- TransformPosition:
- type: object
- description: "Specifies the position of the media layer, based on its parent\
- \ composition."
- properties:
- posX:
- type: number
- format: double
- description: Position of the layer on the X axis.
- example: 100
- posY:
- type: number
- format: double
- description: Position of the layer on the Y axis.
- example: 100
- TransformSize:
- type: object
- description: Specifies the dimensions of the media layer.
- properties:
- sizeX:
- type: number
- format: double
- description: Width of the media layer.
- example: 1920
- sizeY:
- type: number
- format: double
- description: Height of the media layer.
- example: 1080
- TwitterAppDto:
- type: object
- properties:
- attributes:
- type: object
- $ref: "#/components/schemas/RenderAttributes"
- additionalProperties:
- type: object
- colorPalette:
- type: string
- description: "The color palette identifier to use. If the provided palette\
- \ is not supported by the selected design, this parameter will be ignored."
- enum:
- - WHITE
- - YELLOW
- - GREEN
- - GRAY
- - BEIGE
- - PINK
- - CYAN
- - ORANGE
- - BLUE
- - NAVY
- - PURPLE
- - RED
- - BROWN
- - BLACK
- example: BLUE
- designId:
- type: string
- $ref: "#/components/schemas/TwitterDesignIds"
- description: |-
- Id of the design to use. Only designs with category `TWITTER` can be used. If not provided a random design would be used.
-
- > NOTE: All available designs can be fetched using the [Designs](#tag/Designs) endpoint.
- example: twitter-box@v1
- options:
- $ref: "#/components/schemas/ExtraOptions"
- outputFormat:
- $ref: "#/components/schemas/OutputFormatDto"
- parameters:
- type: object
- additionalProperties:
- type: object
- description: |
- Optional map of additional parameters available in the app:
- * `optionCommentsOff` (boolean) - Hides the amount of comments in a generated video.
- * `optionLikesOff` (boolean) - Hides the amount of likes in a generated video.
- * `optionRetweetsOff` (boolean) - Hides the amount of retweets in a generated video.
- * `colorPrimary` (hex color as string) - Primary color, ignored if `colorPalette` is provided.
- * `colorSecondary` (hex color as string) - Secondary color, ignored if `colorPalette` is provided.
- * `colorTertiary` (hex color as string) - Tertiary color, ignored if `colorPalette` is provided.
- example:
- commentsOff: true
- tweet:
- type: string
- description: The url of the tweet which data should be rendered in the video.
- example: https://x.com/elonmusk/status/1593455727611215872
- twitterApiKey:
- type: string
- description: "The Twitter API key for a tweet data retrieval. Due to recent\
- \ changes in the Twitter API, we are unable to use our API keys. Rest\
- \ assured, your key will only be used for data retrieval purposes and\
- \ will not be stored."
- example: AAAAAAAAAAAAAAAAAAAAAN9oigEAAAAApjmFTUMJ47korUsZKO9vjt2dEiE
- variantId:
- type: string
- description: Variant id of the design to use. If not provided the default
- variant would be used.
- example: square
- webhook:
- $ref: "#/components/schemas/Webhook"
- required:
- - tweet
- - twitterApiKey
- TwitterDesignIds:
- type: string
- description: The ID of a design.
- enum:
- - twitter-bird@v1
- - twitter-box@v1
- - twitter-duotone@v1
- - twitter-dusty@v1
- - twitter-elegant@v1
- - twitter-industrial@v1
- UpdateBrandDto:
- type: object
- properties:
- settings:
- $ref: "#/components/schemas/BrandSettings"
- required:
- - settings
- UpdateTemplateDto:
- type: object
- properties:
- layers:
- type: array
- description: List of dynamically changed layers in this template.
- items:
- $ref: "#/components/schemas/ParametrizedLayer"
- name:
- type: string
- description: The name of the template.
- example: My template
- renderingComposition:
- type: string
- description: The name of the composition to render in this template.
- example: render-comp
- renderingCompositionId:
- type: integer
- format: int64
- description: "The ID of the composition that will be rendered, as defined\
- \ by project metadata."
- example: 123456
- required:
- - layers
- - name
- - renderingComposition
- - renderingCompositionId
- VideoData.Presenter:
- allOf:
- - $ref: "#/components/schemas/VideoDataVideoTypeVideoSettingsObjectVideoRevisionObject"
- - type: object
- properties:
- revisions:
- type: array
- items:
- $ref: "#/components/schemas/VideoRevision.Presenter"
- minItems: 0
- settings:
- $ref: "#/components/schemas/VideoSettings.Presenter"
- description: Settings to be used for the video creation.
- description: Data for a single presenter video type.
- required:
- - revisions
- - settings
- VideoData.SocialMedia:
- allOf:
- - $ref: "#/components/schemas/VideoDataVideoTypeVideoSettingsObjectVideoRevisionObject"
- - type: object
- properties:
- revisions:
- type: array
- items:
- $ref: "#/components/schemas/VideoRevision.SocialMedia"
- minItems: 0
- settings:
- $ref: "#/components/schemas/VideoSettings.SocialMedia"
- description: Settings to be used for the video creation.
- description: Data for a single social media video type.
- required:
- - revisions
- - settings
- VideoData.Summary:
- allOf:
- - $ref: "#/components/schemas/VideoDataVideoTypeVideoSettingsObjectVideoRevisionObject"
- - type: object
- properties:
- revisions:
- type: array
- items:
- $ref: "#/components/schemas/VideoRevision.Summary"
- minItems: 0
- settings:
- $ref: "#/components/schemas/VideoSettings.Summary"
- description: Settings to be used for the video creation.
- description: Data for a single summary video type.
- required:
- - revisions
- - settings
- VideoDataError:
- type: object
- description: The error that occurred while processing the video data.
- properties:
- code:
- type: string
- description: The error code.
- enum:
- - SUMMARY_FAILED
- message:
- type: string
- description: The error message.
- required:
- - code
- - message
- VideoDataVideoTypeVideoSettingsObjectVideoRevisionObject:
- type: object
- description: Data for a single article video.
- discriminator:
- mapping:
- PRESENTER: "#/components/schemas/VideoData.Presenter"
- SOCIAL_MEDIA: "#/components/schemas/VideoData.SocialMedia"
- SUMMARY_SLIDESHOW: "#/components/schemas/VideoData.Summary"
- propertyName: videoType
- oneOf:
- - $ref: "#/components/schemas/VideoData.Presenter"
- - $ref: "#/components/schemas/VideoData.Summary"
- - $ref: "#/components/schemas/VideoData.SocialMedia"
- properties:
- revisions:
- type: array
- items:
- $ref: "#/components/schemas/VideoRevisionObject"
- minItems: 0
- settings:
- $ref: "#/components/schemas/VideoSettingsObject"
- description: Settings to be used for the video creation.
- videoDataError:
- $ref: "#/components/schemas/VideoDataError"
- description: The error that occurred while processing the video data.
- videoType:
- type: string
- required:
- - videoType
- VideoRevision.Presenter:
- type: object
- description: A single revision of a presenter video type.
- properties:
- automated:
- type: boolean
- description: If the revision was created automatically from article and
- brand inputs using AI.
- avatar:
- $ref: "#/components/schemas/Avatar"
- description: The avatar for the presenter video.
- clonedFrom:
- type: string
- description: The id of the revision that this revision was cloned from.
- createdDate:
- type: string
- format: date-time
- description: The date when revision was created.
- cta:
- type: string
- description: The call to action text at the end of the video.
- finalRender:
- $ref: "#/components/schemas/RenderInfo"
- description: The information about the final video render.
- id:
- type: string
- description: The internal id of the revision.
- lastModified:
- type: string
- format: date-time
- description: The date when revision was last modified.
- logoUrl:
- type: string
- description: The logo to be used in the video.
- message:
- type: string
- description: "Human readable message about the state of the revision, usually\
- \ set only in error states."
- previewRender:
- $ref: "#/components/schemas/RenderInfo"
- description: The information about the preview video render.
- scenes:
- type: array
- items:
- $ref: "#/components/schemas/VideoScene"
- minItems: 1
- state:
- type: string
- description: |
- The current state of the revision, where states represent:
- * `DRAFT` - Editable revision data, video preview not yet available.
- * `PREVIEW` - Revision with a preview video that contains assets with watermarks.
- * `FINAL` - Final revision with a video that is ready for usage.
- * `ERROR` - Denotes an error state for a revision.
- * `PROCESSING` - Revision is in the process of preparing assets and rendering a video.
- enum:
- - DRAFT
- - PREVIEW
- - FINAL
- - ERROR
- - PROCESSING
- required:
- - avatar
- - createdDate
- - id
- - lastModified
- - scenes
- - state
- VideoRevision.SocialMedia:
- type: object
- description: A single revision of a social media video type.
- properties:
- asset:
- $ref: "#/components/schemas/StockAsset"
- description: Stock asset to display in the video.
- automated:
- type: boolean
- description: If the revision was created automatically from article and
- brand inputs using AI.
- clonedFrom:
- type: string
- description: The id of the revision that this revision was cloned from.
- createdDate:
- type: string
- format: date-time
- description: The date when revision was created.
- cta:
- type: string
- description: The call to action text at the end of the video.
- finalRender:
- $ref: "#/components/schemas/RenderInfo"
- description: The information about the final video render.
- heading:
- type: string
- description: Main heading of an article to use in the video.
- id:
- type: string
- description: The internal id of the revision.
- lastModified:
- type: string
- format: date-time
- description: The date when revision was last modified.
- logoUrl:
- type: string
- description: The logo of the news pr publishing company.
- message:
- type: string
- description: "Human readable message about the state of the revision, usually\
- \ set only in error states."
- musicUrl:
- type: string
- description: The custom music cover to use in the video.
- previewRender:
- $ref: "#/components/schemas/RenderInfo"
- description: The information about the preview video render.
- state:
- type: string
- description: |
- The current state of the revision, where states represent:
- * `DRAFT` - Editable revision data, video preview not yet available.
- * `PREVIEW` - Revision with a preview video that contains assets with watermarks.
- * `FINAL` - Final revision with a video that is ready for usage.
- * `ERROR` - Denotes an error state for a revision.
- * `PROCESSING` - Revision is in the process of preparing assets and rendering a video.
- enum:
- - DRAFT
- - PREVIEW
- - FINAL
- - ERROR
- - PROCESSING
- subheading:
- type: string
- description: Sub-heading of an article to use in the video.
- required:
- - createdDate
- - cta
- - id
- - lastModified
- - state
- VideoRevision.Summary:
- type: object
- description: A single revision of a summary video type.
- properties:
- automated:
- type: boolean
- description: If the revision was created automatically from article and
- brand inputs using AI.
- clonedFrom:
- type: string
- description: The id of the revision that this revision was cloned from.
- createdDate:
- type: string
- format: date-time
- description: The date when revision was created.
- cta:
- type: string
- description: The call to action text at the end of the video.
- finalRender:
- $ref: "#/components/schemas/RenderInfo"
- description: The information about the final video render.
- id:
- type: string
- description: The internal id of the revision.
- lastModified:
- type: string
- format: date-time
- description: The date when revision was last modified.
- logoUrl:
- type: string
- description: The logo to be used in the video.
- message:
- type: string
- description: "Human readable message about the state of the revision, usually\
- \ set only in error states."
- previewRender:
- $ref: "#/components/schemas/RenderInfo"
- description: The information about the preview video render.
- scenes:
- type: array
- items:
- $ref: "#/components/schemas/VideoScene"
- minItems: 1
- state:
- type: string
- description: |
- The current state of the revision, where states represent:
- * `DRAFT` - Editable revision data, video preview not yet available.
- * `PREVIEW` - Revision with a preview video that contains assets with watermarks.
- * `FINAL` - Final revision with a video that is ready for usage.
- * `ERROR` - Denotes an error state for a revision.
- * `PROCESSING` - Revision is in the process of preparing assets and rendering a video.
- enum:
- - DRAFT
- - PREVIEW
- - FINAL
- - ERROR
- - PROCESSING
- voiceover:
- $ref: "#/components/schemas/Voiceover"
- description: The voiceover for the summary slideshow.
- required:
- - createdDate
- - id
- - lastModified
- - scenes
- - state
- - voiceover
- VideoRevisionObject:
- type: object
- description: Revision of data for a single article video.
- discriminator:
- mapping:
- PRESENTER: "#/components/schemas/VideoRevision.Presenter"
- SOCIAL_MEDIA: "#/components/schemas/VideoRevision.SocialMedia"
- SUMMARY_SLIDESHOW: "#/components/schemas/VideoRevision.Summary"
- propertyName: videoType
- oneOf:
- - $ref: "#/components/schemas/VideoRevision.Presenter"
- - $ref: "#/components/schemas/VideoRevision.Summary"
- - $ref: "#/components/schemas/VideoRevision.SocialMedia"
- properties:
- automated:
- type: boolean
- description: If the revision was created automatically from article and
- brand inputs using AI.
- clonedFrom:
- type: string
- description: The id of the revision that this revision was cloned from.
- createdDate:
- type: string
- format: date-time
- description: The date when revision was created.
- finalRender:
- $ref: "#/components/schemas/RenderInfo"
- description: The information about the final video render.
- id:
- type: string
- description: The internal id of the revision.
- lastModified:
- type: string
- format: date-time
- description: The date when revision was last modified.
- message:
- type: string
- description: "Human readable message about the state of the revision, usually\
- \ set only in error states."
- previewRender:
- $ref: "#/components/schemas/RenderInfo"
- description: The information about the preview video render.
- state:
- type: string
- description: |
- The current state of the revision, where states represent:
- * `DRAFT` - Editable revision data, video preview not yet available.
- * `PREVIEW` - Revision with a preview video that contains assets with watermarks.
- * `FINAL` - Final revision with a video that is ready for usage.
- * `ERROR` - Denotes an error state for a revision.
- * `PROCESSING` - Revision is in the process of preparing assets and rendering a video.
- enum:
- - DRAFT
- - PREVIEW
- - FINAL
- - ERROR
- - PROCESSING
- videoType:
- type: string
- required:
- - createdDate
- - id
- - lastModified
- - state
- - videoType
- VideoScene:
- type: object
- properties:
- asset:
- $ref: "#/components/schemas/StockAsset"
- description: The selected asset for the scene.
- duration:
- type: number
- format: double
- description: The duration of the scene in seconds.
- headlines:
- type: array
- description: The headlines to be displayed in the scene.
- items:
- $ref: "#/components/schemas/ArticleVideoSceneHeadline"
- manualAssetOverride:
- type: boolean
- description: If this scene has the manual asset override.
- script:
- type: string
- description: "The script for the scene that will be used for the voiceover\
- \ or avatar creation. Pauses in the script are defined using pause markers.\
- \ For example, adding `[3s]` anywhere in the script will add a pause of\
- \ 3 seconds at that point."
- suggestedAssets:
- $ref: "#/components/schemas/StockAssetSearch"
- description: The assets that are suggested for this scene by searching the
- stock asset providers.
- required:
- - asset
- - script
- VideoSettings.Presenter:
- allOf:
- - $ref: "#/components/schemas/VideoSettingsObject"
- - type: object
- properties:
- avatarProviderSettings:
- $ref: "#/components/schemas/AvatarProviderSettings"
- defaultCta:
- type: string
- description: Default call to action to use in the video.
- example: READ MORE
- defaultLogoUrl:
- type: string
- description: "Optional default logo URL to use in the video. If not specified,\
- \ the brand logo will be used by default."
- example: https://www.nytimes.com/logo.png
- stockAssetSettings:
- $ref: "#/components/schemas/StockAssetSettings"
- summaryProviderSettings:
- $ref: "#/components/schemas/SummaryProviderSettings"
- description: Settings for a presenter video type to be produced for each article.
- required:
- - avatarProviderSettings
- - id
- - projectId
- - stockAssetSettings
- - summaryProviderSettings
- - targetLanguage
- - templateId
- VideoSettings.SocialMedia:
- allOf:
- - $ref: "#/components/schemas/VideoSettingsObject"
- - type: object
- properties:
- defaultCta:
- type: string
- description: Default call to action to use in the video.
- example: READ MORE
- defaultLogoUrl:
- type: string
- description: "Optional default logo URL to use in the video. If not specified,\
- \ the brand logo will be used by default."
- example: https://www.nytimes.com/logo.png
- defaultMusic:
- type: string
- description: "Optional default audio URL to use in the video. If not specified,\
- \ the music is defined by the video template itself."
- example: https://www.nytimes.com/music.mp3
- description: Settings for a social media video type to be produced for each
- article.
- required:
- - defaultCta
- - id
- - projectId
- - targetLanguage
- - templateId
- VideoSettings.Summary:
- allOf:
- - $ref: "#/components/schemas/VideoSettingsObject"
- - type: object
- properties:
- defaultCta:
- type: string
- description: Default call to action to use in the video.
- example: READ MORE
- defaultLogoUrl:
- type: string
- description: "Optional default logo URL to use in the video. If not specified,\
- \ the brand logo will be used by default."
- example: https://www.nytimes.com/logo.png
- stockAssetSettings:
- $ref: "#/components/schemas/StockAssetSettings"
- summaryProviderSettings:
- $ref: "#/components/schemas/SummaryProviderSettings"
- voiceoverProviderSettings:
- $ref: "#/components/schemas/VoiceoverProviderSettings"
- description: Settings for a summary video type to be produced for each article.
- required:
- - id
- - projectId
- - stockAssetSettings
- - summaryProviderSettings
- - targetLanguage
- - templateId
- - voiceoverProviderSettings
- VideoSettingsObject:
- type: object
- description: Settings for a video types to be produced for each article.
- discriminator:
- mapping:
- PRESENTER: "#/components/schemas/VideoSettings.Presenter"
- SOCIAL_MEDIA: "#/components/schemas/VideoSettings.SocialMedia"
- SUMMARY_SLIDESHOW: "#/components/schemas/VideoSettings.Summary"
- propertyName: videoType
- oneOf:
- - $ref: "#/components/schemas/VideoSettings.Presenter"
- - $ref: "#/components/schemas/VideoSettings.Summary"
- - $ref: "#/components/schemas/VideoSettings.SocialMedia"
- properties:
- design:
- type: boolean
- description: If the video uses design template or not.
- enabled:
- type: boolean
- description: If the video creation is enabled.
- id:
- type: string
- description: The internal id of the video type.
- example: 1234567890
- projectId:
- type: string
- description: The id of the Plainly project to use for the video rendering.
- targetLanguage:
- type: string
- description: The target language code in the produced video. Does not need
- to be same as the default language of the brand.
- example: en-US
- templateId:
- type: string
- description: The id of the template of the Plainly project to use for the
- video rendering.
- videoType:
- type: string
- required:
- - id
- - projectId
- - targetLanguage
- - templateId
- - videoType
- Voiceover:
- type: object
- properties:
- in:
- $ref: "#/components/schemas/VoiceoverIn"
- out:
- $ref: "#/components/schemas/VoiceoverOut"
- VoiceoverIn:
- type: object
- description: The input for the voiceover creation.
- properties:
- languageCode:
- type: string
- description: The language code for the voiceover.
- paragraphs:
- type: array
- description: The paragraphs of the voiceover content.
- items:
- $ref: "#/components/schemas/VoiceoverInParagraph"
- settings:
- $ref: "#/components/schemas/VoiceoverProviderSettings"
- description: The settings for the voiceover provider.
- required:
- - languageCode
- - paragraphs
- - settings
- VoiceoverInParagraph:
- type: object
- description: A single paragraph of the voiceover content.
- properties:
- text:
- type: string
- description: The text to convert to voiceover.
- required:
- - text
- VoiceoverOptions:
- type: object
- description: The options for the voiceover creation.
- properties:
- languageCode:
- type: string
- description: The language code for the voiceover.
- settings:
- $ref: "#/components/schemas/VoiceoverProviderSettings"
- description: The settings for the voiceover provider.
- required:
- - languageCode
- - settings
- VoiceoverOut:
- type: object
- description: The output of the voiceover creation.
- properties:
- duration:
- type: number
- format: double
- paragraphDurations:
- type: array
- description: The duration of each input paragraph in seconds.
- items:
- type: number
- format: double
- providerResponse:
- type: object
- additionalProperties:
- type: object
- description: The complete response from the voiceover service provider used.
- url:
- type: string
- description: The URL of the voiceover audio.
- required:
- - paragraphDurations
- - url
- VoiceoverProviderSettings:
- type: object
- description: Settings for the AI voice over creation. The created voice will
- be used as the audio in the video.
- discriminator:
- mapping:
- GCP: "#/components/schemas/VoiceoverProviderSettings.Gcp"
- propertyName: type
- oneOf:
- - $ref: "#/components/schemas/VoiceoverProviderSettings.Gcp"
- properties:
- type:
- type: string
- required:
- - type
- VoiceoverProviderSettings.Gcp:
- allOf:
- - $ref: "#/components/schemas/VoiceoverProviderSettings"
- - type: object
- properties:
- audioConfigPitch:
- type: number
- format: double
- description: "Optional speaking pitch, in the range [-20.0, 20.0]. 20\
- \ means increase 20 semitones from the original pitch. -20 means decrease\
- \ 20 semitones from the original pitch. See [AudioConfig](https://cloud.google.com/text-to-speech/docs/reference/rest/v1/AudioConfig)\
- \ for details."
- maximum: 20
- minimum: -20
- audioConfigSpeakingRate:
- type: number
- format: double
- description: "Optional, speaking rate/speed, in the range [0.25, 4.0].\
- \ 1.0 is the normal native speed supported by the specific voice. 2.0\
- \ is twice as fast, and 0.5 is half as fast. If unset, defaults to the\
- \ native 1.0 speed. See [AudioConfig](https://cloud.google.com/text-to-speech/docs/reference/rest/v1/AudioConfig)\
- \ for details."
- maximum: 4
- minimum: 0
- voiceName:
- type: string
- description: "The name of the voice. If not set, the service will choose\
- \ a voice based on the other parameters such as video target language\
- \ and gender. See [available voices](https://cloud.google.com/text-to-speech/docs/voices)\
- \ for details."
- example: ' en-US-News-K'
- description: Settings for the GCP voiceover provider.
- Watermark:
- type: object
- description: "When specified, creates an additional video with watermark."
- properties:
- encodingParamsLine:
- type: string
- description: "Additional ffmpeg command line parameters to change watermark\
- \ position, size, etc. If not specified, the watermark is placed at the\
- \ top left corner with opacity of 0.8."
- example: "-filter_complex [1]scale=iw*0.2:-1,format=rgba,colorchannelmixer=aa=0.8[watermark];[0][watermark]overlay=10:10[out]\
- \ -map [out]"
- url:
- type: string
- description: A public url to the watermark image or video.
- example: https://example.com/watermark.png
- required:
- - url
- Webhook:
- type: object
- description: |-
- The webhook details passed when the rendering was initiated. When specified, the delivery on the provided webhook URL will be done automatically in the following fashion:
- * A webhook HTTP(S) call expects a `2xx` status code in order to be marked as successful.
- * In case of a failed delivery, Plainly will attempt to re-call your webhook for up to one day in space of 15 minutes.
- * A webhook HTTP(S) request has a timeout of 30 seconds.
- * A webhook HTTP(S) request does follow redirects.
- properties:
- onFailure:
- type: boolean
- default: "false"
- description: Should webhook be called also on the failed renders.
- onInvalid:
- type: boolean
- default: "null"
- description: |-
- Should webhook be called also on the invalid renders.
-
- > NOTE: If this parameter is `null` or unset, the value of the `onFailure` parameter will be used instead in order to decide if the webhook should be called on the invalid renders.
- passthrough:
- type: string
- description: "Passthrough value for the webhook. Could be any string or\
- \ a render parameter reference in formats `{{parameterName}}` or `{{parameterName:defaultValue}}`,\
- \ including a reference to `{{integrationPassthrough}}` in the same manner."
- url:
- type: string
- description: The HTTP(S) webhook URL to execute the `POST` call once the
- rendering is finished.
- example: https://hooks.zapier.com/hooks/catch/123456/abcdefg/
- required:
- - url
- WebhookDelivery:
- type: object
- properties:
- deliveries:
- type: array
- description: List of all performed webhook deliveries for a specific render.
- items:
- $ref: "#/components/schemas/WebhookDelivery"
- status:
- type: string
- description: Status of the webhook execution.
- enum:
- - PENDING
- - RETRYING
- - IGNORED
- - FAILURE
- - SUCCESS
- WorkerAnalysisError:
- description: "Optional, an error map in case project analysis fails."
- oneOf:
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_ANALYSIS_UNABLE_TO_READ_PROJECT_FONTS
- message:
- description: Human-readable message that explains the error.
- title: Reading fonts failed
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_ANALYSIS_UNABLE_TO_PARSE_PACKAGED_FONTS
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- fonts:
- type: array
- description: Font files that are not parsable.
- example: "[\"font1.ttf\", \"font2.ttf\"]"
- items:
- type: string
- title: Parsing fonts failed
- - deprecated: true
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_ANALYSIS_DUPLICATED_FONTS_FOUND
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- fonts:
- type: array
- description: Fonts that have multiple font files..
- example: "[\"Roboto\", \"Roboto-Bold\"]"
- items:
- type: string
- title: Duplicated fonts
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_ANALYSIS_FONTS_MISMATCH
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- extraFonts:
- type: array
- deprecated: true
- description: Fonts that are not needed.
- example: "[\"Serif\"]"
- items:
- type: string
- missingFonts:
- type: array
- description: Fonts that are missing.
- example: "[\"Roboto\", \"Roboto-Bold\"]"
- items:
- type: string
- title: Missing fonts
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_ANALYSIS_UNSUPPORTED_AE_VERSION
- message:
- description: Human-readable message that explains the error.
- title: Unsupported After Effects version
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_ANALYSIS_PROJECT_MISSING_FILES_ERROR
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- missingFiles:
- type: array
- description: Files that are missing in the uploaded project.
- example: "[\"image.png\", \"audio.mp3\"]"
- items:
- type: string
- title: Missing project files
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_SCRIPT_FATAL_ERROR
- message:
- description: Human-readable message that explains the error.
- title: Script fatal error
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - INFRASTRUCTURE_FAILURE
- message:
- description: Human-readable message that explains the error.
- title: Infrastructure failure
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_AFTER_EFFECTS_ERROR
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- log:
- description: Log output of the After Effects process.
- title: After Effects error
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_TIMEOUT
- message:
- description: Human-readable message that explains the error.
- title: Timeout
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_DOWNLOAD_ASSET_FAILED
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- urls:
- type: array
- description: URLs that failed to download.
- example: "[\"https://example.com/image.png\"]"
- items:
- type: string
- title: Download failed
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_IMPORT_ASSET_FAILED
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- assets:
- type: array
- description: List of assets that failed to import.
- example: "[{\"src\": \"https://example.com/image.jpg\", \"error\"\
- : \"After Effects error: The source compression type is not supported\"\
- , \"fileName\": \"jTiNVxWK2dwNDnztBcsQ.png\"}, {\"src\": \"https://example.com/video.mp4\"\
- , \"error\": \"After Effects error: The source file has bad header.\
- \ Please check that it is a valid file.\", \"fileName\": \"cDkAaWlndaMMsmuqmqbf\"\
- }]"
- items:
- type: object
- properties:
- error:
- type: string
- description: The error message for the asset.
- fileName:
- type: string
- description: The asset file name on the local disk.
- src:
- type: string
- description: The source URL of the asset.
- title: Import failed
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_FFMPEG_ENCODING_ERROR
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- cmdArgs:
- type: array
- description: FFmpeg command arguments.
- example: "[\"-i\", \"input.mp4\", \"-c:v\", \"libx264\", \"-crf\"\
- , \"23\", \"-c:a\", \"aac\", \"-b:a\", \"128k\", \"output.mp4\"]"
- items:
- type: string
- log:
- description: Log output of the FFmpeg process.
- title: Encoding error
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_FATAL_ERROR
- message:
- description: Human-readable message that explains the error.
- title: Worker fatal error
- - description: Generic error when the error is not covered by the specific error
- codes. In versions prior to `0.14.0` all errors are reported in this format.
- title: Generic error
- WorkerRenderingError:
- description: "Optional, an error map in case render state is `FAILED` or `INVALID`"
- oneOf:
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_SCRIPT_ACTION_WRONG_LAYER_TYPE
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- actionName:
- description: The name of the script action.
- correctLayerTypes:
- type: array
- description: The types of layers to which the script can be correctly
- added.
- items:
- type: string
- layerName:
- description: The name of the layer to which the script is added.
- title: Script incompatible layer
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_SCRIPT_ROOT_COMP_NOT_ALLOWED
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- actionName:
- description: The name of the script action.
- title: Script root unsupported
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_SCRIPT_LAYER_NOT_FOUND
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- layerName:
- description: The name of the layer to which the script is added.
- parentComp:
- description: The name of the parent composition where the layer should
- exist.
- title: Script non-existing layer
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_SCRIPT_COMPOSITION_NOT_FOUND
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- compositionName:
- description: The name of the composition to which the script is added.
- title: Script non-existing composition
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_SCRIPT_FONTS_INVALID
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- layers:
- type: array
- items:
- type: object
- description: List of layers with wrong fonts.
- example: "[{\"compositionName\": \"Main\", \"layerName\": \"Text\
- \ 1\", \"layerId\": \"1\", \"text\": \"Hello\", \"font\": \"Arial\"\
- , \"fontLocation\": \"fonts/Arial.ttf\"}, {\"compositionName\"\
- : \"Main\", \"layerName\": \"Text 2\", \"layerId\": \"2\", \"\
- text\": \"World\", \"font\": \"AnotherFont\", \"fontLocation\"\
- : \"fonts/Another.otf\"}]"
- properties:
- compositionName:
- type: string
- description: The composition that contains the layer.
- font:
- type: string
- description: The current font value of the layer.
- fontLocation:
- type: string
- description: The location of the font file.
- layerId:
- type: string
- description: The ID of the layer.
- layerName:
- type: string
- description: The name of the layer.
- text:
- type: string
- description: The text value of the layer.
- title: Replace fonts failed
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_SCRIPT_FATAL_ERROR
- message:
- description: Human-readable message that explains the error.
- title: Script fatal error
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - RENDER_INVALID
- message:
- description: Human-readable message that explains the error.
- title: Invalid render
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - INFRASTRUCTURE_FAILURE
- message:
- description: Human-readable message that explains the error.
- title: Infrastructure failure
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_CONVERT_ASSETS_FAILED
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- assets:
- type: array
- description: Assets that failed to be converted.
- example: "[\"https://my.example.com/image1.heic\", \"https://my.example.com/image2.heic\"\
- ]"
- items:
- type: string
- title: Failed to convert assets
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_FONT_INSTALL_FAILED
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- fonts:
- type: array
- description: Fonts that failed to be installed.
- example: "[\"https://myserver/fonts/ArialMT.ttf\", \"https://myserver/fonts/another-one\"\
- ]"
- items:
- type: string
- title: Failed to install fonts
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_AFTER_EFFECTS_ERROR
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- log:
- description: Log output of the After Effects process.
- title: After Effects error
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_TIMEOUT
- message:
- description: Human-readable message that explains the error.
- title: Timeout
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_DOWNLOAD_ASSET_FAILED
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- urls:
- type: array
- description: URLs that failed to download.
- example: "[\"https://example.com/image.png\"]"
- items:
- type: string
- title: Download failed
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_IMPORT_ASSET_FAILED
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- assets:
- type: array
- description: List of assets that failed to import.
- example: "[{\"src\": \"https://example.com/image.jpg\", \"error\"\
- : \"After Effects error: The source compression type is not supported\"\
- , \"fileName\": \"jTiNVxWK2dwNDnztBcsQ.png\"}, {\"src\": \"https://example.com/video.mp4\"\
- , \"error\": \"After Effects error: The source file has bad header.\
- \ Please check that it is a valid file.\", \"fileName\": \"cDkAaWlndaMMsmuqmqbf\"\
- }]"
- items:
- type: object
- properties:
- error:
- type: string
- description: The error message for the asset.
- fileName:
- type: string
- description: The asset file name on the local disk.
- src:
- type: string
- description: The source URL of the asset.
- title: Import failed
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_FFMPEG_ENCODING_ERROR
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- cmdArgs:
- type: array
- description: FFmpeg command arguments.
- example: "[\"-i\", \"input.mp4\", \"-c:v\", \"libx264\", \"-crf\"\
- , \"23\", \"-c:a\", \"aac\", \"-b:a\", \"128k\", \"output.mp4\"]"
- items:
- type: string
- log:
- description: Log output of the FFmpeg process.
- title: Encoding error
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_FATAL_ERROR
- message:
- description: Human-readable message that explains the error.
- title: Worker fatal error
- - description: Generic error when the error is not covered by the specific error
- codes. In versions prior to `0.14.0` all errors are reported in this format.
- title: Generic error
- WorkerUpgradeError:
- description: "Optional, an error map in case project upgrade fails."
- oneOf:
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_ANALYSIS_UNABLE_TO_UPGRADE_AE_VERSION
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- fromVersion:
- description: The current project version.
- toVersion:
- description: The targeted project version.
- title: Upgrade failed
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_SCRIPT_FATAL_ERROR
- message:
- description: Human-readable message that explains the error.
- title: Script fatal error
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - INFRASTRUCTURE_FAILURE
- message:
- description: Human-readable message that explains the error.
- title: Infrastructure failure
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_AFTER_EFFECTS_ERROR
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- log:
- description: Log output of the After Effects process.
- title: After Effects error
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_TIMEOUT
- message:
- description: Human-readable message that explains the error.
- title: Timeout
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_DOWNLOAD_ASSET_FAILED
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- urls:
- type: array
- description: URLs that failed to download.
- example: "[\"https://example.com/image.png\"]"
- items:
- type: string
- title: Download failed
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_IMPORT_ASSET_FAILED
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- assets:
- type: array
- description: List of assets that failed to import.
- example: "[{\"src\": \"https://example.com/image.jpg\", \"error\"\
- : \"After Effects error: The source compression type is not supported\"\
- , \"fileName\": \"jTiNVxWK2dwNDnztBcsQ.png\"}, {\"src\": \"https://example.com/video.mp4\"\
- , \"error\": \"After Effects error: The source file has bad header.\
- \ Please check that it is a valid file.\", \"fileName\": \"cDkAaWlndaMMsmuqmqbf\"\
- }]"
- items:
- type: object
- properties:
- error:
- type: string
- description: The error message for the asset.
- fileName:
- type: string
- description: The asset file name on the local disk.
- src:
- type: string
- description: The source URL of the asset.
- title: Import failed
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_FFMPEG_ENCODING_ERROR
- message:
- description: Human-readable message that explains the error.
- params:
- description: Additional details.
- properties:
- cmdArgs:
- type: array
- description: FFmpeg command arguments.
- example: "[\"-i\", \"input.mp4\", \"-c:v\", \"libx264\", \"-crf\"\
- , \"23\", \"-c:a\", \"aac\", \"-b:a\", \"128k\", \"output.mp4\"]"
- items:
- type: string
- log:
- description: Log output of the FFmpeg process.
- title: Encoding error
- - deprecated: false
- properties:
- code:
- description: The error code.
- enum:
- - WORKER_FATAL_ERROR
- message:
- description: Human-readable message that explains the error.
- title: Worker fatal error
- - description: Generic error when the error is not covered by the specific error
- codes. In versions prior to `0.14.0` all errors are reported in this format.
- title: Generic error
- securitySchemes:
- ApiKey:
- description: |
- The API key is needed to authorize requests. You can get your API key in the [Settings](https://app.plainlyvideos.com/dashboard/user/settings) section of the Plainly Web App Dashboard.
- To authorize use API key as username in the basic HTTP authentication, leaving the password empty.
- For additional support you can contact us.
- scheme: basic
- type: http
diff --git a/src/index.ts b/src/index.ts
index c16af48..e30358a 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,3 +1,5 @@
+#!/usr/bin/env node
+
import { PlainlyMcpServer } from "./server";
import env from "./env";
diff --git a/tsconfig.json b/tsconfig.json
index 168c65b..6390223 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -2,7 +2,9 @@
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
- "lib": ["ES2022"],
+ "lib": [
+ "ES2022"
+ ],
"moduleResolution": "node",
"rootDir": "./src",
"outDir": "./dist",
@@ -20,8 +22,15 @@
"noFallthroughCasesInSwitch": true,
"allowSyntheticDefaultImports": true,
"isolatedModules": true,
- "types": ["node"]
+ "types": [
+ "node"
+ ]
},
- "include": ["src/**/*"],
- "exclude": ["node_modules", "dist"]
+ "include": [
+ "src/**/*"
+ ],
+ "exclude": [
+ "node_modules",
+ "dist"
+ ]
}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 65421d7..4cdbf7f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -259,6 +259,21 @@ __metadata:
languageName: node
linkType: hard
+"@plainly-videos/mcp-server@workspace:.":
+ version: 0.0.0-use.local
+ resolution: "@plainly-videos/mcp-server@workspace:."
+ dependencies:
+ "@modelcontextprotocol/sdk": "npm:^1.0.4"
+ "@types/node": "npm:^22.10.6"
+ axios: "npm:^1.12.2"
+ typescript: "npm:^5.7.3"
+ vite: "npm:^6.3.6"
+ zod: "npm:^3.25.76"
+ bin:
+ mcp-server: dist/index.js
+ languageName: unknown
+ linkType: soft
+
"@rollup/rollup-android-arm-eabi@npm:4.46.2":
version: 4.46.2
resolution: "@rollup/rollup-android-arm-eabi@npm:4.46.2"
@@ -1617,18 +1632,6 @@ __metadata:
languageName: node
linkType: hard
-"plainly-mcp-server@workspace:.":
- version: 0.0.0-use.local
- resolution: "plainly-mcp-server@workspace:."
- dependencies:
- "@modelcontextprotocol/sdk": "npm:^1.0.4"
- "@types/node": "npm:^22.10.6"
- axios: "npm:^1.12.2"
- typescript: "npm:^5.7.3"
- vite: "npm:^6.3.6"
- languageName: unknown
- linkType: soft
-
"postcss@npm:^8.5.3":
version: 8.5.6
resolution: "postcss@npm:8.5.6"
@@ -2273,7 +2276,7 @@ __metadata:
languageName: node
linkType: hard
-"zod@npm:^3.23.8":
+"zod@npm:^3.23.8, zod@npm:^3.25.76":
version: 3.25.76
resolution: "zod@npm:3.25.76"
checksum: 10c0/5718ec35e3c40b600316c5b4c5e4976f7fee68151bc8f8d90ec18a469be9571f072e1bbaace10f1e85cf8892ea12d90821b200e980ab46916a6166a4260a983c