SDK
SDK End-to-End Example
Full async workflow using @pipelyn/sdk
This example covers a complete async media workflow:
- Create client
- Submit a job
- Wait for completion
- Download optimized output
import { createPipelynClient, PipelynError } from '@pipelyn/sdk'
const client = createPipelynClient({
baseUrl: 'http://localhost:7990/api',
defaultPreset: 'web',
apiKey: process.env.PIPELYN_API_KEY,
})
async function optimizeLargeVideo(videoBytes: Uint8Array) {
const media = new File([videoBytes], 'sample.mp4', { type: 'video/mp4' })
try {
const submitted = await client.submitJob({
media,
preset: 'low-bandwidth',
})
const finalStatus = await client.waitForJob(submitted.jobId, {
pollIntervalMs: 1000,
maxWaitMs: 10 * 60_000,
})
if (!finalStatus.downloadUrl) {
throw new Error('Missing download URL for completed job')
}
const outputResponse = await fetch(finalStatus.downloadUrl)
if (!outputResponse.ok) {
throw new Error(`Download failed: ${outputResponse.status}`)
}
const outputBlob = await outputResponse.blob()
return {
jobId: submitted.jobId,
filename: finalStatus.result?.filename ?? 'optimized-media',
savedPercent: finalStatus.result?.savedPercent ?? 0,
outputBlob,
}
} catch (error) {
if (error instanceof PipelynError) {
// Access typed fields from the SDK
console.error(error.code, error.status, error.retriable)
}
throw error
}
}