seedance-video-sdk
v1.0.1
Published
Seedance AI Video Generation SDK - Create professional videos from text and images using ByteDance's advanced AI technology
Maintainers
Readme
seedance-video-sdk
Official Seedance AI Video Generation SDK - Create professional videos from text and images using ByteDance's advanced AI technology.
🚀 Features
- Text-to-Video Generation - Create videos from text prompts
- Image-to-Video Generation - Transform images into dynamic videos
- Multi-Shot Narrative - Generate coherent multi-scene videos
- Professional Quality - Cinematic quality with natural motion
- TypeScript Support - Full type safety and IntelliSense
- React Components - Pre-built UI components for easy integration
- Real-time Progress - Track generation progress with webhooks or polling
- Flexible Configuration - Customize resolution, style, duration, and more
🎬 Live Demo
Try Seedance AI Video Generator: https://seedance.studio
📦 Installation
npm install seedance-video-sdkyarn add seedance-video-sdkpnpm add seedance-video-sdk🔑 Getting Started
1. Get Your API Key
Sign up at Seedance Studio to get your API key.
2. Basic Usage
import { SeedanceClient } from 'seedance-video-sdk';
const client = new SeedanceClient({
apiKey: 'your-api-key'
});
// Generate video from text
const task = await client.generateVideo({
prompt: 'A beautiful sunset over the ocean with gentle waves',
duration: 5,
resolution: '1080p',
style: 'cinematic'
});
// Wait for completion
const completedTask = await client.waitForCompletion(task.taskId, {
onProgress: (task) => console.log(`Progress: ${task.progress}%`)
});
console.log('Video URL:', completedTask.videoUrl);3. Image-to-Video Generation
// From file upload
const fileInput = document.querySelector('input[type="file"]');
const file = fileInput.files[0];
const task = await client.generateVideo({
prompt: 'Make this image come alive with gentle movement',
image: file,
duration: 5,
resolution: '1080p'
});
// From URL
const task2 = await client.generateVideo({
prompt: 'Add dynamic motion to this scene',
image: 'https://example.com/image.jpg',
duration: 5
});⚛️ React Components
VideoPlayer
import { VideoPlayer } from 'seedance-video-sdk/react';
function MyComponent() {
return (
<VideoPlayer
src="https://example.com/video.mp4"
poster="https://example.com/thumbnail.jpg"
controls
autoplay
onLoadedData={() => console.log('Video loaded')}
onError={(error) => console.error('Video error:', error)}
/>
);
}ProgressIndicator
import { ProgressIndicator } from 'seedance-video-sdk/react';
function GenerationStatus({ task }) {
return (
<ProgressIndicator
progress={task.progress}
status={task.status}
estimatedTime={task.estimatedTime}
showPercentage
showStatus
/>
);
}🛠️ Advanced Usage
Custom Configuration
const client = new SeedanceClient({
apiKey: 'your-api-key',
baseURL: 'https://api.seedance.studio/v1', // Custom endpoint
timeout: 60000, // 60 seconds
debug: true // Enable debug logging
});Webhook Integration
// Configure webhook for real-time notifications
await client.configureWebhook({
url: 'https://your-app.com/webhooks/seedance',
events: ['task.completed', 'task.failed'],
secret: 'your-webhook-secret'
});Batch Processing
// Generate multiple videos
const prompts = [
'A cat playing in a garden',
'City skyline at night',
'Ocean waves crashing on rocks'
];
const tasks = await Promise.all(
prompts.map(prompt =>
client.generateVideo({
prompt,
duration: 5,
resolution: '720p'
})
)
);
// Wait for all to complete
const results = await Promise.all(
tasks.map(task => client.waitForCompletion(task.taskId))
);Error Handling
try {
const task = await client.generateVideo({
prompt: 'A beautiful landscape',
duration: 5
});
} catch (error) {
if (error.code === 'QUOTA_EXCEEDED') {
console.log('Please upgrade your plan');
} else if (error.code === 'INVALID_PROMPT') {
console.log('Please provide a valid prompt');
} else {
console.error('Generation failed:', error.message);
}
}📚 API Reference
SeedanceClient
Methods
generateVideo(request)- Generate a video from text/imagegetTask(taskId)- Get task status and detailslistTasks(options)- List user's video taskscancelTask(taskId)- Cancel a pending taskdeleteTask(taskId)- Delete a completed taskuploadImage(image)- Upload image for later usegetQuota()- Get user quota informationwaitForCompletion(taskId, options)- Wait for task completion
Types
interface VideoGenerationRequest {
prompt: string;
image?: File | string | Buffer;
duration?: number; // 1-30 seconds
resolution?: '480p' | '720p' | '1080p' | '4K';
style?: 'realistic' | 'anime' | 'cartoon' | 'cinematic' | 'artistic';
aspectRatio?: '16:9' | '9:16' | '1:1' | '4:3' | '3:4';
frameRate?: number; // 12-60 fps
parameters?: GenerationParameters;
}🎨 Examples
Check out our examples directory for complete implementation examples:
🔗 Links
- Website: https://seedance.studio
- Documentation: https://docs.seedance.studio
- GitHub: https://github.com/saasfly/saasfly
- Support: [email protected]
📄 License
MIT License - see the LICENSE file for details.
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for details.
💬 Support
- 📧 Email: [email protected]
- 💬 Discord: Join our community
- 📖 Documentation: docs.seedance.studio
Made with ❤️ by Seedance Studio
