Wowza Video REST API migration guide

Migrating your existing Wowza Video integrations to version 2.0 of the REST API allows you to take advantage of new features and performance improvements.

As you move the code base for your streaming workflow from one version of the Wowza Video™ REST API to a later version, use this guide to track what's changed and understand how these changes affect your code. While this guide includes most changes you need to know, see the Wowza Video REST API reference documentation to confirm specific details of endpoint behavior in v2.0.

Migration checklist

  • Review deprecations to determine whether your code uses deprecated endpoints or parameters.
  • Review added and updated functionality to determine whether you want to make use of new parameters or parameter values.
    • Update your code to use JSON Web Token-based authentication, rather than an API key/access key, if you're upgrading from v1.8 or earlier. The following table shows what authentication schemes our API versions support. See Authentication to learn how to get a JWT.
  • For changes to operations and objects, as necessary.
  • To reflect the new base URL for calls to the API. For example:

    Previous version: https://api.video.wowza.com/api/v1.11/live_streams

    New version: https://api.video.wowza.com/api/v2.0/live_streams

What’s changed

This topic covers REST API changes that occurred between the release of v1.11 and v2.0.

Info
  • You can only use v2.0 of the API if you've been migrated to the new UI for WV. We're migrating customers iteratively. See Upgrade to the Wowza Video 2.0 REST API for more information.
  • We created a v1.12 beta when v1.11 moved to current to facilitate the development process. While changes related to real-time streams originated in v1.12, those changes are also present in v2.0. We recommend that you skip v1.12 and go directly to 2.0 when you’re ready to upgrade from v1.11. Because of this, you’ll find the changes that originated in v1.12 included in this migration guide.

Highlights

  • We’ve made significant improvements to the video content management system.

Updated endpoints

While developing v2.0 of the API, we made changes to the following endpoints:

  • Live streams
  • Transcoders
  • Real-time streams

Live streams

  • aspect_ratio_height and aspect_ratio_width parameters for POST /live_streams now have default values and aren’t required inputs. The default values are 720 and 1280, respectively.
  • Added watermark fields to the request and response of POST /live_streams .
  • Added description to the request and response of POST /live_streams .
  • Added state to the response of POST /live_streams/{id} , PATCH /live_streams/{id} , GET /live_streams/{id} , GET /live_streams .
  • Added security to the request and response of POST /live_streams , PATCH /live_streams/{id} , GET /live_streams/{id} .
  • Added player_id to request and response of POST /live_streams , PATCH /live_streams/{id} , GET /live_streams/{id} . If left blank, the live stream uses the default player configuration. If you create other player configurations and want to use one with the live stream, you can just pass that player configuration's ID.
Info

player_id is not returned in the response if it is not explicitly sent, and the default player configuration is used instead.

  • Moved the parameters logo_image , logo_position , video_poster_image , and width outside the player object and, deprecated the player object in POST /live_streams , PATCH /live_streams/{id} , GET /live_streams/{id} .
v1.11v2.0
Copy
Copied
Request
{ 
  "live_stream": { 
    "aspect_ratio_height": 720, 
    "aspect_ratio_width": 1280, 
    "billing_mode": "pay_as_you_go", 
    "broadcast_location": "us_west_oregon", 
    "encoder": "other_webrtc", 
    "name": "My Live Stream", 
    "transcoder_type": "transcoded" 
  } 
} 
 
Response
{ 
  "live_stream": {
    "aspect_ratio_height": 1080, 
    "aspect_ratio_width": 1920,
    "billing_mode": "pay_as_you_go",
    "broadcast_location": "us_west_california",
    "closed_caption_type": "cea",
    "connection_code": "0e15cb",
    "connection_code_expires_at": "2020-11-30T17:16:21.956Z",
    "created_at": "2020-01-29T17:16:21.956Z",
    "delivery_method": "push",
    "delivery_protocols": [
      "rtmp",
      "rtsp",
      "wowz",
      "webrtc"
    ],
.... 
    "width": 640,
    "recording": true,
    "reference_id": "mySystemID_01",
    "save_asset": false,
    "stream_source_id": "5skrfpyf",
    "stream_targets": [
      {
        "id": "klbmg2h8"
      },
      { 
        "id": "bnjtdmmc" 
      } 
    ], 
    "target_delivery_protocol": "hls-https", 
    "transcoder_type": "transcoded", 
    "updated_at": "2020-01-31T06:12:39.956Z", 
    "use_stream_source": true, 
    "vod_stream": true 
  } 
} 
Copy
Copied
Request
{ 
  "live_stream": { 
    "billing_mode": "pay_as_you_go",
    "broadcast_location": "us_west_oregon",
    "description": "This is my first live stream.",
    "player_id ": "205b4e8-b160-43c2-868d-d88698a4e850",
    "encoder": "other_webrtc",
    "name": "My Live Stream",
    "transcoder_type": "transcoded" 
  }
}

