📚 API Documentation
1. Health Check
Method: GET
Endpoint: /api/health
Description: Check if server is running
curl http://editin.my.id/api/health
2. Submit Task
Method: POST
Endpoint: /api/process
Content-Type: multipart/form-data
Description: Upload and process videos
curl -X POST http://editin.my.id/api/process \
-F "videos=@video1.mp4" \
-F "videos=@video2.mp4"
3. Process Videos from URLs
Method: POST
Endpoint: /api/process-urls
Content-Type: application/json
Description: Process videos from direct URLs (2-8 videos supported, maintains order)
curl -X POST http://editin.my.id/api/process-urls \
-H "Content-Type: application/json" \
-d '{"videoUrls": [
"https://example.com/video1.mp4",
"https://example.com/video2.mp4",
"https://example.com/video3.mp4"
]}'
5. Check Task Status
Method: GET
Endpoint: /api/tasks/:taskId
Description: Get task status and result
curl http://editin.my.id/api/tasks/TASK_ID
6. List All Tasks
Method: GET
Endpoint: /api/tasks
Description: Get all completed tasks
curl http://editin.my.id/api/tasks
7. System Stats
Method: GET
Endpoint: /api/stats
Description: Get server resource usage
curl http://editin.my.id/api/stats
📋 Polling Example (Every 10 seconds)
function pollTaskStatus(taskId) {
const interval = setInterval(async () => {
const response = await fetch(`http://editin.my.id/api/tasks/${taskId}`);
const task = await response.json();
console.log('Status:', task.status);
if (task.status === 'completed') {
console.log('Video URL:', task.cloudinaryUrl);
clearInterval(interval);
} else if (task.status === 'failed') {
console.error('Error:', task.error);
clearInterval(interval);
}
}, 10000); // Poll every 10 seconds
}