A video's public watch page, for a link or an iframe.
An HTML page that plays the video by asset ID or pb_ playback ID through the gateway. A private video or a signed playback ID needs the `expires` and `sig` of a signed URL, which the page passes on to the stream and the poster. Any site may frame it (`frame-ancestors *`). Query `autoplay=1`, `muted=1` and `loop=1` change how it starts.
An HTML page that plays the video by asset ID or pb_ playback ID through the gateway. A private video or a signed playback ID needs the expires and sig of a signed URL, which the page passes on to the stream and the poster. Any site may frame it (frame-ancestors *). Query autoplay=1, muted=1 and loop=1 change how it starts.
id*stringAsset ID or pb_ playback ID.
expires?stringFrom a signed URL, for a private video or a signed playback ID.
sig?stringFrom the same signed URL.
The page.
response?stringtext/htmlcurl -X GET 'https://sluby.example.com/watch/string'"string"Per-object sia:// share URLs for direct-from-Sia playback, without credentials. GET
Gated like /v1/stream: a public asset by its id or a public playback ID needs nothing. A private asset or a signed-policy playback ID needs the `expires` and `sig` of its signed master URL, and the shares then never outlive `expires`. Expiries are capped like the authenticated route (six hours, one hour when gated) and rounded to five-minute slots that the server caches, so repeated calls do not mint again. Every map is sent `no-store` (`private, no-store` when gated): minting one is how a direct-from-Sia play reaches the server, and each counts as a play (see `play_count` on an asset), unless `renew` is set. Share URLs already handed out keep working until they expire, whatever happens to the asset meanwhile.
The watch page's player script, hls.js build and stylesheet. GET
Next Page