Response
{ 
  "live_stream": { 
    "aspect_ratio_height": 720, 
    "aspect_ratio_width": 1280, 
    "billing_mode": "pay_as_you_go",
    "broadcast_location": "us_west_california",
    "closed_caption_type": "cea",
    "connection_code": "0e15cb",
    "connection_code_expires_at": "2020-11-30T17:16:21.956Z",
    "created_at": "2020-01-29T17:16:21.956Z",
    "delivery_method": "push",
    "delivery_protocols": [
      "rtmp",
      "rtsp",
      "wowz",
      "webrtc"
    ],
    "description": "This is my first live stream.",
.....      
    "encoder": "other_rtmp",
    "hosted_page": {
      "enabled": true,
      "description": "My Hosted Page Description",
      "logo_image_url": "https://prod.s3.amazonaws.com/uploads/player/hosted_page_logo_image/23424/5bad28.jpg",
      "sharing_icons": true,
      "title": "My Hosted Page",
      "url": "https://player.video.wowza.com/hosted/e8dk5bf6/player.html"
    }, 
    "id": "wdjfqvsv",
    "name": "My PAYG Transcoded WSE Live Stream",
    "playback_stream_name": "wxyz6789",
    "player_id": "205b4e8-b160-43c2-868d-d88698a4e850",
    "embed_code": null,
    "hls_playback_url": "https://wowzasubdomain.wowza.com/1/TWhoL3BiZnJXMFhmNzZVN3JrZDAwUT09/ZmYxSXRrTERrUlk9/hls/live/playlist.m3u8",
    "logo_image_url": "https://prod.s3.amazonaws.com/uploads/player/logo_image/23424/5bad28.jpg",
    "logo_position": "top-right",
    "video_poster_image_url": "https://prod.s3.amazonaws.com/uploads/player/video_poster_image/23424/5bad28.jpg",
    "width": 640,
    "recording": true,
    "reference_id": "mySystemID_01",
    "save_asset": false,
    "security": {
      "force_ssl_playback": false,
      "geoblock_enabled": true,
      "geoblock_by_location": "allow",
      "geoblock_country_codes": "DE, US",
      "geoblock_ip_override": "deny",
      "geoblock_ip_addresses": "77.12.34.567, 78.23.45.678",
      "token_auth_enabled": false,
      "token_auth_playlist_only": false
    },
    "state": "stopped",
    "stream_source_id": "5skrfpyf",
    "stream_targets": [
      {
        "id": "klbmg2h8"
      },
      {
        "id": "bnjtdmmc"
      }
    ],
    "target_delivery_protocol": "hls-https",
    "transcoder_type": "transcoded",
    "updated_at": "2020-01-31T06:12:39.956Z",
    "use_stream_source": true,
    "vod_stream": true,
    "watermark": true,
    "watermark_height": 80,
    "watermark_image_url": "https://prod.s3.amazonaws.com/uploads/transcoder/watermark_image/12345/4baa13.jpg",
    "watermark_opacity": 75,
    "watermark_position": "top-right",
    "watermark_width": 100
  }
}

Transcoders

Added description to request and response to POST /transcoders, PATCH /transcoders/{id}, and to the response to GET /transcoders/{id}.

v1.11v2.0
Copy
Copied
Request
{
  "transcoder": {
    "billing_mode": "pay_as_you_go",
    "broadcast_location": "us_central_iowa",
    "delivery_method": "pull",
    "name": "My PAYG Transcoder",
    "protocol": "rtmp",
    "transcoder_type": "transcoded"
  }
} 

