---
title: DeepLinking - Advanced
slug: solution-builder/deeplinking-advanced
docTags: 
createdAt: 2025-04-04T21:34:02.878Z
---

:::hint{type="info"}
ScreenPal's deeplinking (`workflow`) functionality can be extended for more complex use cases involving JSON-based project setup and customized upload workflows.
:::

### Ingesting via JSON Workflows

In addition to the standard `editVideo-https://...` pattern (where `https://...` points to an `.mp4`), advanced ingesting supports the format:

```text
editVideo-JSON-https://...
```

Where `https://...` points to a JSON endpoint returning a full project specification.&#x20;

Example JSON:

```json
{
  "title": "Title of video Project",
  
  "description": "Optional default description for this project"

  "video": {
    "url": "https://...",
    "type": "mp4"
  },

  "captions": [
    {
      "id": "YOUR_CAPTION_ID",
      "title": "YOUR_CAPTION_TITLE",
      "type": "vtt",
      "url": "https://..."
    }
  ]
}
```

**Field Requirements:**

- `title` – **Required.** Title to assign the video project.
- `video.url` – **Required.** Direct link to a video file. MIME type must be `video/mp4`.
- `video.type` – Optional. Defaults to h264 `mp4`. Also supports `webm` and h264 `mov`
- `description` - Optional. If provided will be used as the default value for the description in the upload data for the project.
- `captions` – Optional. Array of caption tracks.&#x20;
  - `id` - Unique id for each caption
  - `title` - String shown to the user in caption list for them to edit the captions
  - `type` -  must be either `vtt` or `srt`.
  - `url` - Url to download the caption file

***

### Uploading with Advanced Metadata

ScreenPal's editor uploads by making a `POST` request to `basicupload.request.url`, passing:

- `title`
- `description`

### Extended Parameters

- `captionLanguageIds` – Comma-separated list of caption Ids used in the editor either provided from the initial workflow launch OR created by the user in the app.  Any captions created within the app will have ID based on language selected e.g.:
  ```text
  YOUR_CAPTION_ID,en-US,jp-JP
  ```



***

### Response Handling

If the server responds with a single line of text, it will be treated as the direct video upload URL (legacy behavior).

To support advanced uploading, respond with `Content-Type: application/json` and use the following format:

```json
{
  "video": {
    "url": "https://..."
  },
  "captions": [
    {
      "id": "YOUR_CAPTION_ID",
      "type": "vtt",
      "url": "https://..."
    },
    {
      "id": "en-US",
      "type": "vtt",
      "url": "https://..."
    }
  ]
}
```

**Upload Response Requirements:**

- `video.url` – **Required.** URL to `PUT`/`POST` the `.mp4` file.
- `captions` – Optional. URLs to upload captions based on the `captionLanguageIds` in the first POST request.
  - `type` – Optional. `"vtt"` or `"srt"`. Defaults to `"vtt"` if omitted.

