Content-addressable blob storage implementing the Blossom protocol with AI-powered moderation, HLS, and transcript generation
Retrieve a blob by its SHA-256 hash. Supports optional file extension and range requests. Use .jpg extension to get video thumbnails. (BUD-01)
Get HLS master manifest for adaptive streaming. Automatically triggers on-demand transcoding for videos that haven't been transcoded yet. Returns 202 Accepted with Retry-After header while transcoding is in progress.
Alternative HLS manifest URL for player compatibility. Same behavior as the .hls endpoint above.
Direct download of the 720p H.264 transcoded variant (2.5 Mbps). Triggers transcoding on-demand if not yet available.
Direct download of the 480p H.264 transcoded variant (1 Mbps). Triggers transcoding on-demand if not yet available.
Stable WebVTT URL for audio/video transcripts. Automatically triggers on-demand transcription if it has not been generated yet.
Alias for transcript retrieval, compatible with legacy clients.
Create or reuse a subtitle job by hash. Request body: video_sha256, optional lang, optional force.
Get subtitle job status: queued, processing, ready, or failed.
Idempotent lookup for the current subtitle job by media hash.
Check if a blob exists and get its metadata. (BUD-01)
Upload a new blob. Requires Nostr authentication (kind 24242 event). Video uploads automatically generate a thumbnail. (BUD-02)
Pre-validate upload with X-SHA-256, X-Content-Length, X-Content-Type headers. (BUD-06)
List all blobs uploaded by a public key. (BUD-02)
Delete a blob with ref-counting. Sole owner: full delete. Shared: transfers ownership. Non-owner ref: unlinks. Requires Nostr authentication. (BUD-02)
GDPR Right to Erasure. Deletes all blobs and data for the authenticated user. Requires Nostr authentication.
Report problematic content using NIP-56 events (kind 1984). (BUD-09)
Mirror a blob from a remote URL. Requires Nostr authentication. (BUD-04)
Secure uploads using NIP-98 HTTP Auth with Schnorr signatures.
AI-powered moderation with SAFE, REVIEW, AGE_RESTRICTED, and PERMANENT_BAN levels.
Powered by Fastly Compute for low-latency global delivery.
Automatic JPEG thumbnail generation for uploaded videos, accessible at /<sha256>.jpg.
On-demand H.264 transcoding to 720p and 480p with HLS adaptive streaming. Direct quality access via /<sha256>/720p and /<sha256>/480p.
On-demand transcript generation for audio/video blobs, served from immutable URLs at /<sha256>.vtt.
Reliable blob storage backed by Google Cloud Storage.
This server implements the Blossom protocol for decentralized media hosting on Nostr.
Implemented BUDs: BUD-01 (Blob Retrieval), BUD-02 (Upload/List/Delete), BUD-04 (Mirroring), BUD-06 (Upload Pre-validation), BUD-09 (Reporting)
Maximum upload size: 50 GB