{"openapi":"3.0.0","servers":[{"url":"https://ws.api.video"}],"info":{"description":"api.video is an API that encodes on the go to facilitate immediate playback, enhancing viewer streaming experiences across multiple devices and platforms. You can stream live or on-demand online videos within minutes.","title":"api.video","version":"1","x-apisguru-categories":["media"],"x-logo":{"url":"https://www.datocms-assets.com/26885/1588249863-favicon.png?w=57&h=57"},"x-origin":[{"format":"openapi","url":"https://docs.api.video/openapi/5f0d4679158b8d006ea6f068","version":"3.0"}],"x-providerName":"api.video"},"paths":{"/account":{"get":{"deprecated":true,"description":"Deprecated. Authenticate and get a token, then you can use the bearer token here to retrieve details about your account.","operationId":"GET_account","responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"environment":"production","features":["app.dynamic_metadata","app.event_log","player.white_label","stats.player_events","transcode.mp4_support"],"quota":{"quotaRemaining":54,"quotaTotal":60,"quotaUsed":6}}}},"schema":{"$ref":"#/components/schemas/account"}}},"description":"Success"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Show account","tags":["Account"],"x-client-action":"get"}},"/analytics/live-streams/{liveStreamId}":{"get":{"operationId":"GET_analytics-live-streams-liveStreamId","parameters":[{"description":"The unique identifier for the live stream you want to retrieve analytics for.","example":"vi4k0jvEUuaTdRAEjQ4Jfrgz","explode":false,"in":"path","name":"liveStreamId","required":true,"schema":{"type":"string"},"style":"simple"},{"description":"Period must have one of the following formats: \n- For a day : \"2018-01-01\",\n- For a week: \"2018-W01\", \n- For a month: \"2018-01\"\n- For a year: \"2018\"\nFor a range period: \n-  Date range: \"2018-01-01/2018-01-15\"\n","example":"2025-08-15T13:50:42.272Z","explode":true,"in":"query","name":"period","required":false,"schema":{"format":"period","type":"string"},"style":"form"},{"$ref":"#/components/parameters/currentPage"},{"$ref":"#/components/parameters/pageSize"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"data":[{"client":{"name":"Firefox","type":"browser","version":"61.0"},"device":{"model":"unknown","type":"desktop","vendor":"unknown"},"location":{"city":"Paris","country":"France"},"os":{"name":"unknown","shortname":"unknown","version":"unknown"},"referrer":{"medium":"unknown","searchTerm":"unknown","source":"unknown","url":"unknown"},"session":{"endedAt":"2025-08-15T13:50:42.272Z","loadedAt":"2025-08-15T13:50:42.272Z","sessionId":"ps4zRWVOv2If2vzKJLMr3jQo"}}],"pagination":{"currentPage":1,"currentPageItems":1,"itemsTotal":1,"links":[{"rel":"self","uri":"/analytics/sessions/ps4zRWVOv2If2vzKJLMr3jQo?currentPage=1&pageSize=25"},{"rel":"first","uri":"/analytics/sessions/ps4zRWVOv2If2vzKJLMr3jQo?currentPage=1&pageSize=25"},{"rel":"last","uri":"/analytics/sessions/ps4zRWVOv2If2vzKJLMr3jQo?currentPage=1&pageSize=25"}],"pageSize":25,"pagesTotal":1}}}},"schema":{"$ref":"#/components/schemas/raw-statistics-list-live-stream-analytics-response"}}},"description":"Success"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"liveStreamId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"List live stream player sessions","tags":["Analytics"],"x-client-action":"getLiveStreamAnalytics","x-client-paginated":true,"x-group-parameters":true}},"/analytics/sessions/{sessionId}/events":{"get":{"description":"Useful to track and measure video's engagement.","operationId":"GET_analytics-sessions-sessionId-events","parameters":[{"description":"A unique identifier you can use to reference and track a session with.","example":"psEmFwGQUAXR2lFHj5nDOpy","explode":false,"in":"path","name":"sessionId","required":true,"schema":{"type":"string"},"style":"simple"},{"$ref":"#/components/parameters/currentPage"},{"$ref":"#/components/parameters/pageSize"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"data":[{"at":0,"emittedAt":"2025-08-15T13:50:42.273Z","type":"ready"},{"at":0,"emittedAt":"2025-08-15T13:50:42.273Z","type":"play"},{"at":7,"emittedAt":"2025-08-15T13:50:42.273Z","type":"pause"},{"at":21,"emittedAt":"2025-08-15T13:50:42.273Z","type":"resume"},{"emittedAt":"2025-08-15T13:50:42.273Z","from":7,"to":21,"type":"seek.forward"},{"at":30,"emittedAt":"2025-08-15T13:50:42.273Z","type":"end"},{"at":0,"emittedAt":"2025-08-15T13:50:42.273Z","type":"play"},{"emittedAt":"2025-08-15T13:50:42.273Z","from":30,"to":0,"type":"seek.backward"},{"at":21,"emittedAt":"2025-08-15T13:50:42.273Z","type":"pause"},{"at":21,"emittedAt":"2025-08-15T13:50:42.273Z","type":"resume"},{"emittedAt":"2025-08-15T13:50:42.273Z","from":0,"to":21,"type":"seek.forward"},{"at":20,"emittedAt":"2025-08-15T13:50:42.273Z","type":"pause"},{"at":20,"emittedAt":"2025-08-15T13:50:42.273Z","type":"resume"},{"emittedAt":"2025-08-15T13:50:42.273Z","from":24,"to":20,"type":"seek.backward"},{"at":17,"emittedAt":"2025-08-15T13:50:42.273Z","type":"pause"},{"at":17,"emittedAt":"2025-08-15T13:50:42.273Z","type":"resume"},{"emittedAt":"2025-08-15T13:50:42.273Z","from":17,"to":17,"type":"seek.forward"},{"at":19,"emittedAt":"2025-08-15T13:50:42.273Z","type":"pause"},{"at":0,"emittedAt":"2025-08-15T13:50:42.273Z","type":"ready"},{"at":0,"emittedAt":"2025-08-15T13:50:42.273Z","type":"ready"},{"at":0,"emittedAt":"2025-08-15T13:50:42.273Z","type":"ready"},{"at":0,"emittedAt":"2025-08-15T13:50:42.273Z","type":"play"},{"at":1,"emittedAt":"2025-08-15T13:50:42.273Z","type":"pause"},{"at":1,"emittedAt":"2025-08-15T13:50:42.273Z","type":"resume"},{"at":3,"emittedAt":"2025-08-15T13:50:42.273Z","type":"pause"}],"pagination":{"currentPage":1,"currentPageItems":25,"itemsTotal":30,"links":[{"rel":"self","uri":"/analytics/sessions/ps5ltuhfsTOeh6bP03Tq5OWc/events?currentPage=1&pageSize=25"},{"rel":"first","uri":"/analytics/sessions/ps5ltuhfsTOeh6bP03Tq5OWc/events?currentPage=1&pageSize=25"},{"rel":"next","uri":"/analytics/sessions/ps5ltuhfsTOeh6bP03Tq5OWc/events?currentPage=2&pageSize=25"},{"rel":"last","uri":"/analytics/sessions/ps5ltuhfsTOeh6bP03Tq5OWc/events?currentPage=2&pageSize=25"}],"pageSize":25,"pagesTotal":2}}}},"schema":{"$ref":"#/components/schemas/raw-statistics-list-player-session-events-response"}}},"description":"Success"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"videoId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"List player session events","tags":["Analytics"],"x-client-action":"listPlayerSessionEvents","x-client-paginated":true,"x-group-parameters":true}},"/analytics/videos/{videoId}":{"get":{"description":"Retrieve all available user sessions for a specific video. Tutorials that use the [analytics endpoint](https://api.video/blog/endpoints/analytics).","operationId":"GET_analytics-videos-videoId","parameters":[{"description":"The unique identifier for the video you want to retrieve session information for.","example":"vi4k0jvEUuaTdRAEjQ4Prklg","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"},{"description":"Period must have one of the following formats: \n- For a day : 2018-01-01,\n- For a week: 2018-W01, \n- For a month: 2018-01\n- For a year: 2018\nFor a range period: \n-  Date range: 2018-01-01/2018-01-15\n","explode":true,"in":"query","name":"period","required":false,"schema":{"format":"period","type":"string"},"style":"form"},{"description":"Metadata and [Dynamic Metadata](https://api.video/blog/endpoints/dynamic-metadata) filter. Send an array of key value pairs you want to filter sessios with.","example":"[{\"key\": \"Author\", \"value\": \"John Doe\"}, {\"key\": \"Format\", \"value\": \"Tutorial\"}]","explode":true,"in":"query","name":"metadata","required":false,"schema":{"items":{"type":"string"},"type":"array"},"style":"form"},{"$ref":"#/components/parameters/currentPage"},{"$ref":"#/components/parameters/pageSize"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"data":[{"client":{"name":"Firefox","type":"browser","version":"67.0"},"device":{"model":"unknown","type":"desktop","vendor":"Dell"},"location":{"city":"Paris","country":"France"},"os":{"name":"Microsoft Windows","shortname":"W10","version":"Windows10"},"referrer":{"medium":"organic","searchTerm":"video encoding hosting and delivery","source":"https://google.com","url":"https://api.video"},"session":{"endedAt":"2025-08-15T13:50:42.273Z","loadedAt":"2025-08-15T13:50:42.273Z","sessionId":"psEmFwGQUAXR2lFHj5nDOpy"}}],"pagination":{"currentPage":1,"currentPageItems":1,"itemsTotal":1,"links":[{"rel":"self","uri":"/analytics/sessions/psEmFwGQUAXR2lFHj5nDOpy?currentPage=1&pageSize=25"},{"rel":"first","uri":"/analytics/sessions/psEmFwGQUAXR2lFHj5nDOpy?currentPage=1&pageSize=25"},{"rel":"last","uri":"/analytics/sessions/psEmFwGQUAXR2lFHj5nDOpy?currentPage=1&pageSize=25"}],"pageSize":25,"pagesTotal":1}}}},"schema":{"$ref":"#/components/schemas/raw-statistics-list-sessions-response"}}},"description":"Success"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"videoId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"List video player sessions","tags":["Analytics"],"x-client-action":"listSessions","x-client-paginated":true,"x-group-parameters":true}},"/auth/api-key":{"post":{"description":"To get started, submit your API key in the body of your request. api.video returns an access token that is valid for one hour (3600 seconds). A refresh token is also returned. View a [tutorial](https://api.video/blog/tutorials/authentication-tutorial) on authentication.\nAll tutorials using the [authentication endpoint](https://api.video/blog/endpoints/authenticate)","operationId":"POST_auth-api-key","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/authenticate-payload"}}}},"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjUyZWM4NWUyMjFkODZjOWI0NDQ5NzBhMjQwMzUyOWQ4MDQyNGQ3ZmJjYjFlYWM2MjVlM2VkMjI2YWRlNTcxMDY2NDUyZDc0NjdhN2E4NjI0In0.eyJhdWQiOiJsaWJjYXN0IiwianRpIjoiNTJlYzg1ZTIyMWQ4NmM5YjQ0NDk3MGEyNDAzNTI5ZDgwNDI0ZDdmYmNiMWVhYzYyNWUzZWQyMjZhZGU1NzEwNjY0NTJkNzQ2N2E3YTg2MjQiLCJpYXQiOjE1MjUyNzYxNDcsIm5iZiI6MTUyNTI3NjE0NywiZXhwIjoxNTI1Mjc5NzQ3LCJzdWIiOiJ1c01vbml0b3IiLCJzY29wZXMiOlsibW9uaXRvci5saWJjYXN0LmNvbSJdLCJjb250ZXh0Ijp7InVzZXIiOiJ1c01vbml0b3IiLCJwcm9qZWN0IjoicHJNb25pdG9yIiwibWVtYmVyIjoibWVNb25pdG9yIn19.rUvishDNyJLNlI4W5VmguNecm5KD2uZgPkKJQbaqw-cJbSrVxkSbiKYtk_E3cz3WT7-IS2yFTsYN3uIo5Rbit8_HftweyEp2bdBRI8yjR6oZZ1sNJJXswISN1i2kk4r-aaxu7Xxf_LtsjOMUj_YZsvcc2nqBXPKjHbJCJryx3DDJaIcymOqao7nhQaCCQyrQooAXNTYs4E9fWN1dC_x2O-zok5TuG-xhEW-umwxfSUMWNgSTkz38ACceQ0PCJSgB3jqjDH4MwC7B3ppEPZuK5E6JhKeyRlalswRyYq3UQPnVeMTam7YQHsuTgbehF6WySW8i44o7V_MCe9hjPdp-WA","expires_in":3600,"refresh_token":"def50200a28d88fb9aaa921be78eeb5604b071101a334899a7d5fc7492cf8ea752962ddc8961fe5c126101d4ecacd980396eb2fd494995b812dffcb98256c4277f790d1f658fc2d2e34f350740544e5232d69d68d34c648271d706c5e7049adac0b1832d0fdf71809715cc7e97fa63f65966deadb501a55ff469b0fd23a637cb6acbe9d9b8594a17f09efc2efeed82984764a0065d5e29c950c7b081a61ba2aaa192be3085c400ee37eac50fa9320ce2cfe8916c8165418d23e9f91b6a5c8515e1d74ee193a5a1ca01954fbff27361c20184240be2359e0afbed0bf1c762cf872450b5e8b5d4704f4fd9583e4470adc98409dd42965709712806bd9019378a72eea0b4912ce684ffd833db5806ab84174f905db2a75380071d004615c944bb8f8c4045cce7234c2be9a2330522cf7f067b8e58f57cffb6edb4b7ef91313e12bcde47e5e76ceee7fa52990132288f345d33ed917ae4fd54b7284f8964d898e97e1ee3bc4157f75d7fee63976e4be66ac1ec32ef74afa533f0eb593523f226cbec57d196ac8962","token_type":"Bearer"}}},"schema":{"$ref":"#/components/schemas/access-token"}}},"description":"Success"},"400":{"content":{"application/json":{"examples":{"response":{"value":{"name":"","status":400,"title":"The user credentials were incorrect.","type":"https://docs.api.video/docs/authenticationinvalid_credentials"}}},"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"}},"summary":"Authenticate","tags":["Authentication"],"x-client-action":"authenticate","x-client-hidden":true}},"/auth/refresh":{"post":{"description":"Use the refresh endpoint with the refresh token you received when you first authenticated using the api-key endpoint. Send the refresh token in the body of your request. The api.video API returns a new access token that is valid for one hour (3600 seconds) and a new refresh token. \n","operationId":"POST_auth-refresh","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/refresh-token-payload"}}}},"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjUyZWM4NWUyMjFkODZjOWI0NDQ5NzBhMjQwMzUyOWQ4MDQyNGQ3ZmJjYjFlYWM2MjVlM2VkMjI2YWRlNTcxMDY2NDUyZDc0NjdhN2E4NjI0In0.eyJhdWQiOiJsaWJjYXN0IiwianRpIjoiNTJlYzg1ZTIyMWQ4NmM5YjQ0NDk3MGEyNDAzNTI5ZDgwNDI0ZDdmYmNiMWVhYzYyNWUzZWQyMjZhZGU1NzEwNjY0NTJkNzQ2N2E3YTg2MjQiLCJpYXQiOjE1MjUyNzYxNDcsIm5iZiI6MTUyNTI3NjE0NywiZXhwIjoxNTI1Mjc5NzQ3LCJzdWIiOiJ1c01vbml0b3IiLCJzY29wZXMiOlsibW9uaXRvci5saWJjYXN0LmNvbSJdLCJjb250ZXh0Ijp7InVzZXIiOiJ1c01vbml0b3IiLCJwcm9qZWN0IjoicHJNb25pdG9yIiwibWVtYmVyIjoibWVNb25pdG9yIn19.rUvishDNyJLNlI4W5VmguNecm5KD2uZgPkKJQbaqw-cJbSrVxkSbiKYtk_E3cz3WT7-IS2yFTsYN3uIo5Rbit8_HftweyEp2bdBRI8yjR6oZZ1sNJJXswISN1i2kk4r-aaxu7Xxf_LtsjOMUj_YZsvcc2nqBXPKjHbJCJryx3DDJaIcymOqao7nhQaCCQyrQooAXNTYs4E9fWN1dC_x2O-zok5TuG-xhEW-umwxfSUMWNgSTkz38ACceQ0PCJSgB3jqjDH4MwC7B3ppEPZuK5E6JhKeyRlalswRyYq3UQPnVeMTam7YQHsuTgbehF6WySW8i44o7V_MCe9hjPdp-WA","expires_in":3600,"refresh_token":"def50200a28d88fb9aaa921be78eeb5604b071101a334899a7d5fc7492cf8ea752962ddc8961fe5c126101d4ecacd980396eb2fd494995b812dffcb98256c4277f790d1f658fc2d2e34f350740544e5232d69d68d34c648271d706c5e7049adac0b1832d0fdf71809715cc7e97fa63f65966deadb501a55ff469b0fd23a637cb6acbe9d9b8594a17f09efc2efeed82984764a0065d5e29c950c7b081a61ba2aaa192be3085c400ee37eac50fa9320ce2cfe8916c8165418d23e9f91b6a5c8515e1d74ee193a5a1ca01954fbff27361c20184240be2359e0afbed0bf1c762cf872450b5e8b5d4704f4fd9583e4470adc98409dd42965709712806bd9019378a72eea0b4912ce684ffd833db5806ab84174f905db2a75380071d004615c944bb8f8c4045cce7234c2be9a2330522cf7f067b8e58f57cffb6edb4b7ef91313e12bcde47e5e76ceee7fa52990132288f345d33ed917ae4fd54b7284f8964d898e97e1ee3bc4157f75d7fee63976e4be66ac1ec32ef74afa533f0eb593523f226cbec57d196ac8962","token_type":"Bearer"}}},"schema":{"$ref":"#/components/schemas/access-token"}}},"description":"Success"},"400":{"content":{"application/json":{"examples":{"response":{"value":{"name":"","status":400,"title":"The user credentials were incorrect.","type":"https://docs.api.video/docs/authenticationinvalid_credentials"}}},"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"}},"summary":"Refresh token","tags":["Authentication"],"x-client-action":"refresh","x-client-hidden":true}},"/live-streams":{"get":{"description":"With no parameters added to the url, this will return all livestreams. Query by name or key to limit the list.","operationId":"GET_live-streams","parameters":[{"description":"The unique stream key that allows you to stream videos.","example":"30087931-229e-42cf-b5f9-e91bcc1f7332","explode":true,"in":"query","name":"streamKey","required":false,"schema":{"type":"string"},"style":"form"},{"description":"You can filter live streams by their name or a part of their name.","example":"My Video","explode":true,"in":"query","name":"name","required":false,"schema":{"type":"string"},"style":"form"},{"description":"Allowed: createdAt, publishedAt, name. createdAt - the time a livestream was created using the specified streamKey. publishedAt - the time a livestream was published using the specified streamKey. name - the name of the livestream. If you choose one of the time based options, the time is presented in ISO-8601 format.","example":"createdAt","explode":true,"in":"query","name":"sortBy","required":false,"schema":{"type":"string"},"style":"form"},{"description":"Allowed: asc, desc. Ascending for date and time means that earlier values precede later ones. Descending means that later values preced earlier ones. For title, it is 0-9 and A-Z ascending and Z-A, 9-0 descending.","example":"desc","explode":true,"in":"query","name":"sortOrder","required":false,"schema":{"enum":["asc","desc"],"type":"string"},"style":"form"},{"$ref":"#/components/parameters/currentPage"},{"$ref":"#/components/parameters/pageSize"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"data":[{"assets":{"hls":"https://live.api.video/li400mYKSgQ6xs7taUeSaEKr.m3u8","iframe":"<iframe src=\"https://embed.api.video/live/li400mYKSgQ6xs7taUeSaEKr\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","player":"https://embed.api.video/live/li400mYKSgQ6xs7taUeSaEKr","thumbnail":"https://cdn.api.video/live/li400mYKSgQ6xs7taUeSaEKr/thumbnail.jpg"},"broadcasting":false,"createdAt":"2025-08-15T13:50:42.273Z","liveStreamId":"li400mYKSgQ6xs7taUeSaEKr","name":"Live Stream From the browser","public":true,"record":true,"streamKey":"30087931-229e-42cf-b5f9-e91bcc1f7332","updatedAt":"2025-08-15T13:50:42.273Z"},{"assets":{"hls":"https://live.api.video/li4pqNqGUkhKfWcBGpZVLRY5.m3u8","iframe":"<iframe src=\"https://embed.api.video/live/li4pqNqGUkhKfWcBGpZVLRY5\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","player":"https://embed.api.video/live/li4pqNqGUkhKfWcBGpZVLRY5","thumbnail":"https://cdn.api.video/live/li4pqNqGUkhKfWcBGpZVLRY5/thumbnail.jpg"},"broadcasting":false,"createdAt":"2025-08-15T13:50:42.273Z","liveStreamId":"li4pqNqGUkhKfWcBGpZVLRY5","name":"Live From New York","public":true,"record":true,"streamKey":"cc1b4df0-d1c5-4064-a8f9-9f0368385135","updatedAt":"2025-08-15T13:50:42.273Z"}],"pagination":{"currentPage":1,"currentPageItems":19,"itemsTotal":19,"links":[{"rel":"self","uri":"/live-streams?currentPage=1&pageSize=25"},{"rel":"first","uri":"/live-streams?currentPage=1&pageSize=25"},{"rel":"last","uri":"/live-streams?currentPage=1&pageSize=25"}],"pageSize":25,"pagesTotal":1}}}},"schema":{"$ref":"#/components/schemas/live-stream-list-response"}}},"description":"Success"}},"security":[{"bearerAuth":[]}],"summary":"List all live streams","tags":["Live"],"x-client-action":"list","x-client-paginated":true,"x-group-parameters":true},"post":{"description":"A live stream will give you the 'connection point' to RTMP your video stream to api.video. It will also give you the details for viewers to watch the same livestream.  The public=false 'private livestream' is available as a BETA feature, and should be limited to livestreams of 3,000 viewers or fewer. See our [Live Stream Tutorial](https://api.video/blog/tutorials/live-stream-tutorial) for a walkthrough of this API with OBS. Your RTMP endpoint for the livestream is rtmp://broadcast.api.video/s/{streamKey}\nTutorials that [create live streams](https://api.video/blog/endpoints/live-create).","operationId":"POST_live-streams","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/live-stream-create-payload"}}}},"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"assets":{"hls":"https://live.api.video/li4pqNqGUkhKfWcBGpZVLRY5.m3u8","iframe":"<iframe src=\"https://embed.api.video/live/li4pqNqGUkhKfWcBGpZVLRY5\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","player":"https://embed.api.video/live/li4pqNqGUkhKfWcBGpZVLRY5","thumbnail":"https://cdn.api.video/live/li4pqNqGUkhKfWcBGpZVLRY5/thumbnail.jpg"},"broadcasting":false,"createdAt":"2025-08-15T13:50:42.273Z","liveStreamId":"li4pqNqGUkhKfWcBGpZVLRY5","name":"Live From New York","public":true,"record":true,"streamKey":"cc1b4df0-d1c5-4064-a8f9-9f0368385135","updatedAt":"2025-08-15T13:50:42.273Z"}}},"schema":{"$ref":"#/components/schemas/live-stream"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"}},"security":[{"bearerAuth":[]}],"summary":"Create live stream","tags":["Live"],"x-client-action":"create"}},"/live-streams/{liveStreamId}":{"delete":{"operationId":"DELETE_live-streams-liveStreamId","parameters":[{"description":"The unique ID for the live stream that you want to remove.","example":"li400mYKSgQ6xs7taUeSaEKr","explode":false,"in":"path","name":"liveStreamId","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"204":{"description":"No Content"}},"security":[{"bearerAuth":[]}],"summary":"Delete a live stream","tags":["Live"],"x-client-action":"delete"},"get":{"description":"Supply a LivestreamId, and you'll get all the details for streaming into, and watching the livestream. Tutorials that use the [show livestream endpoint](https://api.video/blog/endpoints/live-stream-status).","operationId":"GET_live-streams-liveStreamId","parameters":[{"description":"The unique ID for the live stream you want to watch.","example":"li400mYKSgQ6xs7taUeSaEKr","explode":false,"in":"path","name":"liveStreamId","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"assets":{"hls":"https://live.api.video/li400mYKSgQ6xs7taUeSaEKr.m3u8","iframe":"<iframe src=\"https://embed.api.video/live/li400mYKSgQ6xs7taUeSaEKr\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","player":"https://embed.api.video/live/li400mYKSgQ6xs7taUeSaEKr","thumbnail":"https://cdn.api.video/live/li400mYKSgQ6xs7taUeSaEKr/thumbnail.jpg"},"broadcasting":false,"createdAt":"2025-08-15T13:50:42.273Z","liveStreamId":"li400mYKSgQ6xs7taUeSaEKr","name":"Live Stream From the browser","public":true,"record":true,"streamKey":"30087931-229e-42cf-b5f9-e91bcc1f7332","updatedAt":"2025-08-15T13:50:42.273Z"}}},"schema":{"$ref":"#/components/schemas/live-stream"}}},"description":"Success"}},"security":[{"bearerAuth":[]}],"summary":"Show live stream","tags":["Live"],"x-client-action":"get"},"patch":{"description":"Use this endpoint to update the player, or to turn recording on/off (saving a copy of the livestream). NOTE: If the livestream is actively streaming, changing the recording status will only affect the NEXT stream.    The public=false 'private livestream' is available as a BETA feature, and should be limited to livestreams of 3,000 viewers or fewer.","operationId":"PATCH_live-streams-liveStreamId","parameters":[{"description":"The unique ID for the live stream that you want to update information for such as player details, or whether you want the recording on or off.","example":"li400mYKSgQ6xs7taUeSaEKr","explode":false,"in":"path","name":"liveStreamId","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/live-stream-update-payload"}}}},"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"assets":{"hls":"https://live.api.video/li400mYKSgQ6xs7taUeSaEKr.m3u8","iframe":"<iframe src=\"https://embed.api.video/live/li400mYKSgQ6xs7taUeSaEKr\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","player":"https://embed.api.video/live/li400mYKSgQ6xs7taUeSaEKr","thumbnail":"https://cdn.api.video/live/li400mYKSgQ6xs7taUeSaEKr/thumbnail.jpg"},"broadcasting":false,"createdAt":"2025-08-15T13:50:42.273Z","liveStreamId":"li400mYKSgQ6xs7taUeSaEKr","name":"Live Stream From the browser","public":true,"record":true,"streamKey":"30087931-229e-42cf-b5f9-e91bcc1f7332","updatedAt":"2025-08-15T13:50:42.273Z"}}},"schema":{"$ref":"#/components/schemas/live-stream"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"}},"security":[{"bearerAuth":[]}],"summary":"Update a live stream","tags":["Live"],"x-client-action":"update"}},"/live-streams/{liveStreamId}/thumbnail":{"delete":{"description":"Send the unique identifier for a live stream to delete it from the system.","operationId":"DELETE_live-streams-liveStreamId-thumbnail","parameters":[{"description":"The unique identifier for the live stream you want to delete. ","example":"li400mYKSgQ6xs7taUeSaEKr","explode":false,"in":"path","name":"liveStreamId","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/live-stream"}}},"description":"Success"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"liveStreamId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Delete a thumbnail","tags":["Live"],"x-client-action":"deleteThumbnail"},"post":{"description":"Upload an image to use as a backdrop for your livestream. Tutorials that [update live stream thumbnails](https://api.video/blog/endpoints/live-upload-a-thumbnail).","operationId":"POST_live-streams-liveStreamId-thumbnail","parameters":[{"description":"The unique ID for the live stream you want to upload.","example":"vi4k0jvEUuaTdRAEjQ4Jfrgz","explode":false,"in":"path","name":"liveStreamId","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/live-stream-thumbnail-upload-payload"}}}},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/live-stream"}}},"description":"Created"},"400":{"content":{"application/json":{"examples":{"response":{"value":{"name":"file","status":400,"title":"Only [jpeg, jpg, JPG, JPEG] extensions are supported.","type":"https://docs.api.video/docs/fileextension"}}},"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"liveStreamId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Upload a thumbnail","tags":["Live"],"x-client-action":"uploadThumbnail"}},"/players":{"get":{"description":"Retrieve a list of all the players you created, as well as details about each one.\nTutorials that use the [player endpoint](https://api.video/blog/endpoints/player).","operationId":"GET_players","parameters":[{"description":"createdAt is the time the player was created. updatedAt is the time the player was last updated. The time is presented in ISO-8601 format.","example":"createdAt","explode":true,"in":"query","name":"sortBy","required":false,"schema":{"enum":["createdAt","updatedAt"],"type":"string"},"style":"form"},{"description":"Allowed: asc, desc. Ascending for date and time means that earlier values precede later ones. Descending means that later values preced earlier ones.","example":"asc","explode":true,"in":"query","name":"sortOrder","required":false,"schema":{"enum":["asc","desc"],"type":"string"},"style":"form"},{"$ref":"#/components/parameters/currentPage"},{"$ref":"#/components/parameters/pageSize"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"data":[{"backgroundBottom":"rgba(94, 95, 89, 1)","backgroundText":"rgba(255, 255, 255, .95)","backgroundTop":"rgba(72, 4, 45, 1)","createdAt":"2025-08-15T13:50:42.273Z","enableApi":false,"enableControls":false,"forceAutoplay":false,"forceLoop":false,"hideTitle":false,"link":"rgba(255, 0, 0, .95)","linkActive":"rgba(255, 0, 0, .75)","linkHover":"rgba(255, 255, 255, .75)","playerId":"pl4fgtjy4tjyKDK545DRdfg","shapeAspect":"flat","shapeBackgroundBottom":"rgba(50, 50, 50, .8)","shapeBackgroundTop":"rgba(50, 50, 50, .7)","shapeMargin":10,"shapeRadius":3,"text":"rgba(255, 255, 255, .95)","trackBackground":"rgba(0, 0, 0, 0)","trackPlayed":"rgba(255, 255, 255, .95)","trackUnplayed":"rgba(255, 255, 255, .1)","updatedAt":"2025-08-15T13:50:42.273Z"},{"backgroundBottom":"rgba(94, 95, 89, 1)","backgroundText":"rgba(255, 255, 255, .95)","backgroundTop":"rgba(72, 4, 45, 1)","createdAt":"2025-08-15T13:50:42.273Z","enableApi":true,"enableControls":true,"forceAutoplay":true,"forceLoop":false,"hideTitle":false,"link":"rgba(255, 0, 0, .95)","linkActive":"rgba(255, 0, 0, .75)","linkHover":"rgba(255, 255, 255, .75)","playerId":"pl54fgtjy4tjyKDK45DRdfg","shapeAspect":"flat","shapeBackgroundBottom":"rgba(50, 50, 50, .8)","shapeBackgroundTop":"rgba(50, 50, 50, .7)","shapeMargin":10,"shapeRadius":3,"text":"rgba(255, 255, 255, .95)","trackBackground":"rgba(0, 0, 0, 0)","trackPlayed":"rgba(255, 255, 255, .95)","trackUnplayed":"rgba(255, 255, 255, .1)","updatedAt":"2025-08-15T13:50:42.273Z"}],"pagination":{"currentPage":1,"currentPageItems":4,"itemsTotal":4,"links":[{"rel":"self","uri":"https://ws.api.video/players?currentPage=1"},{"rel":"first","uri":"https://ws.api.video/players?currentPage=1"},{"rel":"last","uri":"https://ws.api.video/players?currentPage=1"}],"pageSize":25,"pagesTotal":1}}}},"schema":{"$ref":"#/components/schemas/players-list-response"}}},"description":"Success"},"400":{"content":{"application/json":{"examples":{"response":{"value":{"name":"page","problems":[{"name":"page","range":{"min":1},"title":"This parameter is out of the allowed range of values."},{"name":"pageSize","range":{"max":100,"min":10},"title":"This parameter is out of the allowed range of values."}],"range":{"min":1},"status":400,"title":"This parameter is out of the allowed range of values."}}},"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"}},"security":[{"bearerAuth":[]}],"summary":"List all players","tags":["Players"],"x-client-action":"list","x-client-paginated":true,"x-group-parameters":true},"post":{"description":"Create a player for your video, and customise it.","operationId":"POST_players","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/playerCreationPayload"}}},"required":true},"responses":{"201":{"content":{"application/json":{"examples":{"response":{"value":{"backgroundBottom":"rgba(94, 95, 89, 1)","backgroundText":"rgba(255, 255, 255, .95)","backgroundTop":"rgba(72, 4, 45, 1)","createdAt":"2025-08-15T13:50:42.273Z","enableApi":false,"enableControls":false,"forceAutoplay":false,"forceLoop":false,"hideTitle":false,"link":"rgba(255, 0, 0, .95)","linkActive":"rgba(255, 0, 0, .75)","linkHover":"rgba(255, 255, 255, .75)","playerId":"pl45d5vFFGrfdsdsd156dGhh","shapeAspect":"flat","shapeBackgroundBottom":"rgba(50, 50, 50, .8)","shapeBackgroundTop":"rgba(50, 50, 50, .7)","shapeRadius":3,"text":"rgba(255, 255, 255, .95)","trackBackground":"rgba(0, 0, 0, 0)","trackPlayed":"rgba(255, 255, 255, .95)","trackUnplayed":"rgba(255, 255, 255, .1)","updatedAt":"2025-08-15T13:50:42.273Z"}}},"schema":{"$ref":"#/components/schemas/player"}}},"description":"Created"}},"security":[{"bearerAuth":[]}],"summary":"Create a player","tags":["Players"],"x-client-action":"create"}},"/players/{playerId}":{"delete":{"description":"Delete a player if you no longer need it. You can delete any player that you have the player ID for.","operationId":"DELETE_players-playerId","parameters":[{"description":"The unique identifier for the player you want to delete.","example":"pl45d5vFFGrfdsdsd156dGhh","explode":false,"in":"path","name":"playerId","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"204":{"description":"No Content"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"playerId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Delete a player","tags":["Players"],"x-client-action":"delete"},"get":{"description":"Use a player ID to retrieve details about the player and display it for viewers.","operationId":"GET_players-playerId","parameters":[{"description":"The unique identifier for the player you want to retrieve. ","example":"pl45d5vFFGrfdsdsd156dGhh","explode":false,"in":"path","name":"playerId","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"backgroundBottom":"rgba(94, 95, 89, 1)","backgroundText":"rgba(255, 255, 255, .95)","backgroundTop":"rgba(72, 4, 45, 1)","createdAt":"2025-08-15T13:50:42.273Z","enableApi":false,"enableControls":false,"forceAutoplay":false,"forceLoop":false,"hideTitle":false,"link":"rgba(255, 0, 0, .95)","linkActive":"rgba(255, 0, 0, .75)","linkHover":"rgba(255, 255, 255, .75)","playerId":"pl45d5vFFGrfdsdsd156dGhh","shapeAspect":"flat","shapeBackgroundBottom":"rgba(50, 50, 50, .8)","shapeBackgroundTop":"rgba(50, 50, 50, .7)","shapeRadius":3,"text":"rgba(255, 255, 255, .95)","trackBackground":"rgba(0, 0, 0, 0)","trackPlayed":"rgba(255, 255, 255, .95)","trackUnplayed":"rgba(255, 255, 255, .1)","updatedAt":"2025-08-15T13:50:42.273Z"}}},"schema":{"$ref":"#/components/schemas/player"}}},"description":"Success"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"playerId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Show a player","tags":["Players"],"x-client-action":"get"},"patch":{"description":"Use a player ID to update specific details for a player. NOTE: It may take up to 10 min before the new player configuration is available from our CDN.","operationId":"PATCH_players-playerId","parameters":[{"description":"The unique identifier for the player.","example":"pl45d5vFFGrfdsdsd156dGhh","explode":false,"in":"path","name":"playerId","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/playerUpdatePayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"backgroundBottom":"rgba(94, 95, 89, 1)","backgroundText":"rgba(255, 255, 255, .95)","backgroundTop":"rgba(72, 4, 45, 1)","createdAt":"2025-08-15T13:50:42.273Z","enableApi":false,"enableControls":false,"forceAutoplay":false,"forceLoop":false,"hideTitle":false,"link":"rgba(255, 0, 0, .95)","linkActive":"rgba(255, 0, 0, .75)","linkHover":"rgba(255, 255, 255, .75)","playerId":"pl45d5vFFGrfdsdsd156dGhh","shapeAspect":"flat","shapeBackgroundBottom":"rgba(50, 50, 50, .8)","shapeBackgroundTop":"rgba(50, 50, 50, .7)","shapeRadius":3,"text":"rgba(255, 255, 255, .95)","trackBackground":"rgba(0, 0, 0, 0)","trackPlayed":"rgba(255, 255, 255, .95)","trackUnplayed":"rgba(255, 255, 255, .1)","updatedAt":"2025-08-15T13:50:42.273Z"}}},"schema":{"$ref":"#/components/schemas/player"}}},"description":"Success"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"playerId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Update a player","tags":["Players"],"x-client-action":"update"}},"/players/{playerId}/logo":{"delete":{"operationId":"DELETE_players-playerId-logo","parameters":[{"description":"The unique identifier for the player.","example":"pl14Db6oMJRH6SRVoOwORacK","explode":false,"in":"path","name":"playerId","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"204":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"No Content"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"playerId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Delete logo","tags":["Players"],"x-client-action":"deleteLogo"},"post":{"description":"The uploaded image maximum size should be 200x100 and its weight should be 200KB.  It will be scaled down to 30px height and converted to PNG to be displayed in the player.","operationId":"POST_players-playerId-logo","parameters":[{"description":"The unique identifier for the player.","example":"pl14Db6oMJRH6SRVoOwORacK","explode":false,"in":"path","name":"playerId","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/players-upload-logo-payload"}}}},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/player"}}},"description":"Created"},"400":{"content":{"application/json":{"examples":{"response":{"value":{"name":"file","status":400,"title":"Only ['jpg', 'JPG', 'jpeg', 'JPEG', 'png', 'PNG'] extensions are supported.","type":"https://docs.api.video/docs/fileextension"}}},"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"playerId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Upload a logo","tags":["Players"],"x-client-action":"uploadLogo"}},"/upload":{"post":{"description":"When given a token, anyone can upload a file to the URI `https://ws.api.video/upload?token=<tokenId>`.\n\nExample with cURL:\n\n```curl\n$ curl  --request POST --url 'https://ws.api.video/upload?token=toXXX'\n --header 'content-type: multipart/form-data'\n -F file=@video.mp4\n```\n\nOr in an HTML form, with a little JavaScript to convert the form into JSON:\n```html\n<!--form for user interaction-->\n<form name=\"videoUploadForm\" >\n  <label for=video>Video:</label>\n  <input type=file name=source/><br/>\n  <input value=\"Submit\" type=\"submit\">\n</form>\n<div></div>\n<!--JS takes the form data \n    uses FormData to turn the response into JSON.\n    then uses POST to upload the video file.\n    Update the token parameter in the url to your upload token.\n    -->\n<script>\n   var form = document.forms.namedItem(\"videoUploadForm\");\t\n   form.addEventListener('submit', function(ev) {\n\t ev.preventDefault();\n     var oOutput = document.querySelector(\"div\"),\n         oData = new FormData(form);\n     var oReq = new XMLHttpRequest();\n\t \n     oReq.open(\"POST\", \"https://ws.api.video/upload?token=toXXX\", true);\n     oReq.send(oData);\n\t oReq.onload = function(oEvent) {\n       if (oReq.status ==201) {\n         oOutput.innerHTML = \"Your video is uploaded!<br/>\"  + oReq.response;\n       } else {\n         oOutput.innerHTML = \"Error \" + oReq.status + \" occurred when trying to upload your file.<br \\/>\";\n       }\n     };\n   }, false);\t\n</script>\n```\n\n\n### Dealing with large files\n\nWe have created a <a href='https://api.video/blog/tutorials/uploading-large-files-with-javascript'>tutorial</a> to walk through the steps required.","operationId":"POST_upload","parameters":[{"description":"The unique identifier for the token you want to use to upload a video.","example":"to1tcmSFHeYY5KzyhOqVKMKb","explode":true,"in":"query","name":"token","required":true,"schema":{"type":"string"},"style":"form"},{"description":"Content-Range represents the range of bytes that will be returned as a result of the request. Byte ranges are inclusive, meaning that bytes 0-999 represents the first 1000 bytes in a file or object.","example":"Content-Range: bytes 200-100/5000","explode":false,"in":"header","name":"Content-Range","required":false,"schema":{"pattern":"^bytes [0-9]*-[0-9]*\\/[0-9]*$","type":"string"},"style":"simple","x-client-ignore":true}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/token-upload-payload"}}}},"responses":{"201":{"content":{"application/json":{"examples":{"response":{"value":{"assets":{"hls":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8","iframe":"<iframe src=\"//embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","player":"https://embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae","thumbnail":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg"},"description":"An amazing video explaining the string theory","metadata":[{"key":"Author","value":"John Doe"},{"key":"Format","value":"Tutorial"}],"panoramic":false,"playerId":"pl45KFKdlddgk654dspkze","public":false,"publishedAt":"2025-08-15T13:50:42.273Z","source":{"uri":"/videos/vi4k0jvEUuaTdRAEjQ4Jfrgz/source"},"tags":["maths","string theory","video"],"title":"Maths video","videoId":"vi4k0jvEUuaTdRAEjQ4Jfrgz"}}},"schema":{"$ref":"#/components/schemas/video"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"}},"security":[],"summary":"Upload with an upload token","tags":["Videos - Delegated upload"],"x-client-action":"upload","x-client-chunk-upload":true}},"/upload-tokens":{"get":{"description":"A delegated token is used to allow secure uploads without exposing your API key. Use this endpoint to retrieve a list of all currently active delegated tokens.\nTutorials using [delegated upload](https://api.video/blog/endpoints/delegated-upload).","operationId":"GET_upload-tokens","parameters":[{"description":"Allowed: createdAt, ttl. You can use these to sort by when a token was created, or how much longer the token will be active (ttl - time to live). Date and time is presented in ISO-8601 format.","example":"ttl","explode":true,"in":"query","name":"sortBy","required":false,"schema":{"enum":["createdAt","ttl"],"type":"string"},"style":"form"},{"description":"Allowed: asc, desc. Ascending is 0-9 or A-Z. Descending is 9-0 or Z-A.","example":"asc","explode":true,"in":"query","name":"sortOrder","required":false,"schema":{"enum":["asc","desc"],"type":"string"},"style":"form"},{"$ref":"#/components/parameters/currentPage"},{"$ref":"#/components/parameters/pageSize"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"data":[{"createdAt":"2025-08-15T13:50:42.274Z","expiresAt":"2025-08-15T13:50:42.274Z","token":"to37YfoPDRR2pcDKa6LsUE0M","ttl":3600},{"createdAt":"2025-08-15T13:50:42.274Z","expiresAt":null,"token":"to1W3ZS9PdUBZWzzTEZr1B79","ttl":0}],"pagination":{"currentPage":1,"currentPageItems":2,"itemsTotal":2,"links":[{"rel":"self","uri":"/upload-tokens?currentPage=1&pageSize=25"},{"rel":"first","uri":"/upload-tokens?currentPage=1&pageSize=25"},{"rel":"last","uri":"/upload-tokens?currentPage=1&pageSize=25"}],"pageSize":25,"pagesTotal":1}}}},"schema":{"$ref":"#/components/schemas/token-list-response"}}},"description":"Success"}},"security":[{"bearerAuth":[]}],"summary":"List all active upload tokens.","tags":["Videos - Delegated upload"],"x-client-action":"listTokens","x-client-paginated":true,"x-group-parameters":true},"post":{"description":"Use this endpoint to generate an upload token. You can use this token to authenticate video uploads while keeping your API key safe. Tutorials using [delegated upload](https://api.video/blog/endpoints/delegated-upload).","operationId":"POST_upload-tokens","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/token-create-payload"}}}},"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"createdAt":"2025-08-15T13:50:42.274Z","expiresAt":"2025-08-15T13:50:42.274Z","token":"to1tcmSFHeYY5KzyhOqVKMKb","ttl":3600}}},"schema":{"$ref":"#/components/schemas/upload-token"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"}},"security":[{"bearerAuth":[]}],"summary":"Generate an upload token","tags":["Videos - Delegated upload"],"x-client-action":"createToken"}},"/upload-tokens/{uploadToken}":{"delete":{"description":"Delete an existing upload token. This is especially useful for tokens you may have created that do not expire.","operationId":"DELETE_upload-tokens-uploadToken","parameters":[{"description":"The unique identifier for the upload token you want to delete. Deleting a token will make it so the token can no longer be used for authentication.","example":"to1tcmSFHeYY5KzyhOqVKMKb","explode":false,"in":"path","name":"uploadToken","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"204":{"description":"No Content"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Delete an upload token","tags":["Videos - Delegated upload"],"x-client-action":"deleteToken"},"get":{"description":"You can retrieve details about a specific upload token if you have the unique identifier for the upload token. Add it in the path of the endpoint. Details include time-to-live (ttl), when the token was created, and when it will expire.","operationId":"GET_upload-tokens-uploadToken","parameters":[{"description":"The unique identifier for the token you want information about.","example":"to1tcmSFHeYY5KzyhOqVKMKb","explode":false,"in":"path","name":"uploadToken","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"createdAt":"2025-08-15T13:50:42.274Z","expiresAt":null,"token":"to1tcmSFHeYY5KzyhOqVKMKb","ttl":0}}},"schema":{"$ref":"#/components/schemas/upload-token"}}},"description":"Success"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Show upload token","tags":["Videos - Delegated upload"],"x-client-action":"getToken"}},"/videos":{"get":{"description":"Requests to this endpoint return a list of your videos (with all their details). With no parameters added to this query, the API returns all videos. You can filter what videos the API returns using the parameters described below.  We have [several tutorials](https://api.video/blog/endpoints/video-list) that demonstrate this endpoint.","operationId":"LIST-videos","parameters":[{"description":"The title of a specific video you want to find. The search will match exactly to what term you provide and return any videos that contain the same term as part of their titles.","example":"My Video.mp4","explode":true,"in":"query","name":"title","required":false,"schema":{"type":"string"},"style":"form"},{"description":"A tag is a category you create and apply to videos. You can search for videos with particular tags by listing one or more here. Only videos that have all the tags you list will be returned.","example":"\"tags\": [\"captions\", \"dialogue\"]","explode":true,"in":"query","name":"tags","required":false,"schema":{"items":{"type":"string"},"type":"array"},"style":"form"},{"description":"Videos can be tagged with metadata tags in key:value pairs. You can search for videos with specific key value pairs using this parameter. [Dynamic Metadata](https://api.video/blog/endpoints/dynamic-metadata) allows you to define a key that allows any value pair.","example":"[{\"key\":\"Author\", \"value\":\"John Doe\"}, {\"key\":\"Format\", \"value\":\"Tutorial\"}]","explode":true,"in":"query","name":"metadata","required":false,"schema":{"items":{"type":"string"},"type":"array"},"style":"form"},{"description":"If you described a video with a term or sentence, you can add it here to return videos containing this string.","example":"New Zealand","explode":true,"in":"query","name":"description","required":false,"schema":{"type":"string"},"style":"form"},{"description":"If you know the ID for a live stream, you can retrieve the stream by adding the ID for it here.","example":"li400mYKSgQ6xs7taUeSaEKr","explode":true,"in":"query","name":"liveStreamId","required":false,"schema":{"type":"string"},"style":"form"},{"description":"Allowed: publishedAt, title. You can search by the time videos were published at, or by title.","example":"publishedAt","explode":true,"in":"query","name":"sortBy","required":false,"schema":{"type":"string"},"style":"form"},{"description":"Allowed: asc, desc. asc is ascending and sorts from A to Z. desc is descending and sorts from Z to A.","example":"asc","explode":true,"in":"query","name":"sortOrder","required":false,"schema":{"type":"string"},"style":"form"},{"$ref":"#/components/parameters/currentPage"},{"$ref":"#/components/parameters/pageSize"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"data":[{"assets":{"hls":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8","iframe":"<iframe src=\"//embed.api.video/c188ed58-3403-46a2-b91b-44603d10b2c9?token=831a9bd9-9f50-464c-a369-8e9d914371ae\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","mp4":"https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4","player":"https://embed.api.video/c188ed58-3403-46a2-b91b-44603d10b2c9?token=831a9bd9-9f50-464c-a369-8e9d914371ae","thumbnail":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg"},"description":"An amazing video explaining the string theory","metadata":[{"key":"Author","value":"John Doe"},{"key":"Format","value":"Tutorial"}],"mp4Support":true,"panoramic":false,"playerId":"pl45KFKdlddgk654dspkze","public":false,"publishedAt":"2025-08-15T13:50:42.274Z","source":{"uri":"/videos/c188ed58-3403-46a2-b91b-44603d10b2c9/source"},"tags":["maths","string theory","video"],"title":"Maths video","updateddAt":"2025-08-15T13:50:42.274Z","videoId":"vi4k0jvEUuaTdRAEjQ4Prklg"},{"assets":{"hls":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8","iframe":"<iframe src=\"//embed.api.video/1b9d6ae8-8f57-4b6d-8552-d636926b4f5f?token=831a9bd9-9f50-464c-a369-8e9d914371ae\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","player":"https://embed.api.video/1b9d6ae8-8f57-4b6d-8552-d636926b4f5f?token=831a9bd9-9f50-464c-a369-8e9d914371ae","thumbnail":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg"},"description":"A description for your video.","metadata":[{"key":"Author","value":"John Doe"},{"key":"Science Fiction","value":"Cyberpunk"},{"key":"Technology","value":"Computers"}],"mp4Support":true,"panoramic":false,"public":false,"publishedAt":"2025-08-15T13:50:42.274Z","source":{"uri":"/videos/1b9d6ae8-8f57-4b6d-8552-d636926b4f5f/source"},"tags":["books","short stories"],"title":"Video Title","updateddAt":"2025-08-15T13:50:42.274Z","videoId":"vi4k0jvEUuaTdRAEjQ4Jfrgz"},{"assets":{"hls":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8","iframe":"<iframe src=\"//embed.api.video/73129412-e320-4b93-99f6-59a85e3cedcd?token=831a9bd9-9f50-464c-a369-8e9d914371ae\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","player":"https://embed.api.video/73129412-e320-4b93-99f6-59a85e3cedcd?token=831a9bd9-9f50-464c-a369-8e9d914371ae","thumbnail":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg"},"description":"A brief description of the video.","metadata":[{"key":"Length","value":"Short"}],"mp4Support":true,"panoramic":false,"playerId":"pl45KFKdlddgk654dspkze","public":false,"publishedAt":"2025-08-15T13:50:42.274Z","source":{"uri":"/videos/73129412-e320-4b93-99f6-59a85e3cedcd/source"},"tags":["General","Videos"],"title":"My Video Title","updateddAt":"2025-08-15T13:50:42.274Z","videoId":"vi4k0jvEUuaTdRAEjQ4Jfrgz"}],"pagination":{"currentPage":1,"currentPageItems":11,"itemsTotal":11,"links":[{"rel":"self","uri":"https://ws.api.video/videos?currentPage=1"},{"rel":"first","uri":"https://ws.api.video/videos?currentPage=1"},{"rel":"last","uri":"https://ws.api.video/videos?currentPage=1"}],"pageSize":25,"pagesTotal":1}}}},"schema":{"$ref":"#/components/schemas/videos-list-response"}}},"description":"Success"},"400":{"content":{"application/json":{"examples":{"response":{"value":{"name":"page","problems":[{"name":"page","range":{"min":1},"title":"This parameter is out of the allowed range of values."},{"name":"pageSize","range":{"max":100,"min":10},"title":"This parameter is out of the allowed range of values."}],"range":{"min":1},"status":400,"title":"This parameter is out of the allowed range of values."}}},"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"}},"security":[{"bearerAuth":[]}],"summary":"List all videos","tags":["Videos"],"x-client-action":"list","x-client-paginated":true,"x-group-parameters":true},"post":{"description":"To create a video, you create its container&parameters first, before adding the video file (exception - when using an existing HTTP source).\n* Videos are public by default. [Learn about Private videos](https://api.video/blog/tutorials/tutorial-private-videos)\n* Up to 6 responsive video streams will be created (from 240p to 4k)\n* Mp4 encoded versions are created at the highest quality (max 1080p) by default.\n* Panoramic videos are for videos recorded in 360 degrees.  You can toggle this after your 360 video upload.\n* Searchable parameters: title, description, tags and metadata\n\n ```shell\n$ curl https://ws.api.video/videos \\ -H 'Authorization: Bearer {access_token} \\ -d '{\"title\":\"My video\", \n     \"description\":\"so many details\",\n     \"mp4Support\":true\n}'\n```  \n\n## add an URL to upload on creation\nYou can also create a video directly from a video hosted on a third-party server by giving its URI in `source` parameter:\n```shell\n$ curl https://ws.api.video/videos \\\n-H 'Authorization: Bearer {access_token} \\\n-d '{\"source\":\"http://uri/to/video.mp4\", \"title\":\"My video\"}'\n```\n\nIn this case, the service will respond `202 Accepted` and ingest the video asynchronously.\n## Track users with Dynamic Metadata\nMetadata values can be a key:value where the values are predefined, but Dynamic metadata allows you to enter *any* value for a defined key.  To defined a dynamic metadata pair use:\n``` \"metadata\":[{\"dynamicKey\": \"__dynamicKey__\"}] ```\n\nThe double underscore on both sides of the value allows any variable to be added for a given video session. Added the the url you might have:\n``` <iframe type=\"text/html\" src=\"https://embed.api.video/vod/vi6QvU9dhYCzW3BpPvPsZUa8?metadata[classUserName]=Doug\" width=\"960\" height=\"320\" frameborder=\"0\" scrollling=\"no\"></iframe> ```\n\n\nThis video session will be tagged as watched by Doug - allowing for in-depth analysis on how each viewer interacts with the videos.\n### We have tutorials on:\n* [Creating and uploading videos](https://api.video/blog/tutorials/video-upload-tutorial)\n* [Uploading large videos](https://api.video/blog/tutorials/video-upload-tutorial-large-videos)\n\n\n* [Using tags with videos](https://api.video/blog/tutorials/video-tagging-best-practices)\n* [Private videos](https://api.video/blog/tutorials/tutorial-private-videos)\n* [Using Dynamic Metadata](https://api.video/blog/tutorials/dynamic-metadata)\n\n* Full list of [tutorials](https://api.video/blog/endpoints/video-create) that demonstrate this endpoint.\n","operationId":"POST-video","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/video-create-payload"}}},"description":"video to create"},"responses":{"201":{"content":{"application/json":{"examples":{"response":{"value":{"assets":{"hls":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8","iframe":"<iframe src=\"//embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","mp4":"https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4","player":"https://embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae","thumbnail":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg"},"description":"An amazing video explaining the string theory","metadata":[{"key":"Author","value":"John Doe"},{"key":"Format","value":"Tutorial"}],"mp4Support":true,"panoramic":false,"playerId":"pl4k0jvEUuaTdRAEjQ4Jfrgz","public":false,"publishedAt":"2025-08-15T13:50:42.274Z","source":{"uri":"/videos/vi4k0jvEUuaTdRAEjQ4Jfrgz/source"},"tags":["maths","string theory","video"],"title":"Maths video","videoId":"vi4k0jvEUuaTdRAEjQ4Jfrgz"}}},"schema":{"$ref":"#/components/schemas/video"}}},"description":"Created"},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/video"}}},"description":"Accepted"},"400":{"content":{"application/json":{"examples":{"response":{"value":{"name":"title","problems":[{"name":"title","title":"This attribute is required.","type":"https://docs.api.video/docs/attributerequired"},{"name":"scheduledAt","title":"This attribute must be a ISO8601 date.","type":"https://docs.api.video/docs/attributeinvalid"},{"name":"tags","title":"This attribute must be an array.","type":"https://docs.api.video/docs/attributeinvalid"},{"name":"metadata","title":"This attribute must be an array.","type":"https://docs.api.video/docs/attributeinvalid"}],"status":400,"title":"This attribute is required.","type":"https://docs.api.video/docs/attributerequired"}}},"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"}},"security":[{"bearerAuth":[]}],"summary":"Create a video","tags":["Videos"],"x-client-action":"create"}},"/videos/{videoId}":{"delete":{"description":"If you do not need a video any longer, you can send a request to delete it. All you need is the videoId. Tutorials using [video deletion](https://api.video/blog/endpoints/video-delete).","operationId":"DELETE-video","parameters":[{"description":"The video ID for the video you want to delete.","example":"vi4k0jvEUuaTdRAEjQ4Jfrgz","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"204":{"description":"No Content"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"videoId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Delete a video","tags":["Videos"],"x-client-action":"delete"},"get":{"description":"This call provides the same JSON information provided on video creation. For private videos, it will generate a unique token url. Use this to retrieve any details you need about a video, or set up a private viewing URL. Tutorials using [video GET](https://api.video/blog/endpoints/video-get).","operationId":"GET-video","parameters":[{"description":"The unique identifier for the video you want details about.","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"assets":{"hls":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8","iframe":"<iframe src=\"//embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","mp4":"https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4","player":"https://embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae","thumbnail":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg"},"description":"An amazing video explaining string theory","metadata":[{"key":"Author","value":"John Doe"},{"key":"Format","value":"Tutorial"}],"mp4Support":true,"panoramic":false,"playerId":"pl45KFKdlddgk654dspkze","public":false,"publishedAt":"2025-08-15T13:50:42.274Z","source":{"uri":"/videos/vi4k0jvEUuaTdRAEjQ4Jfrgz/source"},"tags":["maths","string theory","video"],"title":"Maths video","updateddAt":"2025-08-15T13:50:42.274Z","videoId":"vi4k0jvEUuaTdRAEjQ4Jfrgz"}}},"schema":{"$ref":"#/components/schemas/video","type":"object"}}},"description":"Success"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"videoId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Show a video","tags":["Videos"],"x-client-action":"get"},"patch":{"description":"Use this endpoint to update the parameters associated with your video. The video you are updating is determined by the video ID you provide in the path. For each parameter you want to update, include the update in the request body. NOTE: If you are updating an array, you must provide the entire array as what you provide here overwrites what is in the system rather than appending to it. Tutorials using [video update](https://api.video/blog/endpoints/video-update).","operationId":"PATCH-video","parameters":[{"description":"The video ID for the video you want to delete.","example":"vi4k0jvEUuaTdRAEjQ4Jfrgz","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/video-update-payload"}}}},"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"assets":{"hls":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8","iframe":"<iframe src=\"//embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","mp4":"https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4","player":"https://embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae","thumbnail":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg"},"description":"An amazing video explaining the string theory","metadata":[{"key":"Author","value":"John Doe"},{"key":"Format","value":"Tutorial"}],"mp4Support":true,"panoramic":false,"playerId":"pl45KFKdlddgk654dspkze","public":false,"publishedAt":"2025-08-15T13:50:42.274Z","source":{"uri":"/videos/vi4k0jvEUuaTdRAEjQ4Jfrgz/source"},"tags":["maths","string theory","video"],"title":"Maths video","updatedAt":"2025-08-15T13:50:42.274Z","videoId":"vi4k0jvEUuaTdRAEjQ4Jfrgz"}}},"schema":{"$ref":"#/components/schemas/video"}}},"description":"Success"},"400":{"content":{"application/json":{"examples":{"response":{"value":{"name":"scheduledAt","problems":[{"name":"scheduledAt","title":"This attribute must be a ISO-8601 date.","type":"https://docs.api.video/docs/attributeinvalid"},{"name":"tags","title":"This attribute must be an array.","type":"https://docs.api.video/docs/attributeinvalid"},{"name":"metadata","title":"This attribute must be an array.","type":"https://docs.api.video/docs/attributeinvalid"}],"status":400,"title":"This attribute must be a ISO-8601 date.","type":"https://docs.api.video/docs/attributeinvalid"}}},"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"videoId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Update a video","tags":["Videos"],"x-client-action":"update"}},"/videos/{videoId}/captions":{"get":{"description":"Retrieve a list of available captions for the videoId you provide.","operationId":"GET_videos-videoId-captions","parameters":[{"description":"The unique identifier for the video you want to retrieve a list of captions for.","example":"vi4k0jvEUuaTdRAEjQ4Prklg","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"},{"$ref":"#/components/parameters/currentPage"},{"$ref":"#/components/parameters/pageSize"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"data":[{"default":false,"src":"https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/captions/en.vtt","srclang":"en","uri":"/videos/vi3N6cDinStg3oBbN79GklWS/captions/en"},{"default":false,"src":"https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/captions/fr.vtt","srclang":"fr","uri":"/videos/vi3N6cDinStg3oBbN79GklWS/captions/fr"}],"pagination":{"currentPage":1,"currentPageItems":2,"itemsTotal":2,"links":[{"rel":"self","uri":"/videos/vi3N6cDinStg3oBbN79GklWS/captions?currentPage=1&pageSize=25"},{"rel":"first","uri":"/videos/vi3N6cDinStg3oBbN79GklWS/captions?currentPage=1&pageSize=25"},{"rel":"last","uri":"/videos/vi3N6cDinStg3oBbN79GklWS/captions?currentPage=1&pageSize=25"}],"pageSize":25,"pagesTotal":1}}}},"schema":{"$ref":"#/components/schemas/captions-list-response"}}},"description":"Success"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"List video captions","tags":["Captions"],"x-client-action":"list","x-client-paginated":true,"x-group-parameters":true}},"/videos/{videoId}/captions/{language}":{"delete":{"description":"Delete a caption in a specific language by providing the video ID for the video you want to delete the caption from and the language the caption is in.","operationId":"DELETE_videos-videoId-captions-language","parameters":[{"description":"The unique identifier for the video you want to delete a caption from.","example":"vi4k0jvEUuaTdRAEjQ4Prklgc","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"},{"description":"A valid [BCP 47](https://github.com/libyal/libfwnt/wiki/Language-Code-identifiers) language representation.","example":"en","explode":false,"in":"path","name":"language","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"204":{"description":"No Content"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Delete a caption","tags":["Captions"],"x-client-action":"delete"},"get":{"description":"Display a caption for a video in a specific language. If the language is available, the caption is returned. Otherwise, you will get a response indicating the caption was not found.\nTutorials that use the [captions endpoint](https://api.video/blog/endpoints/captions).","operationId":"GET_videos-videoId-captions-language","parameters":[{"description":"The unique identifier for the video you want captions for.","example":"vi4k0jvEUuaTdRAEjQ4Prklg","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"},{"description":"A valid [BCP 47](https://github.com/libyal/libfwnt/wiki/Language-Code-identifiers) language representation","example":"en","explode":false,"in":"path","name":"language","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"default":false,"src":"https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/captions/en.vtt","srclang":"en","uri":"/videos/vi3N6cDinStg3oBbN79GklWS/captions/en"}}},"schema":{"$ref":"#/components/schemas/subtitle"}}},"description":"Success"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Show a caption","tags":["Captions"],"x-client-action":"get"},"patch":{"description":"To have the captions on automatically, use this PATCH to set default: true.","operationId":"PATCH_videos-videoId-captions-language","parameters":[{"description":"The unique identifier for the video you want to have automatic captions for. ","example":"vi4k0jvEUuaTdRAEjQ4Prklg","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"},{"description":"A valid [BCP 47](https://github.com/libyal/libfwnt/wiki/Language-Code-identifiers) language representation.","example":"en","explode":false,"in":"path","name":"language","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/captions-update-payload"}}}},"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"default":true,"src":"https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/captions/en.vtt","srclang":"en","uri":"/videos/vi3N6cDinStg3oBbN79GklWS/captions/en"}}},"schema":{"$ref":"#/components/schemas/subtitle"}}},"description":"Success"},"400":{"content":{"application/json":{"examples":{"response":{"value":{"name":"string (required)","problems":[null],"status":"integer (required)","title":"string (required)","type":"string (required)"}}},"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"irure mollit aute","status":85925135,"title":"sunt do fugiat tempor","type":"Lorem sit culpa non"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Update caption","tags":["Captions"],"x-client-action":"update"},"post":{"description":"Upload a VTT file to add captions to your video.\n Read our [captioning tutorial](https://api.video/blog/tutorials/adding-captions) for more details.","operationId":"POST_videos-videoId-captions-language","parameters":[{"description":"The unique identifier for the video you want to add a caption to.","example":"vi4k0jvEUuaTdRAEjQ4Prklg","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"},{"description":"A valid BCP 47 language representation.","example":"en","explode":false,"in":"path","name":"language","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/captions-upload-payload"}}}},"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"default":false,"src":"https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/captions/en.vtt","srclang":"en","uri":"/videos/vi3N6cDinStg3oBbN79GklWS/captions/en"}}},"schema":{"$ref":"#/components/schemas/subtitle"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Upload a caption","tags":["Captions"],"x-client-action":"upload"}},"/videos/{videoId}/chapters":{"get":{"description":"Retrieve a list of all chapters for a specified video.","operationId":"GET_videos-videoId-chapters","parameters":[{"description":"The unique identifier for the video you want to retrieve a list of chapters for.","example":"vi4k0jvEUuaTdRAEjQ4Jfrgz","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"},{"$ref":"#/components/parameters/currentPage"},{"$ref":"#/components/parameters/pageSize"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"data":[{"language":"fr","src":"https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/chapters/fr.vtt","uri":"/videos/vi3N6cDinStg3oBbN79GklWS/chapters/fr"},{"language":"en","src":"https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/chapters/en.vtt","uri":"/videos/vi3N6cDinStg3oBbN79GklWS/chapters/en"}],"pagination":{"currentPage":1,"currentPageItems":2,"itemsTotal":2,"links":[{"rel":"self","uri":"/videos/vi3N6cDinStg3oBbN79GklWS/chapters?currentPage=1&pageSize=25"},{"rel":"first","uri":"/videos/vi3N6cDinStg3oBbN79GklWS/chapters?currentPage=1&pageSize=25"},{"rel":"last","uri":"/videos/vi3N6cDinStg3oBbN79GklWS/chapters?currentPage=1&pageSize=25"}],"pageSize":25,"pagesTotal":1}}}},"schema":{"$ref":"#/components/schemas/chapters-list-response"}}},"description":"Success"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"List video chapters","tags":["Chapters"],"x-client-action":"list","x-client-paginated":true,"x-group-parameters":true}},"/videos/{videoId}/chapters/{language}":{"delete":{"operationId":"DELETE_videos-videoId-chapters-language","parameters":[{"description":"The unique identifier for the video you want to delete a chapter from. ","example":"vi4k0jvEUuaTdRAEjQ4Jfrgz","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"},{"description":"A valid [BCP 47](https://github.com/libyal/libfwnt/wiki/Language-Code-identifiers) language representation.","example":"en","explode":false,"in":"path","name":"language","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"204":{"description":"No Content"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Delete a chapter","tags":["Chapters"],"x-client-action":"delete"},"get":{"description":"Chapters help your viewers find the sections of the video they are most interested in viewing. Tutorials that use the [chapters endpoint](https://api.video/blog/endpoints/chapters).","operationId":"GET_videos-videoId-chapters-language","parameters":[{"description":"The unique identifier for the video you want to show a chapter for.","example":"vi4k0jvEUuaTdRAEjQ4Jfrgz","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"},{"description":"A valid [BCP 47](https://github.com/libyal/libfwnt/wiki/Language-Code-identifiers) language representation.","example":"en","explode":false,"in":"path","name":"language","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"language":"fr","src":"https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/chapters/fr.vtt","uri":"/videos/vi3N6cDinStg3oBbN79GklWS/chapters/fr"}}},"schema":{"$ref":"#/components/schemas/chapter"}}},"description":"Success"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Show a chapter","tags":["Chapters"],"x-client-action":"get"},"post":{"description":"Chapters help break the video into sections. Read our [tutorial](https://api.video/blog/tutorials/adding-chapters-to-your-videos) for more details.","operationId":"POST_videos-videoId-chapters-language","parameters":[{"description":"The unique identifier for the video you want to upload a chapter for.","example":"vi4k0jvEUuaTdRAEjQ4Jfrgz","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"},{"description":"A valid [BCP 47](https://github.com/libyal/libfwnt/wiki/Language-Code-identifiers) language representation.","example":"en","explode":false,"in":"path","name":"language","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/chapters-update-payload"}}}},"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"language":"fr","src":"https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/chapters/fr.vtt","uri":"/videos/vi3N6cDinStg3oBbN79GklWS/chapters/fr"}}},"schema":{"$ref":"#/components/schemas/chapter"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Upload a chapter","tags":["Chapters"],"x-client-action":"upload"}},"/videos/{videoId}/source":{"post":{"description":"To upload a video to the videoId you created. Replace {videoId} with the id you'd like to use, {access_token} with your token, and /path/to/video.mp4 with the path to the video you'd like to upload. You can only upload your video to the videoId once.\n```bash\ncurl https://ws.api.video/videos/{videoId}/source \\\n  -H 'Authorization: Bearer {access_token}' \\\n  -F file=@/path/to/video.mp4\n\n  ```\nTutorials using [video upload](https://api.video/blog/endpoints/video-upload).","operationId":"POST_videos-videoId-source","parameters":[{"description":"Enter the videoId you want to use to upload your video.","example":"vi4k0jvEUuaTdRAEjQ4Jfrgz","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"},{"description":"Content-Range represents the range of bytes that will be returned as a result of the request. Byte ranges are inclusive, meaning that bytes 0-999 represents the first 1000 bytes in a file or object.","example":"Content-Range: bytes 200-100/5000","explode":false,"in":"header","name":"Content-Range","required":false,"schema":{"pattern":"^bytes [0-9]*-[0-9]*\\/[0-9]*$","type":"string"},"style":"simple","x-client-ignore":true}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/video-upload-payload"}}}},"responses":{"201":{"content":{"application/json":{"examples":{"response":{"value":{"assets":{"hls":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8","iframe":"<iframe src=\"//embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","mp4":"https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4","player":"https://embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae","thumbnail":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg"},"description":"An amazing video explaining the string theory.","metadata":[{"key":"Author","value":"John Doe"},{"key":"Format","value":"Tutorial"}],"mp4Support":true,"panoramic":false,"playerId":"pl45KFKdlddgk654dspkze","public":false,"publishedAt":"2025-08-15T13:50:42.274Z","source":{"uri":"/videos/vi4k0jvEUuaTdRAEjQ4Jfrgz/source"},"tags":["maths","string theory","video"],"title":"Maths video","videoId":"vi4k0jvEUuaTdRAEjQ4Jfrgz"}}},"schema":{"$ref":"#/components/schemas/video","type":"object"}}},"description":"Created"},"400":{"content":{"application/json":{"examples":{"response":{"value":{"name":"file","problems":[{"name":"file","title":"The source of the video is already uploaded.","type":"https://docs.api.video/docs/filealreadyuploaded"},{"name":"video","title":"The video xxxx has already been uploaded.","type":"https://docs.api.video/docs/filealreadyuploaded"},{"name":"file","title":"There is no uploaded file in the request.","type":"https://docs.api.video/docs/filemissing"},{"name":"file","title":"There is more than one uploaded file in the request.","type":"https://docs.api.video/docs/multiplefilesuploaded"}],"status":400,"title":"The source of the video is already uploaded.","type":"https://docs.api.video/docs/filealreadyuploaded"}}},"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"videoId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Upload a video","tags":["Videos"],"x-client-action":"upload","x-client-chunk-upload":true}},"/videos/{videoId}/status":{"get":{"description":"This API provides upload status & encoding status to determine when the video is uploaded or ready to playback. Once encoding is completed, the response also lists the available stream qualities. Tutorials using [video status](https://api.video/blog/endpoints/video-status).","operationId":"GET-video-status","parameters":[{"description":"The unique identifier for the video you want the status for.","example":"vi4k0jvEUuaTdRAEjQ4Jfrgz","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"encoding":{"metadata":{"aspectRatio":"16/9","audioCodec":"aac","bitrate":411.218,"duration":4176,"framerate":24,"height":240,"samplerate":48000,"videoCodec":"h264","width":424},"playable":true,"qualities":[{"quality":"360p","status":"encoded"},{"quality":"480p","status":"encoded"},{"quality":"720p","status":"encoded"},{"quality":"1080p","status":"encoding"},{"quality":"2160p","status":"waiting"}]},"ingest":{"filesize":273579401,"receivedBytes":[{"from":0,"to":134217727,"total":273579401},{"from":134217728,"to":268435455,"total":273579401},{"from":268435456,"to":273579400,"total":273579401}],"status":"uploaded"}}}},"schema":{"$ref":"#/components/schemas/videostatus"}}},"description":"Success"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"videoId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Show video status","tags":["Videos"],"x-client-action":"getVideoStatus"}},"/videos/{videoId}/thumbnail":{"patch":{"description":"Pick a thumbnail from the given time code. If you'd like to upload an image for your thumbnail, use the [Upload a Thumbnail](https://docs.api.video/reference#post_videos-videoid-thumbnail) endpoint. There may be a short delay for the thumbnail to update.\nTutorials using [Thumbnail picking](https://api.video/blog/endpoints/video-pick-a-thumbnail).","operationId":"PATCH_videos-videoId-thumbnail","parameters":[{"description":"Unique identifier of the video you want to add a thumbnail to, where you use a section of your video as the thumbnail.","example":"vi4k0jvEUuaTdRAEjQ4Jfrgz","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/video-thumbnail-pick-payload"}}}},"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"assets":{"hls":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8","iframe":"<iframe src=\"//embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","mp4":"https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4","player":"https://embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae","thumbnail":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg"},"description":"An amazing video explaining string theory","metadata":[{"key":"Author","value":"John Doe"},{"key":"Format","value":"Tutorial"}],"mp4Support":true,"panoramic":false,"playerId":"pl45KFKdlddgk654dspkze","public":false,"publishedAt":"2025-08-15T13:50:42.274Z","source":{"uri":"/videos/vi4k0jvEUuaTdRAEjQ4Jfrgz/source"},"tags":["maths","string theory","video"],"title":"Maths video","videoId":"vi4k0jvEUuaTdRAEjQ4Jfrgz"}}},"schema":{"$ref":"#/components/schemas/video"}}},"description":"Success"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"videoId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Pick a thumbnail","tags":["Videos"],"x-client-action":"pickThumbnail"},"post":{"description":"The thumbnail is the poster that appears in the player window before video playback begins.\nThis endpoint allows you to upload an image for the thumbnail.\nTo select a still frame from the video using a time stamp, use [Pick a Thumbnail](https://docs.api.video/reference#patch_videos-videoid-thumbnail) to pick a time in the video. \nNote: There may be a short delay before the new thumbnail is delivered to our CDN.\nTutorials using [Thumbnail upload](https://api.video/blog/endpoints/videos-upload-a-thumbnail).","operationId":"POST_videos-videoId-thumbnail","parameters":[{"description":"Unique identifier of the chosen video ","explode":false,"in":"path","name":"videoId","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/video-thumbnail-upload-payload"}}}},"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"assets":{"hls":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/hls/manifest.m3u8","iframe":"<iframe src=\"//embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","mp4":"https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4","player":"https://embed.api.video/vi4k0jvEUuaTdRAEjQ4Jfrgz?token=831a9bd9-9f50-464c-a369-8e9d914371ae","thumbnail":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg"},"description":"An amazing video explaining the string theory","metadata":[{"key":"Author","value":"John Doe"},{"key":"Format","value":"Tutorial"}],"mp4Support":true,"panoramic":false,"playerId":"pl45KFKdlddgk654dspkze","public":false,"publishedAt":"2025-08-15T13:50:42.275Z","scheduledAt":"2025-08-15T13:50:42.275Z","source":{"uri":"/videos/vi4k0jvEUuaTdRAEjQ4Jfrgz/source"},"tags":["maths","string theory","video"],"title":"Maths video","videoId":"vi4k0jvEUuaTdRAEjQ4Jfrgz"}}},"schema":{"$ref":"#/components/schemas/video"}}},"description":"Success"},"400":{"content":{"application/json":{"examples":{"response":{"value":{"name":"file","status":400,"title":"Only [jpeg, jpg, JPG, JPEG] extensions are supported.","type":"https://docs.api.video/docs/fileextension"}}},"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"videoId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Upload a thumbnail","tags":["Videos"],"x-client-action":"uploadThumbnail"}},"/webhooks":{"get":{"description":"Requests to this endpoint return a list of your webhooks (with all their details). You can filter what the webhook list that the API returns using the parameters described below.","operationId":"LIST-webhooks","parameters":[{"description":"The webhook event that you wish to filter on.","example":"video.encoding.quality.completed","explode":true,"in":"query","name":"events","required":false,"schema":{"type":"string"},"style":"form"},{"$ref":"#/components/parameters/currentPage"},{"$ref":"#/components/parameters/pageSize"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"data":[{"createdAt":"2025-08-15T13:50:42.275Z","events":["video.encoding.quality.completed"],"url":"http://clientnotificationserver.com/notif?myquery=query","webhookId":"webhook_XXXXXXXXXXXXXXX"},{"createdAt":"2025-08-15T13:50:42.275Z","events":["video.encoding.quality.completed"],"url":"http://clientnotificationserver.com/notif?myquery=query2","webhookId":"webhook_XXXXXXXXXYYYYYY"}],"pagination":{"currentPage":1,"currentPageItems":11,"itemsTotal":11,"links":[{"rel":"self","uri":"https://ws.api.video/webhooks?currentPage=1"},{"rel":"first","uri":"https://ws.api.video/webhooks?currentPage=1"},{"rel":"last","uri":"https://ws.api.video/webhooks?currentPage=1"}],"pageSize":25,"pagesTotal":1}}}},"schema":{"$ref":"#/components/schemas/webhooks-list-response"}}},"description":"Success"}},"security":[{"bearerAuth":[]}],"summary":"List all webhooks","tags":["Webhooks"],"x-client-action":"list","x-client-paginated":true,"x-group-parameters":true},"post":{"description":"Webhooks can push notifications to your server, rather than polling api.video for changes. We currently offer four events: \n* ```video.encoding.quality.completed```  When a new video is uploaded into your account, it will be encoded into several different HLS sizes/bitrates.  When each version is encoded, your webhook will get a notification.  It will look like ```{ \\\"type\\\": \\\"video.encoding.quality.completed\\\", \\\"emittedAt\\\": \\\"2021-01-29T16:46:25.217+01:00\\\", \\\"videoId\\\": \\\"viXXXXXXXX\\\", \\\"encoding\\\": \\\"hls\\\", \\\"quality\\\": \\\"720p\\\"} ```. This request says that the 720p HLS encoding was completed.\n* ```live-stream.broadcast.started```  When a livestream begins broadcasting, the broadcasting parameter changes from false to true, and this webhook fires.\n* ```live-stream.broadcast.ended```  This event fores when the livestream has finished broadcasting, and the broadcasting parameter flips from false to true.\n* ```video.source.recorded```  This event is similar to ```video.encoding.quality.completed```, but tells you if a livestream has been recorded as a VOD.","operationId":"POST-webhooks","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/webhooks-create-payload"}}}},"responses":{"201":{"content":{"application/json":{"examples":{"response":{"value":{"createdAt":"2025-08-15T13:50:42.275Z","events":["video.encoding.quality.completed"],"url":"http://clientnotificationserver.com/notif?myquery=query","webhookId":"webhook_XXXXXXXXXXXXXXX"}}},"schema":{"$ref":"#/components/schemas/webhook"}}},"description":"Created"},"400":{"content":{"application/json":{"examples":{"response":{"value":{"events":"This attribute is required.","name":"events","problems":[{"name":"events","title":"This attribute is required.","type":"https://docs.api.video/docs/attributerequired"},{"name":"url","title":"This attribute is required.","type":"https://docs.api.video/docs/attributerequired"},{"name":"events","title":"This attribute must be an array.","type":"https://docs.api.video/docs/attributeinvalid"}],"status":400,"type":"https://docs.api.video/docs/attributerequired"}}},"schema":{"$ref":"#/components/schemas/bad-request"}}},"description":"Bad Request"}},"security":[{"bearerAuth":[]}],"summary":"Create Webhook","tags":["Webhooks"],"x-client-action":"create"}},"/webhooks/{webhookId}":{"delete":{"description":"This endpoint will delete the indicated webhook.","operationId":"DELETE-webhook","parameters":[{"description":"The webhook you wish to delete.","explode":false,"in":"path","name":"webhookId","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"204":{"description":"No Content"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"name":"webhookId","status":404,"title":"The requested resource was not found.","type":"https://docs.api.video/docs/resourcenot_found"}}},"schema":{"$ref":"#/components/schemas/not-found"}}},"description":"Not Found"}},"security":[{"bearerAuth":[]}],"summary":"Delete a Webhook","tags":["Webhooks"],"x-client-action":"delete"},"get":{"description":"This call provides the same JSON information provided on Webjhook creation.","operationId":"GET-Webhook","parameters":[{"description":"The unique webhook you wish to retreive details on.","explode":false,"in":"path","name":"webhookId","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"createdAt":"2025-08-15T13:50:42.275Z","events":["video.encoding.quality.completed"],"url":"http://clientnotificationserver.com/notif?myquery=query","webhookId":"webhook_XXXXXXXXXXXXXXX"}}},"schema":{"$ref":"#/components/schemas/webhook"}}},"description":"Success"}},"security":[{"bearerAuth":[]}],"summary":"Show Webhook details","tags":["Webhooks"],"x-client-action":"get"}}},"components":{"parameters":{"currentPage":{"description":"Choose the number of search results to return per page. Minimum value: 1","example":2,"explode":true,"in":"query","name":"currentPage","required":false,"schema":{"default":1,"type":"integer"},"style":"form"},"pageSize":{"description":"Results per page. Allowed values 1-100, default is 25.","example":30,"explode":true,"in":"query","name":"pageSize","required":false,"schema":{"default":25,"type":"integer"},"style":"form"}},"schemas":{"access-token":{"example":{"access_token":"est","expires_in":3600,"refresh_token":"cillum","token_type":"qui nulla l"},"properties":{"access_token":{"description":"The access token containing security credentials allowing you to acccess the API. The token lasts for one hour.","example":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjUyZWM4NWUyMjFkODZjOWI0NDQ5NzBhMjQwMzUyOWQ4MDQyNGQ3ZmJjYjFlYWM2MjVlM2VkMjI2YWRlNTcxMDY2NDUyZDc0NjdhN2E4NjI0In0.eyJhdWQiOiJsaWJjYXN0IiwianRpIjoiNTJlYzg1ZTIyMWQ4NmM5YjQ0NDk3MGEyNDAzNTI5ZDgwNDI0ZDdmYmNiMWVhYzYyNWUzZWQyMjZhZGU1NzEwNjY0NTJkNzQ2N2E3YTg2MjQiLCJpYXQiOjE1MjUyNzYxNDcsIm5iZiI6MTUyNTI3NjE0NywiZXhwIjoxNTI1Mjc5NzQ3LCJzdWIiOiJ1c01vbml0b3IiLCJzY29wZXMiOlsibW9uaXRvci5saWJjYXN0LmNvbSJdLCJjb250ZXh0Ijp7InVzZXIiOiJ1c01vbml0b3IiLCJwcm9qZWN0IjoicHJNb25pdG9yIiwibWVtYmVyIjoibWVNb25pdG9yIn19.rUvishDNyJLNlI4W5VmguNecm5KD2uZgPkKJQbaqw-cJbSrVxkSbiKYtk_E3cz3WT7-IS2yFTsYN3uIo5Rbit8_HftweyEp2bdBRI8yjR6oZZ1sNJJXswISN1i2kk4r-aaxu7Xxf_LtsjOMUj_YZsvcc2nqBXPKjHbJCJryx3DDJaIcymOqao7nhQaCCQyrQooAXNTYs4E9fWN1dC_x2O-zok5TuG-xhEW-umwxfSUMWNgSTkz38ACceQ0PCJSgB3jqjDH4MwC7B3ppEPZuK5E6JhKeyRlalswRyYq3UQPnVeMTam7YQHsuTgbehF6WySW8i44o7V_MCe9hjPdp-WA","type":"string"},"expires_in":{"description":"Lists the time in seconds when your access token expires. It lasts for one hour.","type":"integer"},"refresh_token":{"description":"A token you can use to get the next access token when your current access token expires.","example":"def50200a28d88fb9aaa921be78eeb5604b071101a334899a7d5fc7492cf8ea752962ddc8961fe5c126101d4ecacd980396eb2fd494995b812dffcb98256c4277f790d1f658fc2d2e34f350740544e5232d69d68d34c648271d706c5e7049adac0b1832d0fdf71809715cc7e97fa63f65966deadb501a55ff469b0fd23a637cb6acbe9d9b8594a17f09efc2efeed82984764a0065d5e29c950c7b081a61ba2aaa192be3085c400ee37eac50fa9320ce2cfe8916c8165418d23e9f91b6a5c8515e1d74ee193a5a1ca01954fbff27361c20184240be2359e0afbed0bf1c762cf872450b5e8b5d4704f4fd9583e4470adc98409dd42965709712806bd9019378a72eea0b4912ce684ffd833db5806ab84174f905db2a75380071d004615c944bb8f8c4045cce7234c2be9a2330522cf7f067b8e58f57cffb6edb4b7ef91313e12bcde47e5e76ceee7fa52990132288f345d33ed917ae4fd54b7284f8964d898e97e1ee3bc4157f75d7fee63976e4be66ac1ec32ef74afa533f0eb593523f226cbec57d196ac8962","type":"string"},"token_type":{"default":"bearer","description":"The type of token you have.","type":"string"}},"title":"AccessToken","type":"object"},"account":{"deprecated":true,"properties":{"environment":{"description":"Deprecated. Whether you are using your production or sandbox API key will impact what environment is displayed here, as well as stats and features information. If you use your sandbox key, the environment is \"sandbox.\" If you use your production key, the environment is \"production.\"","type":"string"},"features":{"description":"Deprecated. What features are enabled for your account. Choices include: app.dynamic_metadata - the ability to dynamically tag videos to better segment and understand your audiences, app.event_log - the ability to create and retrieve a log detailing how your videos were interacted with, player.white_label - the ability to customise your player, stats.player_events - the ability to see statistics about how your player is being used, transcode.mp4_support - the ability to reformat content into mp4 using the H264 codec.","example":"[\"app.dynamic_metadata, app.event_log\"]","items":{"type":"string"},"type":"array"},"quota":{"description":"Deprecated","properties":{"quotaRemaining":{"description":"Deprecated","type":"number"},"quotaTotal":{"description":"Deprecated","type":"number"},"quotaUsed":{"description":"Deprecated","type":"number"}},"type":"object"}},"title":"Account","type":"object"},"authenticate-payload":{"example":{"apiKey":"9VxMaPgsaFg7EBqmuspSzF7"},"properties":{"apiKey":{"description":"Your account API key. You can use your sandbox API key, or you can use your production API key.","type":"string"}},"required":["apiKey"],"title":"apiKey","type":"object"},"bad-request":{"properties":{"name":{"type":"string"},"problems":{"items":{"$ref":"#/components/schemas/bad-request"},"type":"array","uniqueItems":true},"status":{"type":"integer"},"title":{"type":"string"},"type":{"type":"string"}},"title":"BadRequest","type":"object"},"bytes_range":{"properties":{"from":{"description":"The starting point for the range of bytes for a chunk of a video.","example":0,"type":"integer"},"to":{"description":"The ending point for the range of bytes for a chunk of a video.","example":9999,"type":"integer"},"total":{"description":"The total number of bytes in the provided range.","example":10000,"type":"integer"}},"title":"bytes_range","type":"object"},"captions-list-response":{"properties":{"data":{"items":{"$ref":"#/components/schemas/subtitle"},"type":"array"},"pagination":{"$ref":"#/components/schemas/pagination"}},"title":"VideoCaptions","type":"object"},"captions-update-payload":{"properties":{"default":{"type":"boolean"}},"title":"UpdateCaptionPayload","type":"object"},"captions-upload-payload":{"properties":{"file":{"description":"The video text track (VTT) you want to upload.","example":"https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/captions/en.vtt","format":"binary","type":"string"}},"required":["file"],"type":"object"},"chapter":{"properties":{"language":{"type":"string"},"src":{"description":"The link to your VTT file, which contains your chapters information for the video.","example":"https://cdn.api.video/vod/vi3N6cDinStg3oBbN79GklWS/chapters/fr.vtt","type":"string"},"uri":{"type":"string"}},"title":"Chapter","type":"object"},"chapters-list-response":{"properties":{"data":{"items":{"$ref":"#/components/schemas/chapter"},"type":"array"},"pagination":{"$ref":"#/components/schemas/pagination"}},"title":"VideoChapters","type":"object"},"chapters-update-payload":{"properties":{"file":{"description":"The VTT file describing the chapters you want to upload.","format":"binary","type":"string"}},"required":["file"],"title":"UpdateChapterPayload","type":"object"},"link":{"properties":{"rel":{"type":"string"},"uri":{"type":"string"}},"type":"object"},"live-stream":{"properties":{"assets":{"$ref":"#/components/schemas/live_stream_assets"},"broadcasting":{"description":"Whether or not you are broadcasting the live video you recorded for others to see. True means you are broadcasting to viewers, false means you are not.","example":true,"type":"boolean"},"liveStreamId":{"description":"The unique identifier for the live stream. Live stream IDs begin with \"li.\"","example":"li400mYKSgQ6xs7taUeSaEKr","type":"string"},"name":{"description":"The name of your live stream.","example":"My Live Stream","type":"string"},"playerId":{"description":"The unique identifier for the player.","example":"pl45d5vFFGrfdsdsd156dGhh","type":"string"},"public":{"description":"BETA FEATURE Please limit all public = false (\"private\") livestreams to 3,000 users. Whether your video can be viewed by everyone, or requires authentication to see it. A setting of false will require a unique token for each view.","example":true,"type":"boolean"},"record":{"description":"Whether you are recording or not.","example":true,"type":"boolean"},"streamKey":{"description":"The unique, private stream key that you use to begin streaming.","example":"cc1b4df0-d1c5-4064-a8f9-9f0368385135","type":"string"}},"title":"LiveStream","type":"object"},"live-stream-create-payload":{"example":{"name":"Test live","playerId":"pl4f4ferf5erfr5zed4fsdd","record":true},"properties":{"name":{"description":"Add a name for your live stream here.","example":"My Live Stream Video","type":"string"},"playerId":{"description":"The unique identifier for the player.","example":"pl4f4ferf5erfr5zed4fsdd","type":"string"},"public":{"description":"BETA FEATURE Please limit all public = false (\"private\") livestreams to 3,000 users. Whether your video can be viewed by everyone, or requires authentication to see it. A setting of false will require a unique token for each view.","type":"boolean"},"record":{"default":false,"description":"Whether you are recording or not. True for record, false for not record.","example":true,"type":"boolean"}},"required":["name"],"title":"liveStreamCreationPayload","type":"object"},"live-stream-list-response":{"properties":{"data":{"items":{"$ref":"#/components/schemas/live-stream"},"type":"array"},"pagination":{"$ref":"#/components/schemas/pagination"}},"required":["data","pagination"],"title":"LiveStreams","type":"object"},"live-stream-session":{"properties":{"client":{"$ref":"#/components/schemas/live_stream_session_client"},"device":{"$ref":"#/components/schemas/live_stream_session_device"},"location":{"$ref":"#/components/schemas/live_stream_session_location"},"os":{"$ref":"#/components/schemas/video_session_os"},"referrer":{"$ref":"#/components/schemas/live_stream_session_referrer"},"session":{"$ref":"#/components/schemas/live_stream_session_session"}},"title":"Live Stream Session","type":"object"},"live-stream-thumbnail-upload-payload":{"properties":{"file":{"description":"The image to be added as a thumbnail.","format":"binary","type":"string"}},"required":["file"],"type":"object"},"live-stream-update-payload":{"properties":{"name":{"description":"The name you want to use for your live stream.","example":"My Live Stream Video","type":"string"},"playerId":{"description":"The unique ID for the player associated with a live stream that you want to update.","example":"pl45KFKdlddgk654dspkze","type":"string"},"public":{"description":"BETA FEATURE Please limit all public = false (\"private\") livestreams to 3,000 users. Whether your video can be viewed by everyone, or requires authentication to see it. A setting of false will require a unique token for each view.","type":"boolean"},"record":{"description":"Use this to indicate whether you want the recording on or off. On is true, off is false.","example":true,"type":"boolean"}},"title":"LiveStreamUpdatePayload","type":"object"},"live_stream_assets":{"properties":{"hls":{"description":"The http live streaming (HLS) link for your live video stream.","example":"https://live.api.video/li4pqNqGUkhKfWcBGpZVLRY5.m3u8","format":"uri","type":"string"},"iframe":{"description":"The embed code for the iframe containing your live video stream.","example":"<iframe src=\\\"https://embed.api.video/live/li4pqNqGUkhKfWcBGpZVLRY5\\\" width=\\\"100%\\\" height=\\\"100%\\\" frameborder=\\\"0\\\" scrolling=\\\"no\\\" allowfullscreen=\\\"\\\"></iframe>","type":"string"},"player":{"description":"A link to the video player that is playing your live stream.","example":"https://embed.api.video/live/li400mYKSgQ6xs7taUeSaEKr","format":"uri","type":"string"},"thumbnail":{"description":"A link to the thumbnail for your video.","example":"https://cdn.api.video/live/li400mYKSgQ6xs7taUeSaEKr/thumbnail.jpg","format":"uri","type":"string"}},"type":"object"},"live_stream_session_client":{"description":"What kind of browser the viewer is using for the live stream session.","properties":{"name":{"description":"The name of the browser used to view the live stream session.","example":"Firefox","type":"string"},"type":{"description":"The type of client used to view the live stream session.","example":"browser","type":"string"},"version":{"description":"The version of the browser used to view the live stream session.","example":"67.0","type":"string"}},"type":"object"},"live_stream_session_device":{"description":"What type of device the user is on when in the live stream session.","properties":{"model":{"description":"The specific model of the device, if known.","example":"unknown","type":"string"},"type":{"description":"What the type is like desktop, laptop, mobile.","example":"desktop","type":"string"},"vendor":{"description":"If known, what the brand of the device is, like Apple, Dell, etc.","example":"Dell","type":"string"}},"type":"object"},"live_stream_session_location":{"description":"The location of the viewer of the live stream.","properties":{"city":{"description":"The city of the viewer of the live stream.","example":"Paris","type":"string"},"country":{"description":"The country of the viewer of the live stream.","example":"France","type":"string"}},"type":"object"},"live_stream_session_referrer":{"properties":{"medium":{"description":"The type of search that brought the viewer to the live stream. Organic would be they found it on their own, paid would be they found it via an advertisement.","example":"organic","type":"string"},"searchTerm":{"description":"What term they searched for that led them to the live stream.","example":"video stream","type":"string"},"source":{"description":"Where the viewer came from to see the live stream (usually where they searched from).","example":"https://google.com","type":"string"},"url":{"description":"The website the viewer of the live stream was referred to in order to view the live stream.","example":"https://api.video","type":"string"}},"type":"object"},"live_stream_session_session":{"properties":{"endedAt":{"description":"When the session ended, with the date and time presented in ISO-8601 format.","example":"2025-08-15T13:50:42.275Z","format":"date-time","type":"string"},"loadedAt":{"description":"When the session started, with the date and time presented in ISO-8601 format.","example":"2025-08-15T13:50:42.275Z","format":"date-time","type":"string"},"sessionId":{"description":"A unique identifier for your session. You can use this to track what happens during a specific session.","type":"string"}},"type":"object"},"metadata":{"properties":{"key":{"description":"The constant that defines the data set.","example":"Color","type":"string"},"value":{"description":"A variable which belongs to the data set.","example":"Green","type":"string"}},"title":"metadata","type":"object","x-client-all-args-constructor":true},"not-found":{"properties":{"name":{"type":"string"},"status":{"type":"integer"},"title":{"type":"string"},"type":{"type":"string"}},"title":"NotFound","type":"object"},"pagination":{"example":{"currentPage":3,"currentPageItems":20,"itemsTotal":123,"links":{"first":{"rel":"first","uri":"/videos/search?currentPage=1&pageSize=20"},"last":{"rel":"last","uri":"/videos/search?currentPage=6&pageSize=20"},"next":{"rel":"next","uri":"/videos/search?currentPage=4&pageSize=20"},"previous":{"rel":"previous","uri":"/videos/search?currentPage=2&pageSize=20"}},"pageSize":20,"pagesTotal":7},"properties":{"currentPage":{"description":"The current page index.","readOnly":true,"type":"integer"},"currentPageItems":{"description":"The number of items on the current page.","readOnly":true,"type":"integer"},"itemsTotal":{"description":"Total number of items that exist.","readOnly":true,"type":"integer"},"links":{"items":{"$ref":"#/components/schemas/pagination_link"},"type":"array"},"pageSize":{"description":"Maximum number of item per page.","readOnly":true,"type":"integer"},"pagesTotal":{"description":"Number of items listed in the current page.","readOnly":true,"type":"integer"}},"required":["links"],"title":"Pagination","type":"object"},"pagination_link":{"properties":{"rel":{"pattern":"^self$","type":"string"},"uri":{"format":"uri","type":"string"}},"title":"PaginationLink","type":"object"},"player":{"allOf":[{"$ref":"#/components/schemas/playerinput"},{"properties":{"assets":{"properties":{"link":{"description":"The path to the file containing your logo.","example":"path/to/my/logo/mylogo.jpg","type":"string"},"logo":{"description":"The name of the file containing the logo you want to use.","example":"mylogo.jpg","type":"string"}},"type":"object"},"createdAt":{"description":"When the player was created, presented in ISO-8601 format.","example":"2025-08-15T13:50:42.275Z","format":"date-time","type":"string"},"linkActive":{"description":"Deprecated","type":"string"},"playerId":{"example":"pl45KFKdlddgk654dspkze","type":"string"},"shapeAspect":{"description":"Deprecated","type":"string"},"shapeBackgroundBottom":{"description":"Deprecated","type":"string"},"shapeBackgroundTop":{"description":"Deprecated","type":"string"},"shapeMargin":{"description":"Deprecated","type":"integer"},"shapeRadius":{"description":"Deprecated","type":"integer"},"updatedAt":{"description":"When the player was last updated, presented in ISO-8601 format.","example":"2025-08-15T13:50:42.275Z","format":"date-time","type":"string"}},"type":"object"}],"title":"Player"},"player-session-event":{"properties":{"at":{"type":"integer"},"emittedAt":{"description":"When an event occurred, presented in ISO-8601 format.","example":"2025-08-15T13:50:42.275Z","format":"date-time","type":"string"},"from":{"type":"integer"},"to":{"type":"integer"},"type":{"description":"Possible values are: ready, play, pause, resume, seek.backward, seek.forward, end","example":"play","type":"string"}},"title":"Player Session Event","type":"object"},"playerCreationPayload":{"allOf":[{"$ref":"#/components/schemas/playerinput"}]},"playerUpdatePayload":{"allOf":[{"$ref":"#/components/schemas/playerinput"}]},"playerinput":{"example":{"assets":{"link":"https://api.video","logo":"https://cdn.api.video/player/pl14Db6oMJRH6SRVoOwORacK/logo.png"},"backgroundBottom":"rgba(94, 95, 89, 1)","backgroundText":"rgba(255, 255, 255, .95)","backgroundTop":"rgba(72, 4, 45, 1)","enableApi":true,"enableControls":true,"forceAutoplay":false,"forceLoop":false,"hideTitle":false,"language":"en","link":"rgba(255, 0, 0, .95)","linkActive":"rgba(255, 0, 0, .75)","linkHover":"rgba(255, 255, 255, .75)","shapeAspect":"flat","shapeBackgroundBottom":"rgba(50, 50, 50, .8)","shapeBackgroundTop":"rgba(50, 50, 50, .7)","shapeMargin":10,"shapeRadius":3,"text":"rgba(255, 255, 255, .95)","trackBackground":"rgba(0, 0, 0, 0)","trackPlayed":"rgba(255, 255, 255, .95)","trackUnplayed":"rgba(255, 255, 255, .1)"},"properties":{"backgroundBottom":{"description":"RGBA color: bottom 50% of background. Default: rgba(0, 0, 0, .7)","type":"string"},"backgroundText":{"description":"RGBA color for title text. Default: rgba(255, 255, 255, 1)","type":"string"},"backgroundTop":{"description":"RGBA color: top 50% of background. Default: rgba(0, 0, 0, .7)","type":"string"},"enableApi":{"default":true,"description":"enable/disable player SDK access. Default: true","type":"boolean"},"enableControls":{"default":true,"description":"enable/disable player controls. Default: true","type":"boolean"},"forceAutoplay":{"default":false,"description":"enable/disable player autoplay. Default: false","type":"boolean"},"forceLoop":{"default":false,"description":"enable/disable looping. Default: false","type":"boolean"},"hideTitle":{"default":false,"description":"enable/disable title. Default: false","type":"boolean"},"link":{"description":"RGBA color for all controls. Default: rgba(255, 255, 255, 1)","type":"string"},"linkHover":{"description":"RGBA color for all controls when hovered. Default: rgba(255, 255, 255, 1)","type":"string"},"text":{"description":"RGBA color for timer text. Default: rgba(255, 255, 255, 1)","type":"string"},"trackBackground":{"description":"RGBA color playback bar: background. Default: rgba(255, 255, 255, .2)","type":"string"},"trackPlayed":{"description":"RGBA color playback bar: played content. Default: rgba(88, 131, 255, .95)","type":"string"},"trackUnplayed":{"description":"RGBA color playback bar: downloaded but unplayed (buffered) content. Default: rgba(255, 255, 255, .35)","type":"string"}},"title":"PlayerInput","type":"object"},"players-list-response":{"properties":{"data":{"items":{"$ref":"#/components/schemas/player"},"type":"array"},"pagination":{"$ref":"#/components/schemas/pagination"}},"title":"Players","type":"object"},"players-upload-logo-payload":{"properties":{"file":{"description":"The name of the file you want to use for your logo.","example":"mylogo.jpg","format":"binary","type":"string"},"link":{"description":"The path to the file you want to upload and use as a logo.","example":"path/to/my/logo/mylogo.jpg","format":"string","type":"string"}},"required":["file","link"],"type":"object"},"quality":{"properties":{"quality":{"description":"The quality of the video you have, in pixels. Choices include 360p, 480p, 720p, 1080p, and 2160p.","enum":["240p","360p","480p","720p","1080p","2160p"],"example":"720p","type":"string"},"status":{"description":"The status of your video. Statuses include waiting - the video is waiting to be encoded. encoding - the video is in the process of being encoded. encoded - the video was successfully encoded. failed - the video failed to be encoded.","enum":["waiting","encoding","encoded","failed"],"type":"string"}},"title":"quality","type":"object"},"raw-statistics-list-live-stream-analytics-response":{"properties":{"data":{"items":{"$ref":"#/components/schemas/live-stream-session"},"type":"array"},"pagination":{"$ref":"#/components/schemas/pagination"}},"title":"LiveStreamSessions","type":"object"},"raw-statistics-list-player-session-events-response":{"properties":{"data":{"items":{"$ref":"#/components/schemas/player-session-event"},"type":"array"},"pagination":{"$ref":"#/components/schemas/pagination"}},"title":"PlayerSessionEvents","type":"object"},"raw-statistics-list-sessions-response":{"properties":{"data":{"items":{"$ref":"#/components/schemas/video-session"},"type":"array"},"pagination":{"$ref":"#/components/schemas/pagination"}},"title":"VideoSessions","type":"object"},"refresh-token-payload":{"example":{"refreshToken":"def502005346d9cc2bd79a7793ab5bdabfefcaabfbb8c253f14733f1262077e1a3f38c4751d6d20f590c3784e531a82adc11f05fc1949aa46d5575aaa99cb84b9334ba66ac773576b5d7a418937ae337de62811d086dd42ad1164b12f87d67be6ffea18f2d50be9b95697b21c4d3c4372849bdb2287259cb80541570e913691a08b2fa33c85885930de15cebea627fc09f0255562ab3d39d87d4ff8fc02b00e252afcd480421dec7de9d1411176bcf669c527762e22294b453bc9ea06e9fa8ba5b873feb2ee14ce0a6a6ddd4b78c580631e210e9b9387265dc2bec9478a66a09dcdce1c40d2f856689e9d81742c9628a0b87b359e0b218ea1f07427eef89f999e47af89792f598e05847bd008fddc32ee63f4a601ffb4cd2ad08977f1c854ec358238322c918f05aa5a41f8a171dee497218408abc8283473f6112aeed7310815416a0fa36c63667e0ed014fa40b8992891bf58bae400d901c01450101c88f4978938ad138adc19cfe5698d60fd82cb27c586f6a8f70f4393c7c9e579df8739d46d249fb76d7"},"properties":{"refreshToken":{"description":"The refresh token is either the first refresh token you received when you authenticated with the auth/api-key endpoint, or it's the refresh token from the last time you used the auth/refresh endpoint. Place this in the body of your request to obtain a new access token (which is valid for an hour) and a new refresh token.\n","type":"string"}},"required":["refreshToken"],"title":"refreshToken","type":"object"},"subtitle":{"properties":{"default":{"default":false,"description":"Whether you will have subtitles or not. True for yes you will have subtitles, false for no you will not have subtitles.","example":false,"type":"boolean"},"src":{"type":"string"},"srclang":{"type":"string"},"uri":{"type":"string"}},"title":"Subtitle","type":"object"},"token-create-payload":{"example":{"ttl":3600},"properties":{"ttl":{"default":0,"description":"Time in seconds that the token will be active. A value of 0 means that the token has no exipration date. The default is to have no expiration.","maximum":2147483647,"minimum":0,"type":"integer"}},"title":"tokenCreationPayload","type":"object"},"token-list-response":{"properties":{"data":{"items":{"$ref":"#/components/schemas/upload-token"},"title":"uploadToken","type":"array"},"pagination":{"$ref":"#/components/schemas/pagination"}},"required":["data","pagination"],"title":"uploadTokens","type":"object"},"token-upload-payload":{"properties":{"file":{"description":"The path to the video you want to upload.","example":"path/to/video/video.mp4","format":"binary","type":"string","x-client-chunk-upload":"true"},"videoId":{"description":"The video id returned by the first call to this endpoint in a large video upload scenario.","type":"string","x-client-copy-from-response":true,"x-client-ignore":true}},"required":["file"],"type":"object"},"upload-token":{"properties":{"createdAt":{"description":"When the token was created, displayed in ISO-8601 format.","example":"2025-08-15T13:50:42.275Z","format":"date-time","type":"string"},"expiresAt":{"description":"When the token expires, displayed in ISO-8601 format.","example":"2025-08-15T13:50:42.275Z","format":"date-time","type":"string"},"token":{"description":"The unique identifier for the token you will use to authenticate an upload.","example":"to1tcmSFHeYY5KzyhOqVKMKb","type":"string"},"ttl":{"description":"Time-to-live - how long the upload token is valid for.","maximum":2147483647,"minimum":0,"type":"integer"}},"title":"UploadToken","type":"object"},"video":{"example":{"actions":["video_delete","video_download","video_update"],"description":"An amazing video explaining the string theory","metadata":[{"key":"Author","value":"John Doe"},{"key":"Format","value":"Tutorial"}],"publishedAt":"2025-08-15T13:50:42.275Z","scheduledAt":"2025-08-15T13:50:42.275Z","tags":["maths","string theory","video"],"title":"Maths video","videoId":"vi4k0jvEUuaTdRAEjQ4Jfrgz"},"properties":{"assets":{"$ref":"#/components/schemas/videoAssets"},"description":{"description":"A description for the video content.\n","example":"An amazing video explaining string theory.","type":"string"},"metadata":{"description":"Metadata you can use to categorise and filter videos. Metadata is a list of dictionaries, where each dictionary represents a key value pair for categorising a video. [Dynamic Metadata](https://api.video/blog/endpoints/dynamic-metadata) allows you to define a key that allows any value pair.\n","example":"[{\"key\":\"Author\", \"value\":\"John Doe\"}, {\"key\":\"Format\", \"value\":\"Tutorial\"}]","items":{"$ref":"#/components/schemas/metadata"},"type":"array"},"mp4Support":{"description":"This lets you know whether mp4 is supported. If enabled, an mp4 URL will be provided in the response for the video.\n","example":true,"type":"boolean"},"panoramic":{"description":"Defines if video is panoramic.\n","example":false,"type":"boolean"},"playerId":{"description":"The id of the player that will be applied on the video.\n","example":"pl45KFKdlddgk654dspkze","type":"string"},"public":{"description":"Defines if the content is publicly reachable or if a unique token is needed for each play session. Default is true. Tutorials on [private videos](https://api.video/blog/endpoints/private-videos).\n","example":false,"type":"boolean"},"publishedAt":{"description":"The date and time the API created the video. Date and time are provided using ISO-8601 UTC format.","example":"2025-08-15T13:50:42.275Z","type":"string"},"source":{"$ref":"#/components/schemas/videoSource"},"tags":{"description":"One array of tags (each tag is a string) in order to categorize a video. Tags may include spaces. \n","example":"\"tags\": [\"maths\", \"string theory\", \"video\"]","items":{},"type":"array"},"title":{"description":"The title of the video content.\n","example":"Maths video","type":"string"},"updatedAt":{"description":"The date and time the video was updated. Date and time are provided using ISO-8601 UTC format.","example":"2025-08-15T13:50:42.275Z","format":"date-time","type":"string"},"videoId":{"description":"The unique identifier of the video object.","example":"vi4k0jvEUuaTdRAEjQ4Prklg","type":"string"}},"title":"video","type":"object"},"video-create-payload":{"example":{"description":"An amazing video explaining string theory.","metadata":[{"key":"Author","value":"John Doe"},{"key":"Format","value":"Tutorial"}],"mp4Support":true,"panoramic":false,"playerId":"pl45KFKdlddgk654dspkze","public":false,"tags":["maths","string theory","video"],"title":"Maths video"},"properties":{"description":{"description":"A brief description of your video.","example":"A video about string theory.","type":"string"},"metadata":{"description":"A list of key value pairs that you use to provide metadata for your video. These pairs can be made dynamic, allowing you to segment your audience. Read more on [dynamic metadata](https://api.video/blog/endpoints/dynamic-metadata).","example":"[{\"key\": \"Author\", \"value\": \"John Doe\"}]","items":{"$ref":"#/components/schemas/metadata"},"type":"array"},"mp4Support":{"default":true,"description":"Enables mp4 version in addition to streamed version.","example":true,"type":"boolean"},"panoramic":{"default":false,"description":"Indicates if your video is a 360/immersive video.","example":false,"type":"boolean"},"playerId":{"description":"The unique identification number for your video player.","example":"pl45KFKdlddgk654dspkze","type":"string"},"public":{"default":true,"description":"Whether your video can be viewed by everyone, or requires authentication to see it. A setting of false will require a unique token for each view. Default is true. Tutorials on [private videos](https://api.video/blog/endpoints/private-videos).","example":true,"type":"boolean"},"publishedAt":{"description":"The API uses ISO-8601 format for time, and includes 3 places for milliseconds.","example":"2025-08-15T13:50:42.275Z","format":"date-time","type":"string"},"source":{"description":"If you add a video already on the web, this is where you enter the url for the video.","example":"https://www.myvideo.url.com/video.mp4","type":"string"},"tags":{"description":"A list of tags you want to use to describe your video.","example":"[\"maths\", \"string theory\", \"video\"]","items":{"type":"string"},"type":"array"},"title":{"description":"The title of your new video.","example":"Maths video","type":"string"}},"required":["title"],"title":"videoCreationPayload","type":"object"},"video-session":{"example":{"client":{"name":"Firefox","type":"browser","version":"67.0"},"device":{"model":"unknown","type":"desktop","vendor":"Dell"},"location":{"city":"Paris","country":"France"},"os":{"name":"Microsoft Windows","shortname":"W10","version":"Windows10"},"referrer":{"medium":"organic","searchTerm":"video encoding hosting and delivery","source":"https://google.com","url":"https://api.video"},"session":{"endedAt":"2025-08-15T13:50:42.275Z","loadedAt":"2025-08-15T13:50:42.275Z","sessionId":"psEmFwGQUAXR2lFHj5nDOpy"}},"properties":{"client":{"$ref":"#/components/schemas/video_session_client"},"device":{"$ref":"#/components/schemas/video_session_device"},"location":{"$ref":"#/components/schemas/video_session_location"},"os":{"$ref":"#/components/schemas/video_session_os"},"referrer":{"$ref":"#/components/schemas/video_session_referrer"},"session":{"$ref":"#/components/schemas/video_session_session"}},"title":"Video Session","type":"object"},"video-thumbnail-pick-payload":{"example":{"timecode":0},"properties":{"timecode":{"description":"Frame in video to be used as a placeholder before the video plays. \nExample: '\"00:01:00.000\" for 1 minute into the video.'\nValid Patterns: \n\"hh:mm:ss.ms\"\n\"hh:mm:ss:frameNumber\"\n\"124\" (integer value is reported as seconds) \nIf selection is out of range, \"00:00:00.00\" will be chosen.","pattern":0,"type":"string"}},"required":["timecode"],"title":"pickThumbnailPayload","type":"object"},"video-thumbnail-upload-payload":{"properties":{"file":{"description":"The image to be added as a thumbnail.","format":"binary","type":"string"}},"required":["file"],"type":"object"},"video-update-payload":{"example":{"description":"An amazing video explaining the string theory","metadata":[{"key":"Author","value":"John Doe"},{"key":"Format","value":"Tutorial"}],"mp4Support":true,"panoramic":false,"playerId":"pl45KFKdlddgk654dspkze","public":false,"tags":["maths","string theory","video"],"title":"String theory"},"properties":{"description":{"description":"A brief description of the video.","example":"A film about good books.","type":"string"},"metadata":{"description":"A list (array) of dictionaries where each dictionary contains a key value pair that describes the video. As with tags, you must send the complete list of metadata you want as whatever you send here will overwrite the existing metadata for the video. [Dynamic Metadata](https://api.video/blog/endpoints/dynamic-metadata) allows you to define a key that allows any value pair.","items":{"$ref":"#/components/schemas/metadata"},"type":"array"},"mp4Support":{"description":"Whether the player supports the mp4 format.","example":true,"type":"boolean"},"panoramic":{"description":"Whether the video is a 360 degree or immersive video.","example":false,"type":"boolean"},"playerId":{"description":"The unique ID for the player you want to associate with your video.","example":"pl4k0jvEUuaTdRAEjQ4Jfrgz","type":"string"},"public":{"description":"Whether the video is publicly available or not. False means it is set to private. Default is true. Tutorials on [private videos](https://api.video/blog/endpoints/private-videos).","example":true,"type":"boolean"},"tags":{"description":"A list of terms or words you want to tag the video with. Make sure the list includes all the tags you want as whatever you send in this list will overwrite the existing list for the video.","example":"[\"maths\", \"string theory\", \"video\"]","items":{"type":"string"},"type":"array"},"title":{"description":"The title you want to use for your video.","type":"string"}},"title":"videoUpdatePayload","type":"object"},"video-upload-payload":{"properties":{"file":{"description":"The path to the video you would like to upload. The path must be local. If you want to use a video from an online source, you must use the \"/videos\" endpoint and add the \"source\" parameter when you create a new video.","example":"@/path/to/video.mp4","format":"binary","type":"string","x-client-chunk-upload":"true"}},"required":["file"],"type":"object"},"videoAssets":{"description":"Collection of details about the video object that you can use to work with the video object.","properties":{"hls":{"description":"This is the manifest URL. For HTTP Live Streaming (HLS), when a HLS video stream is initiated, the first file to download is the manifest. This file has the extension M3U8, and provides the video player with information about the various bitrates available for streaming.","format":"uri","type":"string"},"iframe":{"description":"Code to use video from a third party website","example":"<iframe src=\"//embed.api.video/c188ed58-3403-46a2-b91b-44603d10b2c9?token=831a9bd9-9f50-464c-a369-8e9d914371ae\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"\"></iframe>","type":"string"},"mp4":{"description":"Available only if mp4Support is enabled. Raw mp4 url.","example":"https://cdn.api.video/vod/vi4k0jvEUuaTdRAEjQ4Jfrgz/token/8fd70443-d9f0-45d2-b01c-12c8cfc707c9/mp4/720/source.mp4","format":"uri","type":"string"},"player":{"description":"Raw url of the player.","example":"https://embed.api.video/1b9d6ae8-8f57-4b6d-8552-d636926b4f5f?token=831a9bd9-9f50-464c-a369-8e9d914371ae","format":"uri","type":"string"},"thumbnail":{"description":"Poster of the video.","example":"https://cdn.api.video/stream/831a9bd9-9f50-464c-a369-8e9d914371ae/thumbnail.jpg","format":"uri","type":"string"}},"type":"object"},"videoSource":{"description":"Source information about the video.","properties":{"liveStream":{"$ref":"#/components/schemas/video_source_live_stream"},"type":{"type":"string"},"uri":{"description":"The URL where the video is stored.","example":"/videos/vi4k0jvEUuaTdRAEjQ4Prklg/source","type":"string"}},"type":"object"},"video_session_client":{"description":"What kind of browser the viewer is using for the video session.","properties":{"name":{"description":"The name of the browser used to view the video session.","example":"Firefox","type":"string"},"type":{"description":"The type of client used to view the video session.","example":"browser","type":"string"},"version":{"description":"The version of the browser used to view the video session.","example":"67.0","type":"string"}},"type":"object"},"video_session_device":{"description":"What type of device the user is on when in the video session.","properties":{"model":{"description":"The specific model of the device, if known.","example":"unknown","type":"string"},"type":{"description":"What the type is like desktop, laptop, mobile.","example":"desktop","type":"string"},"vendor":{"description":"If known, what the brand of the device is, like Apple, Dell, etc.","example":"Dell","type":"string"}},"type":"object"},"video_session_location":{"description":"The location of the viewer.","properties":{"city":{"description":"The city of the viewer.","example":"Paris","type":"string"},"country":{"description":"The country of the viewer.","example":"France","type":"string"}},"type":"object"},"video_session_os":{"description":"The operating system the viewer is on.","properties":{"name":{"description":"The name of the operating system.","example":"Microsoft Windows","type":"string"},"shortname":{"description":"The nickname for the operating system, often representing the version.","example":"W10","type":"string"},"version":{"description":"The version of the operating system.","example":"Windows 10","type":"string"}},"type":"object"},"video_session_referrer":{"properties":{"medium":{"description":"How they arrived at the site, for example organic or paid. Organic meaning they found it themselves and paid meaning they followed a link from an advertisement.","example":"organic","type":"string"},"searchTerm":{"description":"The search term they typed to arrive at the video session.","type":"string"},"source":{"description":"The source the referrer came from to the video session. For example if they searched through google to find the stream.","example":"https://google.com","type":"string"},"url":{"description":"The link the viewer used to reach the video session.","example":"https://api.video","type":"string"}},"type":"object"},"video_session_session":{"properties":{"endedAt":{"description":"When the video session ended, presented in ISO-8601 format.","example":"2025-08-15T13:50:42.275Z","format":"date-time","type":"string"},"loadedAt":{"description":"When the video session started, presented in ISO-8601 format.","example":"2025-08-15T13:50:42.275Z","format":"date-time","type":"string"},"sessionId":{"description":"The unique identifier for the session that you can use to track what happens during it.","example":"psEmFwGQUAXR2lFHj5nDOpy","type":"string"}},"type":"object"},"video_source_live_stream":{"description":"This appears if the video is from a Live Record.","properties":{"links":{"items":{"$ref":"#/components/schemas/video_source_live_stream_link"},"type":"array"},"liveStreamId":{"description":"The unique identifier for the live stream.","example":"li400mYKSgQ6xs7taUeSaEKr","type":"string"}},"type":"object"},"video_source_live_stream_link":{"properties":{"rel":{"type":"string"},"uri":{"type":"string"}},"type":"object"},"videos-list-response":{"properties":{"data":{"items":{"$ref":"#/components/schemas/video"},"type":"array"},"pagination":{"$ref":"#/components/schemas/pagination"}},"required":["data","pagination"],"title":"Videos","type":"object"},"videostatus":{"example":{"encoding":{"metadata":{"aspectRatio":"16/9","audioCodec":"aac","bitrate":411.218,"duration":4176,"framerate":24,"height":240,"samplerate":48000,"videoCodec":"h264","width":424},"playable":true,"qualities":[{"quality":"240p","status":"encoded"},{"quality":"360p","status":"encoded"},{"quality":"480p","status":"encoded"},{"quality":"720p","status":"encoded"},{"quality":"1080p","status":"encoding"},{"quality":"2160p","status":"waiting"}]},"ingest":{"filesize":273579401,"receivedBytes":[{"from":0,"to":134217727,"total":273579401},{"from":134217728,"to":268435455,"total":273579401},{"from":268435456,"to":273579400,"total":273579401}],"status":"uploaded"}},"properties":{"encoding":{"$ref":"#/components/schemas/videostatus_encoding"},"ingest":{"$ref":"#/components/schemas/videostatus_ingest"}},"title":"VideoStatus","type":"object"},"videostatus_encoding":{"properties":{"metadata":{"$ref":"#/components/schemas/videostatus_encoding_metadata"},"playable":{"description":"Whether the video is playable or not.","example":true,"type":"boolean"},"qualities":{"description":"Available qualities the video can be viewed in.","items":{"$ref":"#/components/schemas/quality"},"type":"array"}},"type":"object"},"videostatus_encoding_metadata":{"properties":{"aspectRatio":{"type":"string"},"audioCodec":{"description":"The method used to compress and decompress digital audio for your video.","type":"string"},"bitrate":{"description":"The number of bits processed per second.","type":"number"},"duration":{"description":"The length of the video.","type":"integer"},"framerate":{"description":"The frequency with which consecutive images or frames appear on a display. Shown in this API as frames per second (fps).","example":60,"type":"integer"},"height":{"description":"The height of the video in pixels.","type":"integer"},"samplerate":{"description":"How many samples per second a digital audio system uses to record an audio signal. The higher the rate, the higher the frequencies that can be recorded. They are presented in this API using hertz.","example":48000,"type":"integer"},"videoCodec":{"description":"The method used to compress and decompress digital video. API Video supports all codecs in the libavcodec library. ","type":"string"},"width":{"description":"The width of the video in pixels.","type":"integer"}},"type":"object"},"videostatus_ingest":{"description":"Details about the capturing, transferring, and storing of your video for use immediately or in the future.","properties":{"filesize":{"description":"The size of your file in bytes.","example":200000,"type":"integer"},"receivedBytes":{"description":"The total number of bytes received, listed for each chunk of the upload.","items":{"$ref":"#/components/schemas/bytes_range"},"type":"array"},"status":{"description":"There are three possible ingest statuses. missing - you are missing information required to ingest the video. uploading - the video is in the process of being uploaded. uploaded - the video is ready for use.","enum":["missing","uploading","uploaded"],"example":"uploaded","type":"string"}},"type":"object"},"webhook":{"properties":{"createdAt":{"description":"When an webhook was created, presented in ISO-8601 format.","example":"2025-08-15T13:50:42.276Z","format":"date-time","type":"string"},"events":{"description":"A list of events that will trigger the webhook.","example":"[\"video.encoding.quality.completed\"]","items":{"type":"string"},"type":"array"},"url":{"description":"URL of the webhook","example":"http://clientnotificationserver.com/notif?myquery=query","type":"string"},"webhookId":{"description":"Unique identifier of the webhook","example":"webhook_XXXXXXXXXXXXXXX","type":"string"}},"title":"Webhook","type":"object"},"webhooks-create-payload":{"example":{"events":["video.encoding.quality.completed"],"url":"http://clientnotificationserver.com/notif?myquery=query"},"properties":{"events":{"description":"A list of the webhooks that you are subscribing to. There are Currently four webhook options:\n* ```video.encoding.quality.completed```  When a new video is uploaded into your account, it will be encoded into several different HLS sizes/bitrates.  When each version is encoded, your webhook will get a notification.  It will look like ```{ \\\"type\\\": \\\"video.encoding.quality.completed\\\", \\\"emittedAt\\\": \\\"2021-01-29T16:46:25.217+01:00\\\", \\\"videoId\\\": \\\"viXXXXXXXX\\\", \\\"encoding\\\": \\\"hls\\\", \\\"quality\\\": \\\"720p\\\"} ```. This request says that the 720p HLS encoding was completed.\n* ```live-stream.broadcast.started```  When a livestream begins broadcasting, the broadcasting parameter changes from false to true, and this webhook fires.\n* ```live-stream.broadcast.ended```  This event fores when the livestream has finished broadcasting, and the broadcasting parameter flips from false to true.\n* ```video.source.recorded```  This event is similar to ```video.encoding.quality.completed```, but tells you if a livestream has been recorded as a VOD.","example":"video.encoding.quality.completed","items":{"type":"string"},"type":"array"},"url":{"description":"The the url to which HTTP notifications are sent. It could be any http or https URL.","example":"https://example.com/webhooks","type":"string"}},"required":["events","url"],"type":"object"},"webhooks-list-response":{"properties":{"data":{"items":{"$ref":"#/components/schemas/webhook"},"type":"array"},"pagination":{"$ref":"#/components/schemas/pagination"}},"title":"Webhooks","type":"object"}},"securitySchemes":{"bearerAuth":{"scheme":"bearer","type":"http"}}},"x-client-base-paths":{"production":"https://ws.api.video","sandbox":"https://sandbox.api.video"},"x-explorer-enabled":true,"x-proxy-enabled":true,"x-samples-enabled":true,"x-samples-languages":["curl","node","ruby","javascript","python"]}