Streamlet Platform Documentation
RESTful API Reference
Use Streamlet directly over HTTP when you want full control over upload, processing, captions, storage, and backend workflows.
Authentication
Streamlet API-key routes require both the API key and the account number. These match the middleware already used in the main Streamlet backend.
x-streamlet-api-key and x-streamlet-account-number must be sent on every protected request.
Upload API
POST to /api-key/start-video-processing with multipart form data. Upload the source video, set the title, and optionally enable captions and original-file retention.
Create processing job
JavaScript
const formData = new FormData();
formData.append("video", fileInput.files[0]);
formData.append("videoTitle", "Launch Demo");
formData.append("saveOriginalFile", "true");
formData.append("autoAudioEnhancement", "true");
formData.append("enableCaption", "true");
formData.append("engCaption", "true");
formData.append("hindiCaption", "true");
const response = await fetch("https://api.streamlet.in/api-key/start-video-processing", {
method: "POST",
headers: {
"x-streamlet-api-key": "sk_streamlet_live_xxxxxxxxxxxxxx",
"x-streamlet-account-number": "681b58c58d8c0a55b7c64b2c"
},
body: formData
});
const data = await response.json();
console.log(data);Queued upload response
JSON
{
"success": true,
"videoId": "Launch Demo-1775211037986",
"userId": "681b58c58d8c0a55b7c64b2c",
"status": "queued",
"message": "Video uploaded and queued for processing",
"statusUrl": "/video-processing-status/Launch%20Demo-1775211037986"
}Status API
GET /api-key/video-processing-status/:videoId to fetch the current status for one video. Use the returned videoId from the upload response.
Get processing status
JavaScript
const response = await fetch(
"https://api.streamlet.in/api-key/video-processing-status/your_video_id",
{
headers: {
"x-streamlet-api-key": "sk_streamlet_live_xxxxxxxxxxxxxx",
"x-streamlet-account-number": "681b58c58d8c0a55b7c64b2c"
}
}
);
const data = await response.json();
console.log(data);Completed status response
JSON
{
"success": true,
"videoId": "Launch Demo-1775211037986",
"userId": "681b58c58d8c0a55b7c64b2c",
"videoTitle": "Launch Demo",
"title": "Launch Demo",
"visibility": "Private",
"fileName": "product-demo.mp4",
"fileSizeBytes": 6681892,
"fileMimeType": "video/mp4",
"status": "completed",
"queuedAt": "2026-04-03T10:10:39.888Z",
"keepOriginal": true,
"autoAudioEnhancement": true,
"generateCaptions": true,
"captionLanguages": ["english", "hindi"],
"originalVideoUrl": "https://cdn.streamlet.in/681b58c58d8c0a55b7c64b2c/video/Launch%20Demo-1775211037986/original/product-demo.mp4",
"streamUrl": "https://cdn.streamlet.in/681b58c58d8c0a55b7c64b2c/video/Launch%20Demo-1775211037986/processed/master.m3u8",
"thumbnail": "https://cdn.streamlet.in/681b58c58d8c0a55b7c64b2c/video/Launch%20Demo-1775211037986/processed/thumbnail.jpg",
"audioPlaylistUrl": "https://cdn.streamlet.in/681b58c58d8c0a55b7c64b2c/video/Launch%20Demo-1775211037986/processed/vaudio/playlist.m3u8",
"durationSeconds": 27.814286,
"captions": {
"en": "https://cdn.streamlet.in/681b58c58d8c0a55b7c64b2c/video/Launch%20Demo-1775211037986/processed/captions.en.vtt",
"hi": "https://cdn.streamlet.in/681b58c58d8c0a55b7c64b2c/video/Launch%20Demo-1775211037986/processed/captions.hi.vtt"
},
"chapters": {
"vtt": "https://cdn.streamlet.in/681b58c58d8c0a55b7c64b2c/video/Launch%20Demo-1775211037986/processed/chapters.vtt",
"json": "https://cdn.streamlet.in/681b58c58d8c0a55b7c64b2c/video/Launch%20Demo-1775211037986/processed/chapters.json"
},
"completedAt": "2026-04-03T10:12:14.748Z"
}Health API
GET /health to verify service uptime and queue visibility. This is useful for infrastructure checks before sending upload traffic.
curl "https://api.streamlet.in/health"