Wowza videos API

Operations related to uploading and categorizing videos.

Operations 6

POST /videos Create a video #
GET /videos Fetch all videos #
GET /videos/{id} Fetch a video #
PATCH /videos/{id} Update a video's metadata #
PUT /videos/{id} Re-upload a video #
DELETE /videos/{id} Delete a video #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/wowza-videos-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

wowza-videos-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: v2.0
  title: Wowza Video REST API Reference Documentation Videos API
  license:
    name: Terms of Use
    url: https://www.wowza.com/legal/terms-of-use
  description: "API lifecycle phase: [Current](https://www.wowza.com/docs/wowza-video-rest-api-lifecycle-management#api-lifecycle0)\n\n\n<table>\n<tr style=\"background-color:lightgrey;\"><td>\n<strong>Want to take the API for a test run?</strong>\n\nAll you'll need is a [Wowza Video subscription](https://www.wowza.com/pricing), or [free trial](https://www.wowza.com/free-trial), for the API access token. Then, fork [our collection in Postman](https://www.postman.com/wowzavideo/workspace/wowza-video-rest-api) and you'll be\nmaking calls to our REST API in minutes!\n\nSee [Trial the Wowza Video REST API using Postman](https://www.wowza.com/docs/trial-the-wowza-video-rest-api-using-postman) for more information.\n</td>\n</tr>\n</table>\n\n\nThis reference documentation provides details about the operations, parameters, and request and response schemas for every resource and endpoint in the Wowza Video REST API.\nSamples appear in the right column. Sample requests are presented in cURL (Shell) and JavaScript; some samples also include just the JSON object. Response samples are all JSON. \nExamples in cURL use environment variables so you can easily copy and paste them. To learn more, see [Using cURL](https://wowza.com/docs/how-to-use-the-wowza-video-rest-api#curl).\n\n\nReference documentation is available for every version of the API. Use the **Version** menu at the top of the page to access the reference doc for a different version of the API.\n\n<blockquote><strong>Note</strong>: If you haven't moved over to the new Wowza Video UI experience, you won't be able to access v2.0 of the API. We're migrating customers iteratively. See <a href=\"https://developer.wowza.com/docs/wowza-video/upgrade-to-wowza-video/\">Upgrade to the Wowza Video 2.0 REST API</a> for more information.</blockquote>\n"
servers:
- url: https://api.video.wowza.com/api/v2.0
tags:
- name: videos
  description: Operations related to uploading and categorizing videos.
  x-displayName: Videos
