# Create Render Job — Plainly

> Creates a render job for a video template. See the documentation

- Key: `plainly-create-render-job`
- Type: Action (Write)
- Version: 0.0.2
- App: Plainly (`plainly`) — https://pipedream.com/apps/plainly.md
- This page (HTML): https://pipedream.com/apps/plainly/actions/create-render-job
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/plainly/actions/create-render-job/create-render-job.mjs

## Description

Creates a render job for a video template. [See the documentation](https://www.plainlyvideos.com/documentation/api-reference)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `projectId` | `string` | Yes | The ID of a project Options are loaded from the connected account. |
| `templateId` | `string` | Yes | The ID of the video template Options are loaded from the connected account. |
| `attributes` | `object` | No | 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. |
| `parameters` | `object` | No | Map of parameters to use in order to resolve the template parametrized layers. Keys in this map must not contain dots. |
| `configureOptions` | `boolean` | No | Set to true to enter values for the map of additional options for the render |
| `captionsPosition` | `string` | No | The position of captions. Default: BOTTOM |
| `captionsStyle` | `string` | No | The style of captions. Default: BASIC |
| `srtFileUrl` | `string` | No | Url to the srt file |
| `passthrough` | `string` | No | 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` | `boolean` | No | If true, any active integration for this project or template will not be triggered. |
| `thumbnailAtSeconds` | `string[]` | No | Generated thumbnails would be PNG thumbnails based on specified timestamps in seconds |
| `thumbnailFormat` | `string` | No | The format of the thumbnails |
| `thumbnailFrequencySeconds` | `integer` | No | 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. |
| `thumbnailFromEncodedVideo` | `boolean` | No | 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. |
| `watermarkEncodingParamsLine` | `string` | No | 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. |
| `watermarkUrl` | `string` | No | A public url to the watermark image or video |
| `uploadEnabled` | `boolean` | No | Enables uploading modified project files as a zip archive |
| `configureOutputFormat` | `boolean` | No | Set to true to enter values used for rendering output. If not specified defaults to default output format for the target After Effects version |
| `attachment` | `boolean` | No | 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. |
| `attachmentFileName` | `string` | No | 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. |
| `outputModule` | `string` | No | The output module defines the format of the video generated by the After Effects |
| `settingsTemplate` | `string` | No | Defines render settings template to be used during After Effects rendering |
| `configureWebhook` | `boolean` | No | Set to true to enter webhook properties. 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. |
| `onFailure` | `boolean` | No | Should webhook be called also on the failed renders |
| `onInvalid` | `boolean` | No | Should webhook be called also on the invalid renders |
| `webhookUrl` | `string` | No | The HTTP(S) webhook URL to execute the POST call once the rendering is finished |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "plainly",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "plainly-create-render-job",
  arguments: {
    projectId: "Project ID",
    templateId: "Template ID",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "plainly-create-render-job",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    plainly: { authProvisionId: "apn_xxxxxxx" },
    projectId: "Project ID",
    templateId: "Template ID",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "plainly-create-render-job",
    "configured_props": {
      "plainly": { "authProvisionId": "apn_xxxxxxx" },
      "projectId": "Project ID",
      "templateId": "Template ID"
    }
  }'
```

---

- App: https://pipedream.com/apps/plainly.md · All apps: https://pipedream.com/apps
