🎬 3Speak Embed Upload

Decentralized Video Upload & Encoding Service

🚀

Try Demo

Test the upload system with a live demo

🔑

Admin Panel

Manage API keys (password protected)

📚

Documentation

Integration guide and API reference

✨ Features

TUS Resumable Uploads

Robust uploads with pause/resume support for large video files

IPFS Storage

Decentralized storage with automatic pinning to IPFS

Multi-Encoder Support

Load balancing across multiple encoding nodes

Instant Embeds

Get embed URLs immediately, watch videos as they encode

Job Tracking

Monitor encoding progress and status in real-time

Secure API Keys

Application-based access control for developers

📖 Integration Guide

⚠️ API Key Required: Contact the 3Speak team to get your API key before integrating this service.

Quick Start

Upload videos using the TUS protocol with instant embed URL generation:

import * as tus from 'tus-js-client';

const file = document.getElementById('video-input').files[0];

const upload = new tus.Upload(file, {
  endpoint: 'https://embed.3speak.tv/uploads',
  headers: {
    'X-API-Key': 'your-api-key-here'
  },
  metadata: {
    filename: file.name,
    owner: 'username',
    frontend_app: 'your-app-name',
    short: 'false'  // 'true' for 60s clips
  },
  onError: (error) => {
    console.error('Upload failed:', error);
  },
  onProgress: (bytesUploaded, bytesTotal) => {
    const percent = (bytesUploaded / bytesTotal * 100).toFixed(2);
    console.log(\`Progress: \${percent}%\`);
  },
  onSuccess: () => {
    console.log('Upload complete!');
  },
  onAfterResponse: (req, res) => {
    const embedUrl = res.getHeader('X-Embed-URL');
    console.log('Embed URL:', embedUrl);
    // Use this URL immediately in your app!
  }
});

upload.start();

Embed URL Format

Videos are instantly accessible via:

https://play.3speak.tv/embed?v={username}/{videoId}

For Blog Composers (Peakd/Ecency)

Simple HTML5 video tag:

<video src="play.3speak.tv/watch?v={username}/{videoId}" controls></video>

For Websites (Full Iframe)

Full featured player with controls:

<iframe 
  src="https://play.3speak.tv/embed?v={username}/{videoId}" 
  width="100%" 
  height="500" 
  frameborder="0" 
  allowfullscreen>
</iframe>

Video Types

API Endpoints

Update Thumbnail

Set a custom thumbnail for your video after upload:

fetch('https://embed.3speak.tv/video/ABC123XY/thumbnail', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': 'your-api-key'
  },
  body: JSON.stringify({
    thumbnail_url: 'https://your-cdn.com/thumbnail.jpg'
  })
});

Required Metadata

🔐 Getting Access

To integrate this service into your application:

  1. Contact the 3Speak development team
  2. Provide your application name and use case
  3. Receive your unique API key
  4. Start uploading videos!
Contact: Reach out to the 3Speak team at 3speak.tv