Behavior hints

Every behaviorHints flag wako reads, where it can appear, and how it changes the user-facing behavior.

behaviorHints is an open-ended object used in three places: at the manifest root, inside meta detail objects, and inside stream entries. wako reads the specific keys documented below; unknown keys are preserved but ignored, so it is safe to add your own flags for future use.

Manifest-level hints

Placed at manifest.behaviorHints.

FieldTypeDescription
adultbooleanMarks the add-on as serving adult content. wako can apply parental restrictions and adjust how the add-on appears in profile-aware contexts.
p2pbooleanSet to true when the add-on returns peer-to-peer streams (info-hashes). Used to display the right hint to the user and to apply policies that depend on the source type.
configurablebooleanWhen true, wako shows a configuration button on the add-on detail page. Tapping it opens your add-on's configuration URL in the device browser. The user then ends up with a configured manifest URL they can re-install.
configurationRequiredbooleanWhen true, wako prevents the add-on from being used until the user has visited the configuration page. Use this for add-ons that need an API key or account binding before they return useful data.

Meta-level hints

Placed at meta.behaviorHints inside a meta detail response.

FieldTypeDescription
defaultVideoIdstringFor items with multiple videos (e.g. a movie shipped as multiple parts), the ID wako should play when the user taps a generic Play button without picking a specific video first.
hasScheduledVideosbooleanIndicates that the videos list contains entries with future release dates. wako displays an upcoming indicator next to those entries rather than treating them as missing.

Stream-level hints

Placed at stream.behaviorHints on each entry in the streams array.

bingeGroup

The single most impactful hint for series add-ons. It identifies a variant — a combination of quality, language, codec, source — across episodes. When the user finishes an episode and the next one auto-plays, wako picks the stream from the new episode's list that shares the same bingeGroup. Without it, every episode sends the user back to manual selection.

JSON
{
  "url": "https://cdn.example.com/breaking-bad-s01e01-1080p.mp4",
  "title": "1080p English",
  "behaviorHints": {
    "bingeGroup": "my-addon|1080p|en"
  }
}
A good bingeGroup is content-independent
Use the same bingeGroup for every episode of every series: it identifies the kind of stream, not the specific episode. Including the episode in the value defeats the purpose — there is nothing for wako to match across episodes.

File information

FieldTypeDescription
videoSizenumberFile size in bytes. Displayed in the stream entry and used for season-pack detection, auto-quality selection, and bandwidth warnings on mobile data.
filenamestringOriginal filename. Used for subtitle hash matching and to identify individual files inside a season pack.
videoHashstringOpenSubtitles-style hash (16 hex chars). When wako passes this hash to subtitle add-ons via /subtitles/.../videoHash=…, they can return frame-accurate matches.

Playback flags

FieldTypeDescription
notWebReadybooleanHints that the stream is not immediately ready for direct playback in a web context (custom headers required, DRM, transcoding). Use sparingly — most HTTPS MP4/MKV/HLS streams do not need this.
countryWhiteliststring[]Restricts playback to viewers in the given ISO-3166 alpha-2 country codes. wako filters streams whose whitelist does not match the user's region.

proxyHeaders

Custom HTTP headers wako applies when fetching the stream URL. Useful for sources behind a CDN that checks Referer, Origin, or a custom auth header.

JSON
{
  "url": "https://protected.example.com/movie.m3u8",
  "title": "1080p",
  "behaviorHints": {
    "proxyHeaders": {
      "request": {
        "Referer": "https://watch.example.com/",
        "User-Agent": "Mozilla/5.0 …"
      },
      "response": {
        "Content-Type": "application/vnd.apple.mpegurl"
      }
    }
  }
}
FieldTypeDescription
proxyHeaders.requestobject<string, string>Headers added to wako's outgoing request for the stream URL.
proxyHeaders.responseobject<string, string>Headers wako forces on the response before handing it to the underlying player. Useful to override a wrong Content-Type.
!
Secrets in proxyHeaders are visible to the user
Anything you put in proxyHeaders is shipped to the device and accessible to a curious user. Do not embed user-specific API keys you do not want the user to extract — derive a per-user token from your add-on's configuration instead.

Summary

FieldTypeDescription
adultbooleanManifest. Adult-only add-on.
p2pbooleanManifest. Returns peer-to-peer streams.
configurablebooleanManifest. Add-on exposes a configuration URL.
configurationRequiredbooleanManifest. Must be configured before use.
defaultVideoIdstringMeta. Default video to play.
hasScheduledVideosbooleanMeta. Some videos are upcoming.
bingeGroupstringStream. Variant identity across episodes.
videoSizenumberStream. File size in bytes.
filenamestringStream. Original filename.
videoHashstringStream. OpenSubtitles-style hash.
notWebReadybooleanStream. Needs special handling.
countryWhiteliststring[]Stream. Region restriction.
proxyHeadersobjectStream. Custom request/response headers.