Skip to content

Releases: StemSplit/stemsplit-github-action

v0.1.0

03 Jun 13:53

Choose a tag to compare

First public release of the official StemSplit GitHub Action. Run AI-powered stem separation from any GitHub Actions workflow by passing a public audio URL to the StemSplit API v1.


Quick start

  1. Create an API key at StemSplit → Settings → API Keys.
  2. Add it to your repository: Settings → Secrets and variables → Actions → New repository secret
    • Name: STEMSPLIT_API_KEY
    • Value: your sk_live_... key
  3. Add a workflow step:
jobs:
  separate-stems:
    runs-on: ubuntu-latest
    steps:
      - uses: StemSplit/stemsplit-github-action@v0.1.0
        id: stems
        with:
          api-key: ${{ secrets.STEMSPLIT_API_KEY }}
          source-url: https://example.com/song.mp3
          output-type: FOUR_STEMS
          quality: BEST
          wait: "true"
          timeout-seconds: "600"

      - name: Show result
        run: |
          echo "Job ID: ${{ steps.stems.outputs.job-id }}"
          echo "Status: ${{ steps.stems.outputs.status }}"

When wait is true and the job completes, result-json includes presigned download URLs under outputs (vocals, drums, bass, etc., depending on output-type). URLs expire after one hour.


What's included

Operations

Operation Default Description
create-job Yes Create a stem separation job from a public source-url
balance No Return current API credit balance

Inputs

Input Required Default Description
api-key Yes StemSplit API key (sk_live_...)
operation No create-job create-job or balance
source-url For create-job Public HTTPS URL to an audio file
output-type No BOTH VOCALS, INSTRUMENTAL, BOTH, FOUR_STEMS, SIX_STEMS
quality No BEST FAST, BALANCED, BEST (SIX_STEMS requires BEST)
output-format No MP3 MP3, WAV, FLAC
denoise-vocals No false Run Voice Cleaner on extracted vocals after separation
wait No false Poll until status is COMPLETED or FAILED
timeout-seconds No 300 Max wait time when wait is true
api-base-url No https://stemsplit.io/api/v1 Override API base (testing only)
metadata No JSON object string stored on the job

Outputs

Output When set Description
job-id create-job Created or final job ID
status create-job Job status (e.g. PENDING, COMPLETED, FAILED)
balance-seconds balance Credit balance in seconds
balance-formatted balance Human-readable balance
result-json Always Full JSON body from the API

Examples

Vocals + instrumental (karaoke-style)

- uses: StemSplit/stemsplit-github-action@v0.1.0
  with:
    api-key: ${{ secrets.STEMSPLIT_API_KEY }}
    source-url: https://cdn.example.com/track.mp3
    output-type: BOTH
    quality: BEST
    wait: "true"

Six-stem separation

- uses: StemSplit/stemsplit-github-action@v0.1.0
  with:
    api-key: ${{ secrets.STEMSPLIT_API_KEY }}
    source-url: https://cdn.example.com/track.mp3
    output-type: SIX_STEMS
    quality: BEST
    wait: "true"
    timeout-seconds: "900"

Vocals with Voice Cleaner (denoise)

- uses: StemSplit/stemsplit-github-action@v0.1.0
  with:
    api-key: ${{ secrets.STEMSPLIT_API_KEY }}
    source-url: https://cdn.example.com/track.mp3
    output-type: VOCALS
    quality: BEST
    denoise-vocals: "true"
    wait: "true"

Check credit balance before running jobs

- uses: StemSplit/stemsplit-github-action@v0.1.0
  id: balance
  with:
    operation: balance
    api-key: ${{ secrets.STEMSPLIT_API_KEY }}

- run: echo "Balance ${{ steps.balance.outputs.balance-formatted }}"

Fire-and-forget (no wait)

- uses: StemSplit/stemsplit-github-action@v0.1.0
  id: stems
  with:
    api-key: ${{ secrets.STEMSPLIT_API_KEY }}
    source-url: https://cdn.example.com/track.mp3
    wait: "false"

- run: echo "Started job ${{ steps.stems.outputs.job-id }}"

Requirements and limits

  • Authentication: Bearer API key; keys start with sk_live_.
  • Input audio: Must be reachable via public HTTPS URL from StemSplit servers. For files on the runner only, use the StemSplit CLI or Node.js SDK upload flow instead.
  • Credits: Billed per second of audio (same as the web app). New accounts include free minutes — see pricing.
  • Runner: node20 (defined in action.yml).

Links

Resource URL
Developer guide https://stemsplit.io/developers/guides/github-actions
API reference https://stemsplit.io/developers/reference
Changelog https://stemsplit.io/developers/changelog#stemsplit-github-action
Example workflow examples/separate-stems.yml
Report issues https://github.com/StemSplit/stemsplit-github-action/issues

About StemSplit

StemSplit is an AI audio platform for stem separation, vocal removal, and instrumental / karaoke workflows. Upload a song or pass a URL and get isolated vocals, drums, bass, piano, guitar, and other stems — powered by HTDemucs on GPU, with optional Voice Cleaner noise reduction (DeepFilterNet).

Use StemSplit in the browser, via the REST API, or through official tools: Node.js SDK (@stemsplit/sdk), Python SDK, CLI, MCP server, n8n node, and this GitHub Action for CI/CD. New accounts include free credits; pay-as-you-go pricing with no subscription required.


License

MIT — see LICENSE.

v0.1.0

03 Jun 13:45

Choose a tag to compare

