- Initial release of the official
@stemsplit/sdkNode.js / TypeScript SDK StemSplitclient with sub-resources:jobs,youtubeJobs,soundcloudJobs,denoiseJobs,accountclient.jobs.create()— accepts a local file path, Buffer, Blob, orsourceUrl; handles the presigned upload dance automaticallyStemJob.waitForCompletion()— polls until the job is terminal; throws typedJobFailedError/JobExpiredErrorStemJob.downloadAll(dir)— downloads all stems to a local directory in one callclient.youtubeJobs.create()andwaitForCompletion()for YouTube URL separationclient.soundcloudJobs.create()andwaitForCompletion()for SoundCloud URL separationclient.denoiseJobs.create(),waitForCompletion(), anddownloadResult()for voice denoisingclient.account.get()for balance queriesclient.jobs.iterAll()async generator for paginated iteration- Typed error hierarchy:
AuthenticationError,InsufficientCreditsError,RateLimitError,NotFoundError,BadRequestError,InternalServerError,JobFailedError,JobExpiredError,NetworkError,SignatureVerificationError webhooks.verifyAndParse()andwebhooks.verify()— HMAC-SHA256 webhook signature verification- Automatic retries with exponential backoff + jitter on transient errors and 429s
- Full TypeScript types matching the REST API; exports
py.typed-equivalentdeclaration: true