Providers
Overview
Configure API keys for AI model providers
Providers
Synthome connects to multiple AI providers to run models. Each provider requires an API key.
Supported Providers
| Provider | Environment Variable | Models |
|---|---|---|
| Replicate | REPLICATE_API_KEY | Video, Image, Audio |
| Fal | FAL_KEY | Video, Image |
| Google Cloud | GOOGLE_CLOUD_CREDENTIALS | Image, Video |
| ElevenLabs | ELEVENLABS_API_KEY | Audio (TTS) |
| Hume | HUME_API_KEY | Audio (TTS) |
| OpenAI | OPENAI_API_KEY | Transcription correction |
Quick Setup
Set environment variables for the providers you need:
# .env or .env.local
REPLICATE_API_KEY=r8_...
FAL_KEY=...
GOOGLE_CLOUD_CREDENTIALS='{"type":"service_account",...}'
ELEVENLABS_API_KEY=...
HUME_API_KEY=...
OPENAI_API_KEY=sk-...How Providers Work
When you specify a model, you also specify which provider to use:
import { videoModel, imageModel, audioModel } from "@synthome/sdk";
// Replicate for video
videoModel("bytedance/seedance-1-pro", "replicate");
// Fal for lip-sync
videoModel("veed/fabric-1.0", "fal");
// Google Cloud for high-res image generation
imageModel("google/nana-banana-pro", "google-cloud");
// ElevenLabs for TTS
audioModel("elevenlabs/turbo-v2.5", "elevenlabs");The SDK automatically uses the corresponding API key from your environment.
Per-Request API Keys
Override environment variables for specific requests:
generateVideo({
model: videoModel("bytedance/seedance-1-pro", "replicate"),
prompt: "Ocean waves",
apiKey: "r8_custom_key_here", // Override for this request
});Provider Selection
Some models are available on multiple providers:
// Same model, different providers
imageModel("google/nano-banana", "replicate");
imageModel("google/nano-banana", "fal");Choose based on:
- Existing accounts: Use providers where you already have API keys
- Pricing: Check each provider's pricing page
- Rate limits: Different providers have different limits
How is this guide?