Response
{
  "transcoder": {
    "application_name": "app-B8P6K226",
    "billing_mode": "pay_as_you_go",
    "broadcast_location": "us_central_iowa",
    "buffer_size": 4000,
    "closed_caption_type": "cea",
    "protocol": "rtmp",
....
   }
} 
Copy
Copied
Request
{
  "transcoder": {
    "billing_mode": "pay_as_you_go",
    "broadcast_location": "us_central_iowa",
    "delivery_method": "pull",
    "description": "My Transcoder Description",
    "name": "My PAYG Transcoder",
    "protocol": "rtmp",
    "transcoder_type": "transcoded"
  }
} 

Response
{
  "transcoder": {
    "application_name": "app-B8P6K226",
    "billing_mode": "pay_as_you_go",
    "broadcast_location": "us_central_iowa",
    "buffer_size": 4000,
    "closed_caption_type": "cea",
.....
    "description": "My Transcoder Description",
.....
  }
} 

Real-time streams

Some of these real-time stream changes originated in the v1.12 beta, but they are carried through to v2.0. We’ve noted if the change originated in v1.12.

  • Added description to request and response to POST /real_time , PATCH /real_time/{id} , and to the response to GET /real_time/{id} .
  • (Originated in v1.12) Added reference_id to the following endpoints:
    • POST /real_time
    • GET /real_time/{id}
    • PATCH /real_time/{id}
  • Added player_id to request and response of POST /real_time , PATCH /real_time/{id} , GET /real_time/{id} .
  • Moved the parameters logo_image , logo_position , video_poster_image , and width outside the player object and deprecated the player object in POST /real_time , PATCH /real_time/{id} , GET /real_time/{id} .
Info

The player object was added in beta 1.12, but, removed to support 2.0 functionality. Most customers will only notice the addition of logo_image, logo_position, video_poster_image, and width in the real_time_stream object since 1.12 is a beta and not meant for use in production environments.

v1.11v2.0
Copy
Copied
Request
{
  "real_time_stream": {
    "name": "MyRealTimeStream",
  }
}

Response
{
  "real_time_stream": {
    "id": "2adffc17",
    "name": "MyRealTimeStream",
    "stream_name": "8d304b93f1684320a54f2798666eeca7",
    "token": "97e52731bc21ef66e4c05a8ee1e28b64bf5f9db728573d94e690277cea9215bc",
    "rtmp_url": "rtmp://rtmp-realtime1.wowza.com:1935/v2/pub/8d304b93f1684320a54f2798666eeca7?token=97e52731bc21ef66e4c05a8ee1e28b64bf5f9db728573d94e690277cea9215bc",
    "enable_secure_viewer": false,
    "state": "active",
    "region": "amsterdam",
    "recording": true,
    "disable_vod_encoder": true,
    ....     
    "created_at": "2021-06-30T18:02:20.000Z",
    "updated_at": "2021-06-30T20:03:16.000Z"
  }
} 
Copy
Copied
Request
{
  "real_time_stream": {
    "name": "MyRealTimeStream",
    "description": "This is my first real-time stream."
  }
}

Response
{
  "real_time_stream": {
    "id": "2adffc17",
    "name": "MyRealTimeStream",
    "stream_name": "8d304b93f1684320a54f2798666eeca7",
    "token": "97e52731bc21ef66e4c05a8ee1e28b64bf5f9db728573d94e690277cea9215bc",
    "rtmp_url": "rtmp://rtmp-realtime1.wowza.com:1935/v2/pub/8d304b93f1684320a54f2798666eeca7?token=97e52731bc21ef66e4c05a8ee1e28b64bf5f9db728573d94e690277cea9215bc",
    "enable_secure_viewer": false,
    "state": "active",
    "region": "amsterdam",
    "reference_id": "mySystemID_01",
    "recording": true,
    "disable_vod_encoder": true,
    "description": "This is my first real-time stream.",
    "enable_player_and_hosted_page": true,
    "player_id": "2205b4e8-b160-43c2-868d-d88698a4e850",
    "embed_code": null,
    "logo_image_url": "https://prod.s3.amazonaws.com/uploads/player/logo_image/23424/5bad28.jpg",
    "logo_position": "top-right",
    "video_poster_image_url": "https://prod.s3.amazonaws.com/uploads/player/video_poster_image/23424/5bad28.jpg",
    "width": 640,
    "hosted_page": {
      "title": "MyRealTimeStreamHostedPage",
      "url": "https://player.video.wowza.com/hosted/e8dk5bf6/player.html",
      "description": "My hosted page description",
      "sharing_icons": true
    },
    "created_at": "2021-06-30T18:02:20.000Z",
    "updated_at": "2021-06-30T20:03:16.000Z"
  }
} 

