{"templateId":"openapi_docs","versions":[{"version":"current","label":"v2 (current)","link":"/docs/wowza-video-intelligence-framework/api/openapi","default":true,"active":true,"folderId":"02e0422f"},{"version":"v1","label":"v1 (deprecated)","link":"/docs/wowza-video-intelligence-framework/api/v1/openapi","default":false,"active":false,"folderId":"02e0422f"}],"sharedDataIds":{"openAPIDocsStore":"oas-docs/wowza-video-intelligence-framework/api/@current/openapi.yaml","sidebar":"sidebar-sidebars.yaml"},"props":{"definitionId":"docs/wowza-video-intelligence-framework/api/@current/openapi.yaml","dynamicMarkdocComponents":[],"baseSlug":"/docs/wowza-video-intelligence-framework/api/openapi","seo":{"title":"Wowza Video Intelligence Framework API","siteUrl":"https://developer.wowza.com","keywords":"wowza video developer portal, api reference docs","lang":"en-US","image":"https://www.wowza.com/wp-content/uploads/Graphics-Social-Profile-Images-Docs-Resources-1024x512-1.jpg","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"itemId":"","disableAutoScroll":true,"metadata":{"type":"openapi","title":"Wowza Video Intelligence Framework API","description":"This reference documents every endpoint in the Wowza Video Intelligence Framework (VIF)\nREST API, including the parameters each one takes and the request and response bodies it\nworks with. VIF adds real-time AI video analysis, such as object detection and scene\nrecognition, to streams running on Wowza Streaming Engine, and this API is served by the\nVideo Intelligence Controller (VIC), a module that runs alongside the Engine's own REST\ninterface, on port 8087 by default.\n\nAlmost everything you do with this API comes down to one idea: a **config**, the group\nof settings that tells VIF how to analyze a stream (which detector to run, what to do\nwith the results, and so on). You'll run into a config in three places, and each one\nuses it a little differently. A **stream group config** applies a config to every\nstream whose name matches a pattern you choose, such as `cam.*`. An **override** applies\na config to one specific stream, by its exact name instead of a pattern. A running\n**stream** reports the config it's actually using right now, alongside its live\nconnection state and performance. Wherever you see one of these documents in the\nreference below, look for a `config` member: that's where the settings live. The rest\nof the document, the match rule, the stream's identity, its live state, just says how\nthat config gets used, and isn't part of the config itself.\n\nConfigs also build on each other in layers: a stream's final settings come from a\ndefault config, then a matching stream group config, then a per-stream override, then\nany changes made directly to the running stream. Each layer can fill in whatever the\none below it left unset. The `Config` schema, wherever it appears in this reference,\nexplains exactly how that merge works, including the two members, `detector` and\n`listeners`, that don't merge field by field like the rest.\n\nEndpoints are grouped below by what they work with: durable configuration you save to\ndisk, the live streams currently running, one-off video analysis jobs, connectivity\nchecks, and framework-wide status. Each group's description explains what you'll find\nin it.\n\nA few things are worth knowing before you make your first request. Every error this API\nreturns is `application/problem+json` (RFC 7807), so `error.title`, `error.status`, and\n`error.detail` tell you what went wrong; the exceptions are failures the API never gets\nto handle, like a URL the Engine can't route or an Engine-level authentication or\nlicense failure, which come back in the Engine's own `{success, code, message}` format\ninstead. Every document you can edit under `/persist` comes with an `ETag` header;\nsend that value back as `If-Match` when you write, and the API answers `428` if you\nforget it and `412` if it's gone stale, so you never overwrite a change you haven't\nseen yet. PATCH requests are a JSON Merge Patch (RFC 7386), not a full replacement: send\nonly the fields you want to change, and anything you leave out keeps its current value.\nSending a field as `null` removes it instead, letting it inherit from whatever's\nunderneath, except on a running stream, where `null` isn't accepted for `config` or\n`config.active`, because a running instance needs values to actually run with; use\n`POST .../reset` there if you want to discard your changes instead. The verbs you'll use\nare GET, POST, PATCH, and DELETE: POST creates a document (`409` if one already exists\nby that name) or triggers an action, like resetting a stream or resuming a job; PATCH\nedits a document that already exists (`404` if it doesn't); DELETE removes one. This API\nhas no PUT. Wherever an endpoint isn't JSON, uploading or downloading a video file, for\nexample, its description says so explicitly; everything else you send or receive is\nJSON.\n\n<blockquote><strong>Note</strong>: This is version 2 of the VIF REST API. Version 1 is\ndeprecated, and we strongly recommend moving any integration that writes configuration\nto v2. Saving through v1 rewrites your configuration files in an older format: a\nper-stream override saved that way loses what made it an override, and comes back\ninstead as a stream group config matched to that one stream's literal name. Reading\nthrough v1 stays safe at any time; just make sure every integration that <em>writes</em>\nconfiguration moves to v2, and that you don't mix the two on one installation.</blockquote>\n\n## Authentication\n\nEngine REST credentials (`engineBasic`). Requests are additionally subject to the Engine\nlicense entitlement (402 without it) and Engine RBAC (the \"basic\" role is read-only).\n"},"compilationErrors":[],"markdown":{"partials":{},"variables":{"rbac":{"teams":["anonymous"]},"user":{},"remoteAddr":{"hostname":"developer.wowza.com","port":4000,"ipAddress":"216.73.216.45"},"lang":"default_locale","env":{"PUBLIC_REDOCLY_BRANCH_NAME":"main"}}},"pagePropGetterError":{"message":"","name":""}},"slug":"/docs/wowza-video-intelligence-framework/api/openapi","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}