Upload local demo video
Uploads a locally-recorded MP4 or WebM file and publishes it as a ready demo using the same share, embed, and media URLs as generated demos.
POST
/api/v1/demos/local-upload
Uploads a locally-recorded MP4 or WebM file and publishes it as a ready demo using the same share, embed, and media URLs as generated demos.
Authentication
Bearer Token API Key (cookie: better-auth.session_token)
Query Parameters
project_id
string
required
query
prompt
string
required
query
title
string
optional
query
duration_ms
integer | null
optional
query
format
string
optional
query
Request Body
video/mp4Responses
201
Local demo uploaded
application/jsonid
string
REQUIRED
status
string
REQUIRED
Enum:
readyjobId
string
REQUIRED
shareUrl
string
REQUIRED
embedUrl
string
REQUIRED
videoUrl
string
REQUIRED
400
Validation error
401
Unauthorized
403
Publishable keys cannot upload, or plan does not allow this format
404
Project not found
411
Content-Length required
413
Upload too large
415
Unsupported media type or body is not a valid video file
429
Rate limit or quota exceeded
curl -X POST 'https://littledemo.com/api/v1/demos/local-upload?project_id=string&prompt=string' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'Content-Type: application/json' \ -d '"string"'
const response = await fetch('https://littledemo.com/api/v1/demos/local-upload?project_id=string&prompt=string', { method: 'POST', headers: { "Authorization": "Bearer YOUR_API_TOKEN", "Content-Type": "application/json" }, body: JSON.stringify("string")});const data = await response.json();console.log(data);
import requestsheaders = { 'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.post('https://littledemo.com/api/v1/demos/local-upload?project_id=string&prompt=string', headers=headers, json="string")print(response.json())
201
Response
{ "id": "<string>", "status": "ready", "jobId": "<string>", "shareUrl": "<string>", "embedUrl": "<string>", "videoUrl": "<string>"}
API Playground
Try this endpoint
POST
/api/v1/demos/local-upload