New endpoints

In v2.0 of the API, we added new endpoints for our new video content management system, /videos. These endpoints will replace /assets, /recordings, and /vod_streams from v1.11 of the API. We also added additional video management functionality with /categories.

Videos - Operations related to uploading videos.

  • POST /videos - Creates a video object in Wowza Video. You can upload a video from your local storage ( DIRECT ) or from an external storage provider ( FETCH ). See Upload a video from local storage or Upload a video from an external storage for more information.
RequestResponse
Copy
Copied
{
  "input": {
    "method": "DIRECT"
  },
  "name": "My video",
  "description": "A new video for my business.",
  "unpublish": true,
  "unpublished_at": "2025-01-01T12:33:22Z",
  "published": true,
  "published_at": "2024-01-01T12:33:22Z",
  "tags": [
    "foo",
    "bar"
  ],
  "category_id": "<The account's default category>",
  "no_ads": true,
  "ad_keywords": "special_ads"
}
Copy
Copied
{
  "id": "2aa3343e-2fb5-42c3-8671-b52c24b7c3e2"
  "name": "My video",
  "description": "A new video for my business.",
  "duration_in_ms": 0,
  "unpublish": true,
  "unpublished_at": "2025-01-01T12:33:22Z",
  "published": true,
  "published_at": "2024-01-01T12:33:22Z",
  "tags": [
    "foo",
    "bar"
  ],
  "category_id": "<The account's default category>",
  "no_ads": true,
  "ad_keywords": "special_ads",
  "user_id": "string",
  "created_at": "2025-01-01T12:33:22Z",
  "updated_at": "2024-01-01T12:33:22Z",
  "state": "FINISHED",
  "encoding_progress": 0,
  "upload_progress": 0,
  "error_message": "string",
  "deactivated": false,
  "images": [
    {
      "type": "thumbnail",
      "url": "https://example.com/image.jpg"
    }
  ],
  "encodings": [
    {
      "audio_bitrate_in_kbps": 2300,
      "audio_channel": 2,
      "audio_codec": "aac",
      "audio_sample_rate": 44100,
      "height": 1080,
      "width": 1920,
      "video_file_url": "https://flowplayer.com/video.mp4",
      "video_container": "mp4",
      "video_codec": "h264",
      "total_bitrate_in_kbps": 1023,
      "created_at": "2019-08-24T14:15:22Z",
      "size_in_bytes": 8325555
    }
  ],
  "drm": {
    "com.widevine.alpha": {
      "license_server": "string",
      "certificate": "string"
    },
    "com.apple.fps.1_0": {
      "license_server": "string",
      "certificate": "string"
    },
    "com.microsoft.playready": {
      "license_server": "string",
      "certificate": "string"
    }
  },
  "shallow_copy": true,
  "shallow_copy_source_id": "string",
  "multiple_audio_tracks": true,
  "audio_only": true,
  "version": 0,
  "thumbnails": {
    "src": "string"
  },
  "animated_previews": [
    {
      "url": "string",
      "type": "string",
      "height": 1080,
      "width": 1920
    }
  ],
  "upload_link": "string"
} 
  • GET /videos - Shows details for all videos available in Wowza Video.
RequestResponse
Copy
Copied
// Using cURL 
curl -H "Authorization: Bearer ${WV_JWT}" \
  -H "Content-Type: application/json" \
  -X "GET" \
  "${WV_HOST}/api/v2.0/videos"
