# Add subtitle, chapters, and thumbnails to video uploads [View original](https://ittybit.com/guides/subtitles-chapters-thumbnails) ## Workflow ```json [ { "kind": "subtitles" }, { "kind": "chapters" }, { "kind": "thumbnails" } ] ``` *** ## Upgrade Behind-the-scenes, ittybit will upgrade this to extract the data each subtask requires, without you having to do anything. ```json [ { "kind": "speech", "next": [ { "kind": "subtitles" } ] }, { "kind": "outline", "next": [ { "kind": "chapters" } ] }, { "kind": "thumbnails", } ] ``` *** ## Create Task ```ts const task = await ittybit.tasks.create({ url: "https://ittyb.it/sample.mp4", kind: "workflow", workflow: [ { kind: "subtitles", }, { kind: "chapters", }, { kind: "thumbnails", } ] }) ``` ```python task = ittybit.tasks.create({ url="https://ittyb.it/sample.mp4", kind="workflow", workflow=[ { kind="subtitles", }, { kind="chapters", }, { kind: "thumbnails", } ] }) ``` ```ruby task = ittybit.tasks.create({ url: "https://ittyb.it/sample.mp4", kind: "workflow", workflow: [ { kind: "subtitles", }, { kind: "chapters", }, { kind: "thumbnails", } ] }) ``` ```php $task = $ittybit->tasks->create([ 'url' => "https://ittyb.it/sample.mp4", 'kind' => "workflow", 'workflow' => [ { 'kind' => "subtitles", }, { 'kind' => "chapters", }, { 'kind' => "thumbnails", } ] ]); ``` ```go task, err := ittybit.Tasks.Create( context.TODO(), &ittybit.TaskCreateParams{ Kind: "workflow", URL: "https://ittyb.it/sample.mp4", Workflow: []ittybit.Task{ { Kind: "subtitles", }, { Kind: "chapters", }, { Kind: "thumbnails", } } }, ) ``` ```js const task = await fetch('https://api.ittybit.com/tasks', { method: 'POST', headers: { 'Authorization': `Bearer ${ITTYBIT_API_KEY}` }, body: JSON.stringify({ url: "https://ittyb.it/sample.mp4", kind: "workflow", workflow: [ { kind: "subtitles", }, { kind: "chapters", }, { kind: "thumbnails", } ] }) }) ```