Skip to content
Last updated

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}.

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
  }
}

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}.


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",
....
   }
}

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.


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"
  }
}

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.

  • 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.
{
  "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"
}
{
  "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.
// Using cURL
curl -H "Authorization: Bearer ${WV_JWT}" \
  -H "Content-Type: application/json" \
  -X "GET" \
  "${WV_HOST}/api/v2.0/videos"
{
  "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.

// 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"
{
  "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}.
{
  "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"
}
{
  "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.
{
  "input": {
    "method": "DIRECT"
  }
}
{
  "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.
// 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"
{
  "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": []
    }
  },
}
  • POST /categories - Creates a category you can assign to a video for organization.
{
  "name": "My first category",
  "description": "This is a category description",
  "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb"
}
{
  "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.
// Using cURL
curl -H "Authorization: Bearer ${WV_JWT}" \
  -H "Content-Type: application/json" \
  -X "GET" \
  "${WV_HOST}/api/v2.0/categories"
{
  "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.
// 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"
{
  "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.

{
  "name": "My first category",
  "description": "This is a category description",
  "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb"
}
{
  "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.
// 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"
{
  "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.
// Using cURL
curl -H "Authorization: Bearer ${WV_JWT}" \
  -H "Content-Type: application/json" \
  -X "GET" \
  "${WV_HOST}/api/v2.0/real_time/2adffc17/state"
{
  "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.
// Using cURL
curl -H "Authorization: Bearer ${WV_JWT}" \
  -H "Content-Type: application/json" \
  -X "GET" \
  "${WV_HOST}/api/v2.0/usage/storage/current"
{
  "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 endpointNew endpoint
POST /assetsPOST /videos
GET /assetsGET /videos
GET /assets/{id}GET /videos/{id}
PATCH /assets/{id}PATCH /videos/{id}
DELETE /assets/{id}DELETE /videos/{id}
POST /assets/{id}/live_streamsNo replacement. Streaming an asset as live will come in a future release.
GET /asset_tagsNo replacement.
PATCH /assets/{id}/upload_completedNo replacement. This occurs automatically through POST /videos.
PATCH /assets/{id}/upload_failedNo replacement.
GET /recordingsGET /videos
GET /recordings/{id}GET /videos/{id}
DELETE /recordings/{id}DELETE videos/{id}
GET /recordings/{id}/stateGET /videos/{id}
GET /vod_streamsGET /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}/recordingsGET /videos?origin_id={id} where origin_id is the live stream ID or transcoder ID.
GET /playersThe 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}/rebuildThe 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}/stateThe 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}/urlsThe 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}/urlsThe 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/akamaiGET /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_streamsNo replacement.
GET /usage/vod_streams/IDNo replacement.
GET /usage/vod_streams/summaryNo replacement.
GET /usage/storage/peakNo replacement.
GET /usage/storage/currentNo 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: