Official Seedance AI Video Generation SDK - Create professional videos from text and images using ByteDance's advanced AI technology.
- 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
Try Seedance AI Video Generator: https://seedance.studio
npm install seedance-video-sdk
yarn add seedance-video-sdk
pnpm add seedance-video-sdk
Sign up at Seedance Studio to get your API key.
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);
// 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
});
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)}
/>
);
}
import { ProgressIndicator } from 'seedance-video-sdk/react';
function GenerationStatus({ task }) {
return (
<ProgressIndicator
progress={task.progress}
status={task.status}
estimatedTime={task.estimatedTime}
showPercentage
showStatus
/>
);
}
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
});
// 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'
});
// 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))
);
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);
}
}
-
generateVideo(request)
- Generate a video from text/image -
getTask(taskId)
- Get task status and details -
listTasks(options)
- List user's video tasks -
cancelTask(taskId)
- Cancel a pending task -
deleteTask(taskId)
- Delete a completed task -
uploadImage(image)
- Upload image for later use -
getQuota()
- Get user quota information -
waitForCompletion(taskId, options)
- Wait for task completion
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;
}
Check out our examples directory for complete implementation examples:
- Basic Text-to-Video
- Image-to-Video with React
- Batch Processing
- Webhook Integration
- Next.js Integration
- Website: https://seedance.studio
- Documentation: https://docs.seedance.studio
- GitHub: https://github.com/saasfly/saasfly
- Support: contact@seedance.studio
MIT License - see the LICENSE file for details.
We welcome contributions! Please see our Contributing Guide for details.
- 📧 Email: contact@seedance.studio
- 💬 Discord: Join our community
- 📖 Documentation: docs.seedance.studio
Made with ❤️ by Seedance Studio