Skip to main content
No Cost November

Stem presets are free on paid plans until Nov 30, 23:59:59 UTC. Up to 10 free requests per hour and 100 per day.

Extraction reference →
During November 2026, Extraction requests made with the new stem_preset field are free on every paid plan. This guide shows you how to integrate stem_preset, how to tell whether a request was free, and how to keep your workload inside the free quota.

At a glance

Quick start

1

Use an API Key from a paid plan

Create or copy an API Key in the API dashboard. Requests from Free plan accounts are charged as usual. See Pricing to upgrade.
2

Send stem_preset instead of stems

Replace your stems field with stem_preset. Leave stems out, or send [].
3

Check that the request was free

A free request returns "is_free_promo": true and "credit_estimate": 0.0, plus the free requests you have left.
4

Collect your stems

The webhook and Get by ID return one URL per stem, exactly as they do for a stems request.

Pick the right preset

Each preset counts as one request against your free quota, however many stems it returns.
Finer splits such as lead_vocal, male_vocal, kick_drum, acoustic_guitar, strings, or winds have no preset. Request them with stems, which is charged as usual.

Read the free quota from the response

Every Extraction response now includes four promotion fields. Use them instead of counting requests yourself: the counters live on our servers and use UTC. What the fields look like in each situation:
Requests past the limits are charged, not rejected. If you want to stay free, stop sending preset requests when a remaining count reaches 0, and resume at free_quota_resets_at.

Get the most out of the promotion

The promotion is tied to the stem_preset field. A request with stems=["vocals","instrumental"] returns the same stems as 2_stems but is charged.
One 6_stems request uses one free slot and returns six stems. Splitting the same track with several smaller requests uses more of your quota.
The whole request is free, so preprocessing_options such as ["Denoise", "Dereverb"] cost nothing extra. Leave eco_mode at false for the highest quality output.
Up to 10 free requests per hour adds up to 100 a day. Queue your tracks and send them as the quota resets instead of all at once. The code below does this for you.
Pass webhook_url so results arrive as soon as each conversion finishes. Extraction counts towards your parallel request limit, so avoid holding slots open with long polling loops.
stem_preset stays available after the promotion ends. From December 1, preset requests are charged like the matching stems list, so you don’t need to change your code back.

Batch tracks inside the free quota

These examples send one preset request per track. After each response they check the remaining counts, and wait until free_quota_resets_at when either one reaches 0, so no request is charged because of the limits.
If several workers or services share one account, they share one quota. Run the batch from a single worker, or have each worker read the quota fields from every response before it sends the next request.

Errors

Requests rejected with 422 don’t use a free slot. Neither do requests that fail before they are queued.

FAQ

Only requests that use the stem_preset field are free. Send stem_preset=2_stems instead.
No. The 10 per hour and 100 per day limits apply to your account, across all of its API Keys.
At the start of every UTC clock hour, for example at 15:00:00Z. It is not a rolling 60-minute window. The daily limit resets at 00:00:00Z.
It runs and is charged at the usual stem splitter rate. The response shows "is_free_promo": false and "free_generations_remaining_hour": 0.
Yes. Presets work on every plan, but only paid plans get them free. See Pricing to upgrade.