Marketplace summary (paste into short description if limited):
Official GitHub Action for StemSplit — AI stem separation and vocal removal from public audio URLs in CI/CD workflows. Isolate vocals, drums, bass, and more via the StemSplit API; optional wait-for-completion and credit balance check.

Overview

Release date: June 2026
Repository: StemSplit/stemsplit-github-action
Install: uses: StemSplit/stemsplit-github-action@v0.1.0

First public release of the official StemSplit GitHub Action. Run AI-powered stem separation from any GitHub Actions workflow by passing a public audio URL to the StemSplit API v1.


Quick start

  1. Create an API key at StemSplit → Settings → API Keys.
  2. Add it to your repository: Settings → Secrets and variables → Actions → New repository secret
    • Name: STEMSPLIT_API_KEY
    • Value: your sk_live_... key
  3. Add a workflow step:
jobs:
  separate-stems:
    runs-on: ubuntu-latest
    steps:
      - uses: StemSplit/stemsplit-github-action@v0.1.0
        id: stems
        with:
          api-key: ${{ secrets.STEMSPLIT_API_KEY }}
          source-url: https://example.com/song.mp3
          output-type: FOUR_STEMS
          quality: BEST
          wait: "true"
          timeout-seconds: "600"

      - name: Show result
        run: |
          echo "Job ID: ${{ steps.stems.outputs.job-id }}"
          echo "Status: ${{ steps.stems.outputs.status }}"

When wait is true and the job completes, result-json includes presigned download URLs under outputs (vocals, drums, bass, etc., depending on output-type). URLs expire after one hour.


What's included

Operations

Operation Default Description
create-job Yes Create a stem separation job from a public source-url
balance No Return current API credit balance

Inputs

Input Required Default Description
api-key Yes StemSplit API key (sk_live_...)
operation No create-job create-job or balance
source-url For create-job Public HTTPS URL to an audio file
output-type No BOTH VOCALS, INSTRUMENTAL, BOTH, FOUR_STEMS, SIX_STEMS
quality No BEST FAST, BALANCED, BEST (SIX_STEMS requires BEST)
output-format No MP3 MP3, WAV, FLAC
denoise-vocals No false Run Voice Cleaner on extracted vocals after separation
wait No false Poll until status is COMPLETED or FAILED
timeout-seconds No 300 Max wait time when wait is true
api-base-url No https://stemsplit.io/api/v1 Override API base (testing only)
metadata No JSON object string stored on the job

Outputs

Output When set Description
job-id create-job Created or final job ID
status create-job Job status (e.g. PENDING, COMPLETED, FAILED)
balance-seconds balance Credit balance in seconds
balance-formatted balance Human-readable balance
result-json Always Full JSON body from the API

Examples

Vocals + instrumental (karaoke-style)

- uses: StemSplit/stemsplit-github-action@v0.1.0
  with:
    api-key: ${{ secrets.STEMSPLIT_API_KEY }}
    source-url: https://cdn.example.com/track.mp3
    output-type: BOTH
    quality: BEST
    wait: "true"

Six-stem separation

- uses: StemSplit/stemsplit-github-action@v0.1.0
  with:
    api-key: ${{ secrets.STEMSPLIT_API_KEY }}
    source-url: https://cdn.example.com/track.mp3
    output-type: SIX_STEMS
    quality: BEST
    wait: "true"
    timeout-seconds: "900"

Vocals with Voice Cleaner (denoise)

- uses: StemSplit/stemsplit-github-action@v0.1.0
  with:
    api-key: ${{ secrets.STEMSPLIT_API_KEY }}
    source-url: https://cdn.example.com/track.mp3
    output-type: VOCALS
    quality: BEST
    denoise-vocals: "true"
    wait: "true"

Check credit balance before running jobs

- uses: StemSplit/stemsplit-github-action@v0.1.0
  id: balance
  with:
    operation: balance
    api-key: ${{ secrets.STEMSPLIT_API_KEY }}

- run: echo "Balance ${{ steps.balance.outputs.balance-formatted }}"

Fire-and-forget (no wait)

- uses: StemSplit/stemsplit-github-action@v0.1.0
  id: stems
  with:
    api-key: ${{ secrets.STEMSPLIT_API_KEY }}
    source-url: https://cdn.example.com/track.mp3
    wait: "false"

- run: echo "Started job ${{ steps.stems.outputs.job-id }}"

Requirements and limits

  • Authentication: Bearer API key; keys start with sk_live_.
  • Input audio: Must be reachable via public HTTPS URL from StemSplit servers. For files on the runner only, use the StemSplit CLI or Node.js SDK upload flow instead.
  • Credits: Billed per second of audio (same as the web app). New accounts include free minutes — see pricing.
  • Runner: node20 (defined in action.yml).

Links

Resource URL
Developer guide https://stemsplit.io/developers/guides/github-actions
API reference https://stemsplit.io/developers/reference
Changelog https://stemsplit.io/developers/changelog#stemsplit-github-action
Example workflow examples/separate-stems.yml
Report issues https://github.com/StemSplit/stemsplit-github-action/issues

About StemSplit

StemSplit is an AI audio platform for stem separation, vocal removal, and instrumental / karaoke workflows. Upload a song or pass a URL and get isolated vocals, drums, bass, piano, guitar, and other stems — powered by HTDemucs on GPU, with optional Voice Cleaner noise reduction (DeepFilterNet).

Use StemSplit in the browser, via the REST API, or through official tools: Node.js SDK (@stemsplit/sdk), Python SDK, CLI, MCP server, n8n node, and this GitHub Action for CI/CD. New accounts include free credits; pay-as-you-go pricing with no subscription required.


License

MIT — see LICENSE.