Copy
Copied
{
  "videos": [
    {
      "id": "2aa3343e-2fb5-42c3-8671-b52c24b7c3e2",
      "name": "My video",
      "description": "A new video for my business.",
      "duration_in_ms": 0,
      "unpublish": true,
      "unpublished_at": "2025-01-01T12:33:22Z",
      "published": true,
      "published_at": "2024-01-01T12:33:22Z",
      "tags": [
        "foo",
        "bar"
      ],
      "category_id": "<The account's default category>",
      "no_ads": true,
      "ad_keywords": "special_ads",
      "user_id": "string",
      "created_at": "2024-01-01T12:33:22Z",
      "updated_at": "2024-01-01T12:33:22Z",
      "state": "FINISHED"
    }
  ],
  "pagination": {
    "payload_version": 0,
    "total_records": 100,
    "page": 1,
    "per_page": 10,
    "total_pages": 2,
    "page_first_index": 10,
    "page_last_index": 10
  }
}
  • GET /videos/{id} - Shows details for a single, specified video.
RequestResponse
Copy
Copied
// Using cURL 
curl -H "Authorization: Bearer ${WV_JWT}" \ 
  -H "Content-Type: application/json" \ 
  -X "GET" \ 
  "${WV_HOST}/api/v2.0/videos/2aa3343e-2fb5-42c3-8671-b52c24b7c3e2"
Copy
Copied
{ 
  "id": "2aa3343e-2fb5-42c3-8671-b52c24b7c3e2",
  "name": "My video",
  "description": "A new video for my business.",
  "duration_in_ms": 0,
  "unpublish": true,
  "unpublished_at": "2025-01-01T12:33:22Z",
  "published": true,
  "published_at": "2024-01-01T12:33:22Z",
  "tags": [
    "foo",
    "bar"
  ],
  "category_id": "<The account's default category>",
  "no_ads": true,
  "ad_keywords": "special_ads",
  "user_id": "string",
  "created_at": "2024-01-01T12:33:22Z",
  "updated_at": "2024-01-01T12:33:22Z",
  "state": "FINISHED",
  "encoding_progress": 0,
  "upload_progress": 0,
  "error_message": "string",
  "deactivated": false,
  "images": [
    {
      "type": "thumbnail",
      "url": "https://example.com/image.jpg"
    }
  ],
  "encodings": [
    {
      "audio_bitrate_in_kbps": 2300,
      "audio_channel": 2,
      "audio_codec": "aac",
      "audio_sample_rate": 44100,
      "height": 1080,
      "width": 1920,
      "video_file_url": "https://flowplayer.com/video.mp4",
      "video_container": "mp4",
      "video_codec": "h264",
      "total_bitrate_in_kbps": 1023,
      "created_at": "2019-08-24T14:15:22Z",
      "size_in_bytes": 8325555
    }
  ],
  "drm": {
    "com.widevine.alpha": {
      "license_server": "string",
      "certificate": "string"
    },
    "com.apple.fps.1_0": {
      "license_server": "string",
      "certificate": "string"
    },
    "com.microsoft.playready": {
      "license_server": "string",
      "certificate": "strin
    }
  },
  "shallow_copy": true,
  "shallow_copy_source_id": "string",
  "multiple_audio_tracks": true,
  "audio_only": true,
  "version": 0,
  "thumbnails": {
    "src": "string"
  },
  "animated_previews": [
    {
      "url": "string",
      "type": "string",
      "height": 1080,
      "width": 1920
    }
  ]
}
  • PATCH /videos/{id} - Updates a video’s metadata. To replace the video file, use PUT /videos/{id} .
