Stable·v0.1

SDKs & integrations, native to your stack.

One stem splitter API in seven first-party SDKs and four no-code integrations — from npm install @aistemsplitter/sdk to a single n8n node — backed by an OpenAPI 3.1 spec and credit packs that never expire.

Languages
7
Integrations
4
Channels
13
Spec
OpenAPI 3.1
/ first-party SDKs

Pick the SDK that matches your stack

Node.js
Node.js / TypeScript
@aistemsplitter/sdk · npm + JSR
$npm install @aistemsplitter/sdk
Python
Python
aistemsplitter · PyPI
$pip install aistemsplitter
Java
Java / Kotlin
org.aistemsplitter:aistemsplitter-java · Maven Central
$implementation "org.aistemsplitter:aistemsplitter-java:0.1.0"
Go
Go
github.com/aistemsplitter/aistemsplitter-go · Go module
$go get github.com/aistemsplitter/aistemsplitter-go
PHP
PHP
aistemsplitter/aistemsplitter · Packagist
$composer require aistemsplitter/aistemsplitter
Swift
Swift
aistemsplitter-swift · SPM + CocoaPods
$pod "aistemsplitter-swift"
Lua
Lua
aistemsplitter · LuaRocks
$luarocks install aistemsplitter
/ universal quick start

Submit a job, poll once, get six stems

Twelve lines that prove the surface area. Submit a split, get a job id, poll once, receive vocals, drums, bass, guitar, piano, and other — the same htdemucs_ft separation that runs across every SDK. Charged per minute of input audio against credit packs that never expire ($0.08–$0.14 per minute depending on volume).

# 1) Submit a split job
curl -X POST https://api.aistemsplitter.org/v1/audio/splits \
  -H "Authorization: Bearer $AISTEMSPLITTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "input": { "type": "direct_url", "url": "https://example.com/song.mp3" },
    "stemModel": "htdemucs_ft"
  }'
# → { "id": "split_01J…", "status": "queued" }

# 2) Poll for completion
curl https://api.aistemsplitter.org/v1/audio/splits/split_01J… \
  -H "Authorization: Bearer $AISTEMSPLITTER_API_KEY"
# → { "status": "succeeded", "stems": { "vocals": "...", ...x6 } }
/ no-code & automation

Same API, no-code path for the rest of the team

The engineer is rarely the only user. Drop the same stem splitter API into n8n, GitHub Actions, a container, or a Pipedream workflow — so ops, content, and CI all run on one vendor.

Tutorial

n8n community node

Trigger from anything, output six stems. Self-host or n8n Cloud.

marketplace

GitHub Action

Stem-split audio in CI/CD, auto-attach to releases.

🐳
ghcr.io

Docker / CLI image

One-line container for batch jobs and local pipelines.

P
workspace

Pipedream actions

Drop-in steps for Pipedream workflows.

/ frequently asked

Questions developers ask before they install

  • Which SDK should I install — Node, Python, or curl?

    Pick the language your service already runs on. Node and Python ship typed clients with one-call helpers (waitForSplit, verify_signature) and full method autocomplete; curl works on the same REST endpoints if you're prototyping or scripting from a shell. The hosted API is identical across all 13 distribution channels — same job ids, same webhooks, same per-minute billing.

  • Do credits expire if I don't use them?

    No. Credit packs never expire — purchase $6.99 / 50 minutes, $15 / 150 minutes, or $39.99 / 500 minutes and the balance stays on your account until you spend it. There is no monthly subscription, no rollover cap, and no auto-renewal. The first 3 minutes are free with no card required, charged at $0.08–$0.14 per minute depending on pack size.

  • Which model do you use, and can I name it in the request?

    The default is htdemucs_ft (Demucs fine-tuned, 4-stem: vocals, drums, bass, other) — the same model variant the open-source community benchmarks at ~8.7 dB SDR. You can switch to htdemucs_6s for guitar and piano stems by passing model='htdemucs_6s' on submit. Models are named explicitly in every SDK so output quality is comparable to local Demucs runs.

  • Can I self-host the SDK or the inference?

    The SDK clients are MIT-licensed and ship to npm, JSR, PyPI, Maven Central, Packagist, LuaRocks, SPM, and CocoaPods — fork or vendor them as you like. Inference itself runs on our managed GPUs against the hosted API at api.aistemsplitter.com — there is no on-prem inference image in v1, but the GHCR Docker image wraps the SDK for self-hosted orchestration.

  • What's the rate limit, and how do I handle large files?

    Concurrent jobs and per-minute request caps live on /developers/api with the current numbers (they age, so they aren't pinned here). For large uploads, call presignUpload (Node) / presign_upload (Python) to get a direct-to-storage URL — the SDK handles retries with exponential backoff out of the box. Files up to 50 MB upload directly; larger files use multipart presigned URLs.

  • How do I receive the result without polling forever?

    Pass webhook_url on createSplit. When the job finishes, the API POSTs an HMAC-SHA256-signed event to your URL with the stem download links inline. Verify the signature with one SDK call (verifyWebhook in Node, verify_signature in Python). The Webhooks section in each per-language quickstart shows runnable Express, Hono, FastAPI, and Flask handlers.

Build with stem splitting today.

Mint a key, paste it into the Quick Start, and have separated stems coming back inside a minute. Ten free minutes are on the house — the rest runs on credit packs that never expire, $0.08–$0.14 per minute depending on pack size.