paths:
  /videos:
    post:
      tags:
      - videos
      summary: Create a video
      description: This operation creates a video object in Wowza Video. You can upload a video from your local storage (DIRECT) or from an external storage provider (FETCH).
      operationId: createVideo
      x-codeSamples:
      - lang: Shell
        source: "// Using cURL\ncurl -H \"Authorization: Bearer ${WV_JWT}\" \\\n  \n  -H \"Content-Type: application/json\" \\\n  -X \"POST\" \\\n  \"${WV_HOST}/api/v2.0/videos\" \\\n  -d $'{\n  \"name\": \"My New Video\",\n  \"description\": \"A new video for my business.\",\n  \"unpublish\": true,\n  \"unpublished_at\": \"2025-01-01T12:33:22Z\",\n  \"published\": true,\n  \"published_at\": \"2024-01-01T12:33:22Z\",\n  \"tags\": [\n    \"foo\",\n    \"bar\"\n  ],\n  \"category_id\": \"<The default category>\",\n  \"no_ads\": true,\n  \"ad_keywords\": \"special_ads\",\n  \"input\": {\n    \"method\": \"REMOTE\",\n    \"remote_urls\": \"https://example.com/video.mp4\",\n    \"duration_in_ms\": 0\n  }\n}'"
      - lang: JavaScript
        source: "// Using Node.js\nconst https = require('https');\nconst crypto = require('crypto');\nvar hostname = 'api.video.wowza.com'\nvar path = '/api/v2.0/videos';\n//For security, never reveal API token in client-side code\nvar wvJWT = 'Bearer [your JWT]';\n\nconst options = {\n  hostname: hostname,\n  path: path,\n  method: 'POST',\n  headers: {\n    'Authorization': wvJWT,\n    'Content-Type': 'application/json'\n  }\n};\nconst req = https.request(options, function(res) {\n  var body = '';\n  res.on('data', function(data) {\n    body += data;\n  });\n  res.on('end', function() {\n    console.log(JSON.parse(body));\n  });\n}).on('error', function(e) {\n  console.log(e.message);\n});\nreq.write(JSON.stringify({\n  \"name\": \"My New Video\",\n  \"description\": \"A new video for my business.\",\n  \"unpublish\": true,\n  \"unpublished_at\": \"2025-01-01T12:33:22Z\",\n  \"published\": true,\n  \"published_at\": \"2024-01-01T12:33:22Z\",\n  \"tags\": [\n    \"foo\",\n    \"bar\"\n  ]\n  \"category_id\": \"<The default category>\",\n  \"no_ads\": true,\n  \"ad_keywords\": \"special_ads\",\n  \"input\": {\n    \"method\": \"REMOTE\",\n    \"remote_urls\": \"https://example.com/video.mp4\",\n    \"duration_in_ms\": 0\n  }\n}));\nreq.end();\n"
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateVideoRequestModel'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateVideoResponseModel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error422'
    get:
      tags:
      - videos
      summary: Fetch all videos
      description: This operation shows details for all videos available in Wowza Video.
      operationId: listVideos
      x-codeSamples:
      - lang: Shell
        source: "// Using cURL\ncurl -H \"Authorization: Bearer ${WV_JWT}\" \\\n  \n  -H \"Content-Type: application/json\" \\\n  -X \"GET\" \\\n  \"${WV_HOST}/api/v2.0/videos\""
      - lang: JavaScript
        source: "// Using Node.js\nconst https = require('https');\nconst crypto = require('crypto');\nvar hostname = 'api.video.wowza.com'\nvar path = '/api/v2.0/videos';\n//For security, never reveal API token in client-side code\nvar wvJWT = 'Bearer [your JWT]';\n\nconst options = {\n  hostname: hostname,\n  path: path,\n  headers: {\n    'Authorization': wvJWT,\n    'Content-Type': 'application/json'\n  }\n};\nhttps.get(options, function(res) {\n  var body = '';\n  res.on('data', function(data){\n    body += data;\n  });\n  res.on('end', function() {\n    console.log(JSON.parse(body));\n  });\n}).on('error', function(e) {\n  console.log(e.message);\n});\n"
      parameters:
      - name: page
        in: query
        description: Returns a paginated view of results from the HTTP request. Specify a positive integer to indicate which page of the results should be displayed. The default is **1**.
        schema:
          type: integer
          format: int32
          default: 1
      - name: per_page
        in: query
        description: For use with the page parameter. Indicates how many records should be included in a page of results. A valid value is any positive integer. The default and maximum value is **1000**.
        schema:
          type: integer
          format: int32
          default: 20
      - name: created_at
        in: query
        description: 'Filter the response based on an asset''s timespan. The filter can be specified in following formats:


          | Spec | Description |

          |-----|-------|

          | `YYYY-MM-DD''T''HH:mm:ss`  | Returns all assets with created_at after the specified date |

          '
        schema:
          type: string
        example: 2024-01-01T00:00:00+0000,2024-02-01T00:00:00+0000
      - name: updated_at
        in: query
        description: 'Filter the response based on an asset''s timespan. The filter can be specified in following formats:


          | Spec | Description |

          |-----|-------|

          | `YYYY-MM-DD''T''HH:mm:ss`  | Returns all assets with updated_at after the specified date |

          '
        schema:
          type: string
        example: 2024-01-01T00:00:00+0000,2024-02-01T00:00:00+0000
      - name: published_at
        in: query
        description: 'Filter the response based on an asset''s timespan. The filter can be specified in following formats:


          | Spec | Description |

          |-----|-------|

          | `YYYY-MM-DD''T''HH:mm:ss`  | Returns all assets with published_at after the specified date |

          '
        schema:
          type: string
        example: 2024-01-01T00:00:00+0000,2024-02-01T00:00:00+0000
      - name: state
        in: query
        description: 'The current state of the video. The state reflects the current status of the video files for the video asset. Possible states listed below:



          | State | Description |

          |-----------|-------|

          | UPLOADING  | The source file is currently being uploaded or waiting to be downloaded by our API. |

          | WAITING_FOR_ENCODER | The source file was successfully downloaded by the platform and is in queue to be encoded. |

          | PROCESSING  | Source file for the asset is encoding. The current encoding progress can be found on `encoding_progress` property. |

          | FINISHED | The encoding is done and the encoded files can be fetched. In this state it''s possible to embed the video. |

          | ERROR  | If the platform, for some reason, could not download the source file or failed during the encoding process. `error_messsage` property can give more information about why it errored.  |

          | DELETED  | The video files have been deleted. Usually the video asset have been deleted when this state is reached and because of that it''s very uncommon to see assets with this state. |

          '
        example: FINISHED
        schema:
          type: string
      - name: query
        in: query
        description: 'Search multiple text fields in a search that is case insensitive and does not require full matches. URL encode the value of the `query` to ensure that it can be processed. There are free URL encoders online.


          It searches `name`, `description`, `tags` searches all your custom fields for matching terms.

          You can search specific fields by specifying them after a colon (`:`); if you have multiple search terms you can use `pipe` (`|`) to separate the search terms.


          Some examples:


          | Query | Description |

          | ----- | ----------- |

          | `query=foo` | Searches all fields for `foo`. |

          '
        schema:
          type: string
        example: foo:name,custom_fields
      - name: sort_column
        in: query
        schema:
          type: string
          enum:
          - created_at
          - name
          - published_at
          - duration
      - name: sort_direction
        in: query
        schema:
          type: string
          enum:
          - desc
          - asc
      - name: origin_id
        in: query
        description: 'The unique alphanumeric string that identifies the live stream or the real-time stream from which the video originated.


          Returns all the videos associated with the same ID.'
        schema:
          type: string
          example: edfg8k34
      - name: categories
        in: query
        description: 'Filters videos by specific categories. Provide one or more category ID(s) to retrieve only the videos that belong to those categories.

          To enter multiple category IDs, enter the IDs as a comma-separated list. You can specify up to four category IDs.


          **Note:** To get the ID of a category, call the GET /categories endpoint and choose the category ID you need.'
        schema:
          type: string
          example: cb65a918-ad7d-406a-80d8-09c9c8d0dbb
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VideoList'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
  /videos/{id}:
    get:
      tags:
      - videos
      summary: Fetch a video
      description: This operation shows details for a single, specified video.
      operationId: getSingleVideo
      x-codeSamples:
      - lang: Shell
        source: "// Using cURL\ncurl -H \"Authorization: Bearer ${WV_JWT}\" \\\n  \n  -H \"Content-Type: application/json\" \\\n  -X \"GET\" \\\n  \"${WV_HOST}/api/v2.0/videos/2aa3343e-2fb5-42c3-8671-b52c24b7c3e2\""
      - lang: JavaScript
        source: "// Using Node.js\nconst https = require('https');\nconst crypto = require('crypto');\nvar hostname = 'api.video.wowza.com'\nvar path = '/api/v2.0/videos/2aa3343e-2fb5-42c3-8671-b52c24b7c3e2';\n//For security, never reveal API token in client-side code\nvar wvJWT = 'Bearer [your JWT]';\n\nconst options = {\n  hostname: hostname,\n  path: path,\n  headers: {\n    'Authorization': wvJWT,\n    'Content-Type': 'application/json'\n  }\n};\nhttps.get(options, function(res) {\n  var body = '';\n  res.on('data', function(data){\n    body += data;\n  });\n  res.on('end', function() {\n    console.log(JSON.parse(body));\n  });\n}).on('error', function(e) {\n  console.log(e.message);\n});\n"
      parameters:
      - name: id
        in: path
        description: Unique identifier for the video.
        required: true
        schema:
          type: string
          example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VideoResponseModel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '410':
          description: Gone
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error410'
    patch:
      tags:
      - videos
      summary: Update a video's metadata
      description: This operation updates a video's metadata. To replace the video file, use the `PUT /video/ID`.
      operationId: patchVideo
      x-codeSamples:
      - lang: Shell
        source: "// Using cURL\ncurl -H \"Authorization: Bearer ${WV_JWT}\" \\\n  \n  -H \"Content-Type: application/json\" \\\n  -X \"PATCH\" \\\n  \"${WV_HOST}/api/v2.0/videos/2aa3343e-2fb5-42c3-8671-b52c24b7c3e2\" \\\n  -d $'{\n  \"name\": \"My video\",\n  \"description\": \"A new video for my business.\",\n  \"unpublish\": true,\n  \"unpublished_at\": \"2025-01-01T12:33:22Z\",\n  \"published\": true,\n  \"published_at\": \"2024-01-01T12:33:22Z\",\n  \"tags\": [\n    \"foo\",\n    \"bar\"\n  ],\n  \"category_id\": \"<The default category>\",\n  \"no_ads\": true,\n  \"ad_keywords\": \"special_ads\"\n}'"
      - lang: JavaScript
        source: "// Using Node.js\nconst https = require('https');\nconst crypto = require('crypto');\nvar hostname = 'api.video.wowza.com'\nvar path = '/api/v2.0/videos/2aa3343e-2fb5-42c3-8671-b52c24b7c3e2';\n//For security, never reveal API token in client-side code\nvar wvJWT = 'Bearer [your JWT]';\n\nconst options = {\n  hostname: hostname,\n  path: path,\n  method: 'PATCH',\n  headers: {\n    'Authorization': wvJWT,\n    'Content-Type': 'application/json'\n  }\n};\nconst req = https.request(options, function(res) {\n  var body = '';\n  res.on('data', function(data) {\n    body += data;\n  });\n  res.on('end', function() {\n    console.log(JSON.parse(body));\n  });\n}).on('error', function(e) {\n  console.log(e.message);\n});\nreq.write(JSON.stringify({\n  \"name\": \"My video\",\n  \"description\": \"A new video for my business.\",\n  \"unpublish\": true,\n  \"unpublished_at\": \"2025-01-01T12:33:22Z\",\n  \"published\": true,\n  \"published_at\": \"2024-01-01T12:33:22Z\",\n  \"tags\": [\n    \"foo\",\n    \"bar\"\n  ],\n  \"category_id\": \"<The account's default category>\",\n  \"no_ads\": true,\n  \"ad_keywords\": \"special_ads\"\n}));\nreq.end();\n"
      parameters:
      - name: id
        in: path
        description: Unique identifier for the video.
        required: true
        schema:
          type: string
          example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchVideoRequestModel'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VideoResponseModel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '410':
          description: Gone
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error410'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error422'
    put:
      tags:
      - videos
      summary: Re-upload a video
      description: This operation initiates a re-upload of a video.
      operationId: reuploadVideo
      x-codeSamples:
      - lang: Shell
        source: "// Using cURL\ncurl -H \"Authorization: Bearer ${WV_JWT}\" \\\n  \n  -H \"Content-Type: application/json\" \\\n  -X \"PUT\" \\\n  \"${WV_HOST}/api/v2.0/videos/2aa3343e-2fb5-42c3-8671-b52c24b7c3e2\" \\\n  -d $'{\n  \"input\": {\n    \"method\": \"REMOTE\",\n    \"remote_urls\": \"https://example.com/video.mp4\",\n    \"duration_in_ms\": 0\n  }\n}'"
      - lang: JavaScript
        source: "// Using Node.js\nconst https = require('https');\nconst crypto = require('crypto');\nvar hostname = 'api.video.wowza.com'\nvar path = '/api/v2.0/videos/2aa3343e-2fb5-42c3-8671-b52c24b7c3e2';\n//For security, never reveal API token in client-side code\nvar wvJWT = 'Bearer [your JWT]';\n\nconst options = {\n  hostname: hostname,\n  path: path,\n  method: 'PUT',\n  headers: {\n    'Authorization': wvJWT,\n    'Content-Type': 'application/json'\n  }\n};\nconst req = https.request(options, function(res) {\n  var body = '';\n  res.on('data', function(data) {\n    body += data;\n  });\n  res.on('end', function() {\n    console.log(JSON.parse(body));\n  });\n}).on('error', function(e) {\n  console.log(e.message);\n});\nreq.write(JSON.stringify({\n  \"input\": {\n    \"method\": \"REMOTE\",\n    \"remote_urls\": \"https://example.com/video.mp4\",\n    \"duration_in_ms\": 0\n  }\n}));\nreq.end();\n"
      parameters:
      - name: id
        in: path
        description: Unique identifier for the video.
        required: true
        schema:
          type: string
          example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReuploadVideoRequestModel'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateVideoResponseModel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '410':
          description: Gone
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error410'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error422'
    delete:
      tags:
      - videos
      summary: Delete a video
      description: This operation deletes a video and all its related files.
      operationId: deleteVideo
      x-codeSamples:
      - lang: Shell
        source: "// Using cURL\ncurl -H \"Authorization: Bearer ${WV_JWT}\" \\\n  \n  -H \"Content-Type: application/json\" \\\n  -X \"DELETE\" \\\n  \"${WV_HOST}/api/v2.0/videos/2aa3343e-2fb5-42c3-8671-b52c24b7c3e2\"\n"
      - lang: JavaScript
        source: "// Using Node.js\nconst https = require('https');\nconst crypto = require('crypto');\nvar hostname = 'api.video.wowza.com'\nvar path = '/api/v2.0/videos/2aa3343e-2fb5-42c3-8671-b52c24b7c3e2';\n//For security, never reveal API token in client-side code\nvar wvJWT = 'Bearer [your JWT]';\n\nconst options = {\n  hostname: hostname,\n  path: path,\n  method: 'DELETE',\n  headers: {\n    'Authorization': wvJWT,\n    'Content-Type': 'application/json'\n  }\n};\nhttps.get(options, function(res) {\n  // no data being returned, just: 204 NO CONTENT\n  console.log(res.statusCode);\n}).on('error', function(e) {\n  console.log(e.message);\n});\n"
      parameters:
      - name: id
        in: path
        description: Unique identifier for the video
        required: true
        schema:
          type: string
          example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '410':
          description: Gone
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error410'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error422'
components:
  schemas:
    DRMConfigModel:
      type: object
      properties:
        com.widevine.alpha:
          $ref: '#/components/schemas/DRMProviderConfigModel'
        com.apple.fps.1_0:
          $ref: '#/components/schemas/DRMProviderConfigModel'
        com.microsoft.playready:
          $ref: '#/components/schemas/DRMProviderConfigModel'
      description: Contains all DRM configurations for one video.
    Error403:
      type: object
      description: ''
      required:
      - meta
      properties:
        meta:
          type: object
          title: meta
          description: ''
          properties:
            status:
              type: integer
              description: ''
              example: ''
              format: int32
            code:
              type: string
              description: ''
              example: ''
            title:
              type: string
              description: ''
              example: ''
            message:
              type: string
              description: ''
              example: ''
            description:
              type: string
              description: ''
              example: ''
            links:
              type: array
              description: ''
              example: ''
              items: {}
      example:
        Example Response 1:
          meta:
            status: 403
            code: ERR-403-RecordUnaccessible
            title: Record Unaccessible Error
            message: The requested resource isn't accessible.
            description: ''
            links: []
    AnimatedPreviewModel:
      type: object
      properties:
        url:
          type: string
        type:
          type: string
        height:
          type: integer
          description: Height of the animated preview in pixels.
          format: int32
          example: 1080
        width:
          type: integer
          description: Width of the animated preview in pixels.
          format: int32
          example: 1920
      description: The animated previews for the video.
    Pagination:
      type: object
      properties:
        payload_version:
          type: number
          description: The pagination object version.
          format: double
        total_records:
          type: integer
          description: The total number of records.
          format: int32
          example: 100
        page:
          type: integer
          description: The page number, starting at 1.
          format: int32
          example: 1
          default: 1
        per_page:
          type: integer
          description: The number of records per page.
          format: int32
          example: 10
          default: 20
        total_pages:
          type: integer
          description: The total number of pages.
          format: int32
          example: 2
        page_first_index:
          type: integer
          description: The index of the first record in the response.
          format: int32
          example: 10
        page_last_index:
          type: integer
          description: The index of the last record in the response.
          format: int32
          example: 10
    DRMProviderConfigModel:
      type: object
      properties:
        license_server:
          type: string
          description: URL to the license server that can validate the license.
        certificate:
          type: string
          description: 'Note: This field is only needed for Fairplay DRM. URL to the Fairplay certificate. '
      description: Contains configuration for one DRM provider.
    EncodingModel:
      type: object
      properties:
        audio_bitrate_in_kbps:
          type: integer
          description: Audio bitrate in kb/s.
          format: int32
          example: 2300
        audio_channel:
          type: integer
          description: Number of audio channels.
          format: int32
          example: 2
        audio_codec:
          type: string
          description: Audio codec used in the file.
          example: aac
        audio_sample_rate:
          type: integer
          description: Audio sample rate for this file. Refers to the number of samples of audio taken per second, measured in hertz (Hz). It determines the audio's frequency range and quality, where a higher sample rate captures more detail.
          format: int32
          example: 44100
        height:
          type: integer
          description: Height of the video in pixels.
          format: int32
          example: 1080
        width:
          type: integer
          description: Width of the video in pixels.
          format: int32
          example: 1920
        video_file_url:
          type: string
          description: URL to the video file. We accept HTTP and HTTPS addresses.
          example: https://flowplayer.com/video.mp4
        video_container:
          type: string
          description: Video container type used for this video file.
          example: mp4
        video_codec:
          type: string
          description: Video codec used in this video file.
          example: h264
        total_bitrate_in_kbps:
          type: integer
          description: Total bitrate, video+audio, for the file in kb/s.
          format: int32
          example: 1023
        created_at:
          type: string
          description: Creation timestamp of the file.
          format: date-time
        size_in_bytes:
          type: integer
          description: Total file size including both audio and video in bytes. For segmented files, such as DASH and HLS, this is the complete size covering all segments and renditions.
          format: int64
          example: 8325555
      description: Array containing all available Video files and their metadata
    VideoResponseModel:
      type: object
      properties:
        video:
          type: object
          title: video
          description: ''
          properties:
            id:
              type: string
              description: The unique identifier for the video.
              example: 2aa3343e-2fb5-42c3-8671-b52c24b7c3e2
            name:
              type: string
              description: The video name. Can be displayed in the player. If not specified, it will default to the input file's name.
              example: My video
            description:
              type: string
              description: The video description. Can be displayed in the player.
              example: A new video for my business.
            duration_in_ms:
              type: integer
              description: Duration of the video in milliseconds.
              format: int64
            unpublish:
              type: boolean
              description: If `true`, the `unpublish_date` is respected and the video will not be available after `unpublish_date`. If `false`, the video will not be unpublished.
              default: true
            unpublished_at:
              type: string
              description: Date and time, in ISO-8601 format, when video no longer is available for publishing. After this date the video is not visible in the player if using ovp-plugin to request the video.
              format: date-time
              example: '2025-01-01T12:33:22Z'
            published:
              type: boolean
              description: This field, together with `publish_date` and `unpublish_date`, determines if this video will be visible in public listings such as MRSS-feeds, endscreens, and playlists. If `true` and `publish_date` and `unpublish_date` allows, the video will be visible.
            published_at:
              type: string
              description: Date and time, in ISO-8601 format, when video is available for publishing. Before this date the video is not visible in the player if using `ovp-plugin` to request the video.
              format: date-time
              example: '2024-01-01T12:33:22Z'
            tags:
              type: array
              description: An array of tags.
              example:
              - foo
              - bar
              items:
                type: string
                description: An array of tags.
                example:
                - foo
                - bar
            category_id:
              type: string
              description: The unique identifier for the category that the video belongs to.
              default: <The account's default category>
            ad_insertion_points:
              type: array
              description: 'A list of ad insertion points specified for a video. Ad insertion points are pre-defined locations in a video where advertisements are placed during playback. Ads can be inserted at pre-roll (at the beginning of the video), mid-roll (during the video), or post-roll (at the end of the video) position(s).





                **Note**: Ad insertion points are only applicable for <a href="https://www.wowza.com/docs/get-started-with-advertising-in-wowza-video#client-side-ad-insertion-csai-%C2%A00">client-side ad insertion</a>. If you create mid-roll ad insertion points for a video, for example, they overwrite any mid-roll ad positions created using the <a href="https://www.wowza.com/docs/create-a-video-ad-serving-template-vast-ad-schedule-in-wowza-video">Video Ad Serving Template ad schedule</a> form. This is because the ad insertion points created using the Wowza Video 2.0 API are time-specific and more accurate than the percentages chosen in the Video Ad Serving Template ad schedule page.'
              items:
                type: object
                description: ''
                properties:
                

# --- truncated at 32 KB (85 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/wowza/refs/heads/main/openapi/wowza-videos-api-openapi.yml