RequestResponse
Copy
Copied
{
  "name": "My video",
  "description": "A new video for my business.",
  "unpublish": true,
  "unpublished_at": "2025-01-01T12:33:22Z",
  "published": true,
  "published_at": "2024-01-01T12:33:22Z",
  "tags": [
    "foo",
    "bar"
  ],
  "category_id": "<The account's default category>",
  "no_ads": true,
  "ad_keywords": "special_ads"
} 
Copy
Copied
{
  "id": "2aa3343e-2fb5-42c3-8671-b52c24b7c3e2",
  "name": "My video",
  "description": "A new video for my business.",
  "duration_in_ms": 0,
  "unpublish": true,
  "unpublished_at": "2025-01-01T12:33:22Z",
  "published": true,
  "published_at": "2024-01-01T12:33:22Z",
  "tags": [
    "foo",
    "bar"
  ],
  "remote": false,
  "category_id": "<The account's default category>",
  "no_ads": true,
  "ad_keywords": "special_ads",
  "user_id": "string",
  "created_at": "2024-01-01T12:33:22Z",
  "updated_at": "2024-01-01T12:33:22Z",
  "state": "FINISHED",
  "encoding_progress": 0,
  "upload_progress": 0,
  "error_message": "string",
  "deactivated": false,
  "images": [
    {
      "type": "thumbnail",
      "url": "https://example.com/image.jpg"
    }
  ],
  "encodings": [
    {
      "audio_bitrate_in_kbps": 2300,
      "audio_channel": 2,
      "audio_codec": "aac",
      "audio_sample_rate": 44100,
      "height": 1080,
      "width": 1920,
      "video_file_url": "https://flowplayer.com/video.mp4",
      "video_container": "mp4",
      "video_codec": "h264",
      "total_bitrate_in_kbps": 1023,
      "created_at": "2019-08-24T14:15:22Z",
      "size_in_bytes": 8325555
    }
  ],
  "drm": {
    "com.widevine.alpha": {
      "license_server": "string",
      "certificate": "string"
    },
    "com.apple.fps.1_0": {
      "license_server": "string",
      "certificate": "string"
    },
    "com.microsoft.playready": {
      "license_server": "string",
      "certificate": "string"
    }
  },
  "shallow_copy": true,
  "shallow_copy_source_id": "string",
  "multiple_audio_tracks": true,
  "audio_only": true,
  "version": 0,
  "thumbnails": {
    "src": "string"
  },
  "animated_previews": [
    {
      "url": "string",
      "type": "string",
      "height": 1080,
      "width": 1920
    }
  ]
} 
  • PUT /videos/{id} - Uploads a new version of the video. Use this endpoint to replace the original source file and retain all the metadata, including playback URLs and embed codes. This is useful when you correct an issue in the video or have a new version of the content.
RequestResponse
Copy
Copied
{
  "input": {
    "method": "DIRECT"
  }
}
Copy
Copied
{
  "id": "2aa3343e-2fb5-42c3-8671-b52c24b7c3e2",
  "name": "My video",
  "description": "A new video for my business.",
  "duration_in_ms": 0,
  "unpublish": true,
  "unpublished_at": "2025-01-01T12:33:22Z",
  "published": true,
  "published_at": "2024-01-01T12:33:22Z",
  "tags": [
    "foo",
    "bar"
  ],
  "remote": false,
  "category_id": "<The account's default category>",
  "no_ads": true,
  "ad_keywords": "special_ads",
  "user_id": "string",
  "created_at": "2025-01-01T12:33:22Z",
  "updated_at": "2024-01-01T12:33:22Z",
  "state": "FINISHED",
  "encoding_progress": 0,
  "upload_progress": 0,
  "error_message": "string",
  "deactivated": false,
  "images": [
    {
      "type": "thumbnail",
      "url": "https://example.com/image.jpg"
    }
  ],
  "encodings": [
    {
      "audio_bitrate_in_kbps": 2300,
      "audio_channel": 2,
      "audio_codec": "aac",
      "audio_sample_rate": 44100,
      "height": 1080,
      "width": 1920,
      "video_file_url": "https://flowplayer.com/video.mp4",
      "video_container": "mp4",
      "video_codec": "h264",
      "total_bitrate_in_kbps": 1023,
      "created_at": "2019-08-24T14:15:22Z",
      "size_in_bytes": 8325555
    }
  ],
  "drm": {
    "com.widevine.alpha": {
      "license_server": "string",
      "certificate": "string"
    },
    "com.apple.fps.1_0": {
      "license_server": "string",
      "certificate": "string"
    },
    "com.microsoft.playready": {
      "license_server": "string",
      "certificate": "string"
    }
  },
  "shallow_copy": true,
  "shallow_copy_source_id": "string",
  "multiple_audio_tracks": true,
  "audio_only": true,
  "version": 0,
  "thumbnails": {
    "src": "string"
  },
  "animated_previews": [
    {
      "url": "string",
      "type": "string",
      "height": 1080,
      "width": 1920
    }
  ],
  "upload_link": "string"
} 
  • DELETE /videos/{id} - Deletes a video and all its related files.
