Official AudioPod SDK for Node.js - Professional Audio Processing powered by AI
npm install audiopodOfficial Node.js SDK for AudioPod AI - Professional Audio Processing powered by AI.



``bash`
npm install audiopodor
yarn add audiopod
`typescript
import AudioPod from "audiopod";
// Initialize client
const client = new AudioPod({ apiKey: "ap_your_api_key" });
// Separate audio into 6 stems
const result = await client.stems.separate({
url: "https://youtube.com/watch?v=VIDEO_ID",
mode: "six",
});
// Download stems
for (const [stem, url] of Object.entries(result.download_urls)) {
console.log(${stem}: ${url});`
}
Extract individual audio components from mixed recordings.
| Mode | Stems | Output |
| ----------- | ----- | --------------------------------------------------------------- |
| single | 1 | Specified stem only (vocals, drums, bass, guitar, piano, other) |two
| | 2 | Vocals + Instrumental |four
| | 4 | Vocals, Drums, Bass, Other |six
| | 6 | Vocals, Drums, Bass, Guitar, Piano, Other |producer
| | 8 | + Kick, Snare, Hihat |studio
| | 12 | Full production toolkit |mastering
| | 16 | Maximum detail |
`typescript
import AudioPod from "audiopod";
const client = new AudioPod({ apiKey: "ap_your_api_key" });
// Six-stem separation from YouTube
const job = await client.stems.extract({
url: "https://youtube.com/watch?v=VIDEO_ID",
mode: "six",
});
console.log(Job ID: ${job.id});
// Wait for completion
const result = await client.stems.waitForCompletion(job.id);
console.log(result.download_urls);
// Or use the convenience method (extract + wait)
const result = await client.stems.separate({
url: "https://youtube.com/watch?v=VIDEO_ID",
mode: "six",
});
// From local file
const result = await client.stems.separate({
file: "./song.mp3",
mode: "four",
});
// Extract only vocals
const result = await client.stems.separate({
url: "https://youtube.com/watch?v=VIDEO_ID",
mode: "single",
stem: "vocals",
});
// Get available modes
const modes = await client.stems.modes();
modes.modes.forEach((m) => {
console.log(${m.mode}: ${m.description});`
});
Check balance and manage your wallet.
`typescriptBalance: ${balance.balance_usd}
// Check balance
const balance = await client.wallet.balance();
console.log();
// Estimate cost
const estimate = await client.wallet.estimate("stem_extraction", 180);
console.log(Estimated cost: ${estimate.cost_usd});
// Get usage history
const usage = await client.wallet.usage();
usage.logs.forEach((log) => {
console.log(${log.service_type}: ${log.amount_usd});`
});
`typescript
// Transcription
const job = await client.transcription.create({ url: "https://..." });
const result = await client.transcription.waitForCompletion(job.id);
// Voice cloning
const voice = await client.voice.clone({
file: "./sample.wav",
name: "My Voice",
});
// Music generation
const song = await client.music.generate({
prompt: "upbeat electronic dance music",
});
// Noise reduction
const clean = await client.denoiser.denoise({ file: "./noisy.wav" });
// Speaker diarization
const speakers = await client.speaker.diarize({ url: "https://..." });
`
`typescript
import AudioPod, {
InsufficientBalanceError,
AuthenticationError,
} from "audiopod";
try {
const client = new AudioPod({ apiKey: "ap_..." });
const result = await client.stems.separate({ url: "...", mode: "six" });
} catch (error) {
if (error instanceof AuthenticationError) {
console.log("Invalid API key");
} else if (error instanceof InsufficientBalanceError) {
console.log(Need more credits. Required: ${error.requiredCents} cents);`
}
}
`bash`
export AUDIOPOD_API_KEY="ap_your_api_key"
`typescript`
// Client reads from env automatically
const client = new AudioPod();
Full TypeScript support with exported types:
`typescript``
import AudioPod, { StemExtractionJob, StemMode, WalletBalance } from "audiopod";
- API Documentation
- API Reference
- Get API Key
MIT License - see LICENSE for details.