seedance-video-sdk
Version:
Seedance AI Video Generation SDK - Create professional videos from text and images using ByteDance's advanced AI technology
264 lines (203 loc) • 6.86 kB
Markdown
# seedance-video-sdk
[](https://badge.fury.io/js/seedance-video-sdk)
[](https://www.typescriptlang.org/)
[](https://opensource.org/licenses/MIT)
[](https://www.npmjs.com/package/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](https://seedance.studio)
## 📦 Installation
```bash
npm install seedance-video-sdk
```
```bash
yarn add seedance-video-sdk
```
```bash
pnpm add seedance-video-sdk
```
## 🔑 Getting Started
### 1. Get Your API Key
Sign up at [Seedance Studio](https://seedance.studio) to get your API key.
### 2. Basic Usage
```typescript
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
```typescript
// 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
```tsx
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
```tsx
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
```typescript
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
```typescript
// 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
```typescript
// 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
```typescript
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/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
### Types
```typescript
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](./examples) for complete implementation examples:
- [Basic Text-to-Video](./examples/basic-text-to-video)
- [Image-to-Video with React](./examples/react-image-to-video)
- [Batch Processing](./examples/batch-processing)
- [Webhook Integration](./examples/webhook-integration)
- [Next.js Integration](./examples/nextjs-integration)
## 🔗 Links
- **Website**: [https://seedance.studio](https://seedance.studio)
- **Documentation**: [https://docs.seedance.studio](https://docs.seedance.studio)
- **GitHub**: [https://github.com/saasfly/saasfly](https://github.com/saasfly/saasfly)
- **Support**: [contact@seedance.studio](mailto:contact@seedance.studio)
## 📄 License
MIT License - see the [LICENSE](LICENSE) file for details.
## 🤝 Contributing
We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
## 💬 Support
- 📧 Email: [contact@seedance.studio](mailto:contact@seedance.studio)
- 💬 Discord: [Join our community](https://discord.gg/seedance)
- 📖 Documentation: [docs.seedance.studio](https://docs.seedance.studio)
---
Made with ❤️ by [Seedance Studio](https://seedance.studio)