RequestResponse
Copy
Copied
// Using cURL 
curl -H "Authorization: Bearer ${WV_JWT}" \ 
  -H "Content-Type: application/json" \
  -X "DELETE" \
  "${WV_HOST}/api/v2.0/videos/2aa3343e-2fb5-42c3-8671-b52c24b7c3e2" 
Copy
Copied
{
  "Example Response 1": {
    "meta": {
      "status": 401,
      "code": "ERR-401-NoApiKey",
      "title": "No API Key Error",
      "message": "No API key sent in header.",
      "description": "",
      "links": []
    }
  },
  "Example Response 2": {
    "meta": {
      "status": 401,
      "code": "ERR-401-NoAccessKey",
      "title": "No Access Key Error",
      "message": "No access key sent in header.",
      "description": "",
      "links": []
    }
  },
} 

Categories – Operations related to categorizing videos.

  • POST /categories - Creates a category you can assign to a video for organization.
RequestResponse
Copy
Copied
{
  "name": "My first category",
  "description": "This is a category description",
  "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb"
} 
Copy
Copied
{
  "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
  "name": "My first category",
  "description": "This is a category description.",
  "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb"
} 
  • GET /categories - Shows details for all categories available in Wowza Video.
RequestResponse
Copy
Copied
// Using cURL
curl -H "Authorization: Bearer ${WV_JWT}" \
  -H "Content-Type: application/json" \ 
  -X "GET" \ 
  "${WV_HOST}/api/v2.0/categories"
Copy
Copied
{
  "categories": [
    {
      "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
      "name": "My first category",
      "description": "This is a category description.",
      "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb"
    }
  ],
  "pagination": {
    "payload_version": 0,
    "total_records": 100,
    "page": 1,
    "per_page": 10,
    "total_pages": 2,
    "page_first_index": 10,
    "page_last_index": 10
  }
} 
  • GET /categories/{id} - Shows details for a single, specified category.
RequestResponse
Copy
Copied
// Using cURL
curl -H "Authorization: Bearer ${WV_JWT}" \
  -H "Content-Type: application/json" \
  -X "GET" \
  "${WV_HOST}/api/v2.0/categories/2aa3343e-2fb5-42c3-8671-b52c24b7c3e2"
Copy
Copied
{
  "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
  "name": "My first category",
  "description": "This is a category description.",
  "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb"
} 
  • PATCH /categories/{id} - Updates a category.
RequestResponse
Copy
Copied
{
  "name": "My first category",
  "description": "This is a category description",
  "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb"
} 
Copy
Copied
{
  "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
  "name": "My first category",
  "description": "This is a category description.",
  "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb"
}
  • DELETE /categories/{id} - Deletes a category.
RequestResponse
Copy
Copied
// Using cURL 
curl -H "Authorization: Bearer ${WV_JWT}" \
  -H "Content-Type: application/json" \
  -X "DELETE" \
  "${WV_HOST}/api/v2.0/categories/2aa3343e-2fb5-42c3-8671-b52c24b7c3e2" 
Copy
Copied
{
  "Example Response 1": {
    "meta": {
      "status": 401,
      "code": "ERR-401-NoApiKey",
      "title": "No API Key Error",
      "message": "No API key sent in header.",
      "description": "",
      "links": []
    }
  },
  "Example Response 2": {
    "meta": {
      "status": 401,
      "code": "ERR-401-NoAccessKey",
      "title": "No Access Key Error",
      "message": "No access key sent in header.",
      "description": "",
      "links": []
    }
  },
} 
  • GET /real_time/{id}/state - Returns the current state of a real-time stream.
RequestResponse
Copy
Copied
// Using cURL
curl -H "Authorization: Bearer ${WV_JWT}" \
  -H "Content-Type: application/json" \
  -X "GET" \
  "${WV_HOST}/api/v2.0/real_time/2adffc17/state" 
Copy
Copied
{
  "real_time": {
    "state": "stopped"
  }
} 
  • GET /usage/storage/current - Returns the total amount of recording and VOD stream storage used for the account at the current, or present, time of the request.
