Sluby
REST APIDelivery

Stream a Sia object, with byte-range support.

An object of a public asset needs nothing. An object of a private asset needs the `expires` and `sig` of a signed url (GET /api/v1/playback/{id}/signed); a manifest served that way has the urls of its children signed with the same expiry. Access follows only the asset tier: a signed playback ID gates its own /v1/stream entry, not these objects. HEAD answers the same headers without a body. A public answer carries `ETag` (the object id) and `Cache-Control: public, no-cache`, and a conditional request (`If-None-Match`) is answered 304 only after access is checked again, so a cache never keeps serving an object after its asset turns private or is deleted; the shipped nginx keeps small public objects for at most 60 seconds between checks. Objects over 8 MB are streamed and never cached.

GET
/v1/objects/{objectId}

An object of a public asset needs nothing. An object of a private asset needs the expires and sig of a signed url (GET /api/v1/playback/{id}/signed); a manifest served that way has the urls of its children signed with the same expiry. Access follows only the asset tier: a signed playback ID gates its own /v1/stream entry, not these objects. HEAD answers the same headers without a body. A public answer carries ETag (the object id) and Cache-Control: public, no-cache, and a conditional request (If-None-Match) is answered 304 only after access is checked again, so a cache never keeps serving an object after its asset turns private or is deleted; the shipped nginx keeps small public objects for at most 60 seconds between checks. Objects over 8 MB are streamed and never cached.

Path Parameters

objectId*string

Sia object ID.

Query Parameters

type?string

Content-type hint.

Value in"manifest""playlist""thumbnail""poster""video""segment""data"
expires?integer

Expiry (unix seconds) of a signed url. Required for a private object.

sig?string

Signature of a signed url. Required for a private object.

Header Parameters

Range?string

Byte range, e.g. bytes=0-1023.

Response Body

Full object.

Example Request
curl -X GET 'https://sluby.example.com/v1/objects/string'
Example Response
Empty