AssemblyAI Upgrade & Migration
Overview
Guide for upgrading the assemblyai npm package and migrating between SDK versions, including the major v3 to v4 migration and speech model transitions.
Prerequisites
- Current
assemblyai package installed
- Git for version control
- Test suite available
Instructions
Step 1: Check Current Version
npm list assemblyai
npm view assemblyai version
npm view assemblyai --json | jq '.versions[-5:]'
Step 2: Review Changelog
open https://github.com/AssemblyAI/assemblyai-node-sdk/releases
gh release list --repo AssemblyAI/assemblyai-node-sdk --limit 10
Step 3: Create Upgrade Branch
git checkout -b upgrade/assemblyai-sdk-v$(npm view assemblyai version)
npm install assemblyai@latest
npm test
Step 4: Major Migration — Old SDK to Current (v4.x)
If migrating from @assemblyai/sdk (old package) to assemblyai (current):
import { AssemblyAI as OldClient } from '@assemblyai/sdk';
const client = new OldClient({ apiKey: '...' });
import { AssemblyAI } from 'assemblyai';
const client = new AssemblyAI({ apiKey: '...' });
npm uninstall @assemblyai/sdk
npm install assemblyai
Key changes in the migration:
Old (@assemblyai/sdk) | New (assemblyai) |
|---|
import { AssemblyAI } from '@assemblyai/sdk' | import { AssemblyAI } from 'assemblyai' |
client.transcripts.create() | client.transcripts.transcribe() (blocks until done) |
Manual polling with client.transcripts.get() | transcribe() auto-polls, submit() for manual control |
RealtimeTranscriber class | client.streaming.createService() |
client.realtime.createTemporaryToken() | client.streaming.createTemporaryToken() |
Step 5: Transcription Method Changes
const job = await client.transcripts.create({ audio_url: url });
let transcript;
while (true) {
transcript = await client.transcripts.get(job.id);
if (transcript.status === 'completed' || transcript.status === 'error') break;
await new Promise(r => setTimeout(r, 3000));
}
const transcript = await client.transcripts.transcribe({
audio: url,
});
const submitted = await client.transcripts.submit({
audio: url,
webhook_url: 'https://your-app.com/webhook',
});
Step 6: Streaming Migration
import { RealtimeTranscriber } from 'assemblyai';
const rt = new RealtimeTranscriber({ apiKey: '...' });
rt.on('transcript', (msg) => { });
await rt.connect();
const transcriber = client.streaming.createService({
speech_model: 'nova-3',
sample_rate: 16000,
});
transcriber.on('transcript', (msg) => { });
await transcriber.connect();
Step 7: Speech Model Migration
const transcript = await client.transcripts.transcribe({
audio: audioUrl,
speech_model: 'best',
});
const transcriber = client.streaming.createService({
speech_model: 'nova-3-pro',
sample_rate: 16000,
});
Step 8: Verify After Upgrade
import { AssemblyAI } from 'assemblyai';
async function verifyUpgrade() {
const client = new AssemblyAI({ apiKey: process.env.ASSEMBLYAI_API_KEY! });
const transcript = await client.transcripts.transcribe({
audio: 'https://storage.googleapis.com/aai-web-samples/5_common_sports_702.wav',
});
console.assert(transcript.status === 'completed', 'Transcription should complete');
console.assert(transcript.text && transcript.text.length > 0, 'Should have text');
const { response } = await client.lemur.task({
transcript_ids: [transcript.id],
prompt: 'What is this about? Reply in one sentence.',
});
console.assert(response.length > 0, 'LeMUR should respond');
const page = client..({ : });
.(page.. > , );
.();
}
().(.);
Output
- Updated
assemblyai package to latest version
- Migrated import paths and method calls
- Updated streaming setup to current patterns
- Verified all API endpoints work post-upgrade
Error Handling
| Issue | Cause | Solution |
|---|
Cannot find module 'assemblyai' | Old package name | npm uninstall @assemblyai/sdk && npm install assemblyai |
transcripts.create is not a function | API changed in v4 | Use transcripts.transcribe() or transcripts.submit() |
audio_url not recognized | Parameter renamed | Use audio instead of audio_url |
| Streaming not connecting | API changed | Use client.streaming.createService() |
| TypeScript errors | Type definitions changed | Update imports to match new types |
Resources
Next Steps
For CI integration during upgrades, see assemblyai-ci-integration.