Overview
Understand the fundamental building blocks of Synthome SDK
Core Concepts
Synthome SDK is built around three core concepts: Pipelines, Models, and Providers. Understanding these concepts will help you build powerful media generation workflows.
Architecture Overview
compose( // Pipeline
merge([ // Operation
generateVideo({ // Generation
model: videoModel( // Model
"bytedance/seedance-1-pro",
"replicate" // Provider
),
prompt: "Scene 1"
}),
generateVideo({ ... }),
]),
).execute()The Three Pillars
1. Pipelines
Pipelines define what operations to perform and in what order. Use compose() to chain operations together:
const pipeline = compose(
merge([
generateVideo({ ... }),
generateVideo({ ... }),
]),
);Pipelines are lazy - they don't execute until you call .execute(). This lets you build complex workflows and run them when ready.
2. Models
Models define which AI model to use for generation. Synthome uses a unified model naming system that works across providers:
// Unified model name + provider
const model = videoModel("bytedance/seedance-1-pro", "replicate");The same model name works regardless of which provider hosts it. Switch providers by changing one argument.
3. Providers
Providers are the infrastructure that runs the AI models. Synthome supports multiple providers:
- Replicate - Video and image generation
- Fal - Fast image generation and lip-sync
- ElevenLabs - Text-to-speech
- Hume - Expressive TTS
You bring your own API keys, and Synthome orchestrates the calls.
How It All Fits Together
When you execute a pipeline:
- Pipeline is converted to an execution plan (JSON)
- Synthome API receives the plan and schedules jobs
- Jobs run in parallel when possible, waiting for dependencies when needed
- Results are collected and returned (or sent via webhook)
// Build the pipeline - mix URLs with generated media
const pipeline = compose(
merge([
// Direct URL - no generation needed
"https://example.com/intro.mp4",
// Generated videos - run in parallel
generateVideo({
model: videoModel("bytedance/seedance-1-pro", "replicate"),
prompt: "A rocket launching",
}),
generateVideo({
model: videoModel("bytedance/seedance-1-pro", "replicate"),
prompt: "Earth from orbit",
}),
]),
);
// Execute and wait for results
const execution = await pipeline.execute();
console.log(execution.result?.url);Key Benefits
| Concept | Benefit |
|---|---|
| Pipelines | Compose complex workflows from simple operations |
| Models | Unified naming across providers |
| Providers | Use best-in-class models from multiple platforms |
Next Steps
How is this guide?