RequestResponse
Copy
Copied
// Using cURL
curl -H "Authorization: Bearer ${WV_JWT}" \ 
  -H "Content-Type: application/json" \
  -X "GET" \
  "${WV_HOST}/api/v2.0/usage/storage/current" 
Copy
Copied
{
  "recording_bytes": 1057200777662,
  "vod_stream_bytes": 2142226694010
}

Deprecated endpoints

We've deprecated the /asset, /players, /recordings, /vod_streams, and /transcoder/{id}/recordings endpoints to provide you with a more unified experience with the new /videos endpoints. We’ve deprecated a few other endpoints as well.

In the table below, you can find the new endpoints corresponding to respective deprecated endpoints that provide you with the necessary data.

Deprecated endpoint New endpoint
POST /assets POST /videos
GET /assets GET /videos
GET /assets/{id} GET /videos/{id}
PATCH /assets/{id} PATCH /videos/{id}
DELETE /assets/{id} DELETE /videos/{id}
POST /assets/{id}/live_streams No replacement. Streaming an asset as live will come in a future release.
GET /asset_tags No replacement.
PATCH /assets/{id}/upload_completed No replacement. This occurs automatically through POST /videos.
PATCH /assets/{id}/upload_failed No replacement.
GET /recordings GET /videos
GET /recordings/{id} GET /videos/{id}
DELETE /recordings/{id} DELETE videos/{id}
GET /recordings/{id}/state GET /videos/{id}
GET /vod_streams GET /videos
GET /vod_streams/{id} GET /videos/{id}
PATCH /vod_streams/{id} PATCH /videos/{id}
DELETE /vod_streams/{id} DELETE videos/{id}
GET /transcoders/{id}/recordings No replacement.
GET /players The player operations are deprecated in 2.0. Create and update player configurations in the user interface. Any values you send using the player operations will be ignored.
GET /players/{id} The player operations are deprecated in 2.0. Create and update player configurations in the user interface. Any values you send using the player operations will be ignored.
PATCH /players/{id} The player operations are deprecated in 2.0. Create and update player configurations in the user interface. Any values you send using the player operations will be ignored.
POST /players/{id}/rebuild The player operations are deprecated in 2.0. Create and update player configurations in the user interface. Any values you send using the player operations will be ignored.
GET /players/{id}/state The player operations are deprecated in 2.0. Create and update player configurations in the user interface. Any values you send using the player operations will be ignored.
POST /players/{player_id}/urls The player operations are deprecated in 2.0. Create and update player configurations in the user interface. Any values you send using the player operations will be ignored.
GET /players/{player_id}/urls The player operations are deprecated in 2.0. Create and update player configurations in the user interface. Any values you send using the player operations will be ignored.
GET /players/{player_id}/urls/{id} The player operations are deprecated in 2.0. Create and update player configurations in the user interface. Any values you send using the player operations will be ignored.
PATCH /players/{player_id}/urls/{id} The player operations are deprecated in 2.0. Create and update player configurations in the user interface. Any values you send using the player operations will be ignored.
DELETE /players/{player_id}/urls/{id} The player operations are deprecated in 2.0. Create and update player configurations in the user interface. Any values you send using the player operations will be ignored.
GET /stream_targets/akamai GET /stream_targets/custom. Akamai is only supported as a custom stream target.
GET /stream_targets/akamai/{id} GET /stream_targets/custom/ID. Akamai is only supported as a custom stream target.
PATCH /stream_targets/akamai/{id} PATCH /stream_targets/custom/ID. Akamai is only supported as a custom stream target.
DELETE /stream_targets/akamai/{id} DELETE /stream_targets/custom/{id}. Akamai is only supported as a custom stream target.
GET /usage/vod_streams No replacement.
GET /usage/vod_streams/ID No replacement.
GET /usage/vod_streams/summary No replacement.
GET /usage/storage/peak No replacement.
GET /usage/storage/current No replacement.

Upgrade from older versions

This topic covers REST API changes that occurred between the release of version 1.10 and version 1.11. If you are upgrading from a version earlier than version 1.10, also review all other API changes that apply to your migration: