# place.stream.playback.getVideoBlob

> Fetch a content-addressed MUXL playback blob by CID. Serves either a primary fMP4 archive or a per-track init segment — both are CID-addressed and indistinguishable from the endpoint's point of view. HTTP `Range` headers are honored; HLS media playlists generated by getVideoPlaylist reference this endpoint with `EXT-X-BYTERANGE` to serve segments out of the primary blob. The `did` identifies the owning account for egress accounting: the blob itself is content-addressed and owner-agnostic, so the caller carries the attribution.

- Kind: query
- Authority: playback.stream.place
- Lexicon: 1
- Published by [stream.place](https://lexicon.garden/identity/did:plc:rbvrr34edl5ddpuwcubjiost), not the NSID's authority

## Links

- [Documentation](https://lexicon.garden/lexicon/did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.playback.getVideoBlob)
- [Schema JSON](https://lexicon.garden/lexicon/did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.playback.getVideoBlob/schema.json)
- [Analytics](https://lexicon.garden/lexicon/did:plc:rbvrr34edl5ddpuwcubjiost/place.stream.playback.getVideoBlob/analytics)

## Query (`place.stream.playback.getVideoBlob`)

Type: query · GET

### Parameters (query string)

- `cid` (string, required): BLAKE-3 BDASL CID of the requested blob.
- `did` (string · did, required): DID of the account that owns the record this blob is being served for. Used for egress/usage accounting, not for access control — the blob is served purely by CID.
- `sid` (string): Opaque playback session identifier, propagated unmodified from the media playlist that referenced this blob. Logged for view-count correlation; not used for access control.

### Output (video/mp4)


### Errors

- `BlobNotFound`: This node doesn't have the requested CID. The caller should consult place.stream.media.origin records to find a node that does.

## Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Fetch a content-addressed MUXL playback blob by CID. Serves either a primary fMP4 archive or a per-track init segment — both are CID-addressed and indistinguishable from the endpoint's point of view. HTTP `Range` headers are honored; HLS media playlists generated by getVideoPlaylist reference this endpoint with `EXT-X-BYTERANGE` to serve segments out of the primary blob. The `did` identifies the owning account for egress accounting: the blob itself is content-addressed and owner-agnostic, so the caller carries the attribution.",
      "errors": [
        {
          "description": "This node doesn't have the requested CID. The caller should consult place.stream.media.origin records to find a node that does.",
          "name": "BlobNotFound"
        }
      ],
      "output": {
        "encoding": "video/mp4"
      },
      "parameters": {
        "properties": {
          "cid": {
            "description": "BLAKE-3 BDASL CID of the requested blob.",
            "type": "string"
          },
          "did": {
            "description": "DID of the account that owns the record this blob is being served for. Used for egress/usage accounting, not for access control — the blob is served purely by CID.",
            "format": "did",
            "type": "string"
          },
          "sid": {
            "description": "Opaque playback session identifier, propagated unmodified from the media playlist that referenced this blob. Logged for view-count correlation; not used for access control.",
            "type": "string"
          }
        },
        "required": [
          "did",
          "cid"
        ],
        "type": "params"
      },
      "type": "query"
    }
  },
  "id": "place.stream.playback.getVideoBlob",
  "lexicon": 1
}
```
