Build with the New Standard in Audio Intelligence

Access studio-grade audio separation and analysis through a simple API. Our foundational AI engine provides developers with unparalleled source separation quality, enabling a new generation of applications in music, production, and analytics.

Start building

Quickstart

Get your first audio track separated in under a minute. Get your API key from the developer dashboard, then make a simple `POST` request to the jobs endpoint, selecting your desired processing `tier`.

The API will immediately return a `Job` object. Poll the job's `id` until the `status` is `succeeded` to retrieve your audio files.

cURL Request Example

curl --request POST "https://api.beatstorapon.com/v1/jobs" \
     --header "Authorization: Bearer $BTRO_API_KEY" \
     -F "file=@/path/to/track.mp3" \
     -F "tier=pro"

Authentication

The BeatsToRapOn API uses API keys to authenticate requests. You can view and manage your API keys in your developer dashboard after signing up. We provide two types of keys:

Secret Keys: These keys should be kept confidential and only stored on your own servers. Your secret API key can perform any API request without restriction.

Authentication to the API is performed via the Authorization header. Provide your secret API key as the bearer token.

Authorization: Bearer YOUR_SECRET_KEY

API Keys & Modes

All API requests exist in either live or test mode. Each mode has its own set of API keys. Make sure to use the correct keys for your integration.

KEY TYPEPREFIXDESCRIPTION
Live Secret Key
sk_live_...Use this key for all server-side requests in your production application.
Test Secret Key
sk_test_...Use this key for all server-side requests when testing and developing your application.

The Job Object

The Job object is the central resource in our API. It represents a single asynchronous task, such as splitting a track. When you submit a file for processing, a new Job object is created. You can then poll this object to check its status and retrieve the final results.

Attributes

ATTRIBUTEDESCRIPTION
id
string
Unique identifier for the object. Live job IDs are provided by the upstream service. Test jobs are prefixed with job_test_.
object
string
The type of object, always "job".
livemode
boolean
true if the object was created in live mode (using a live key), false if created in test mode.
type
string
The type of job requested, e.g., "splitter".
status
string
The current status of the job. Can be queued, succeeded, or failed.
tier
string
The processing tier selected for this job, e.g., "basic", "pro", "studio", or "vocal_remover".
filename
string
The original filename of the uploaded audio file.
created
timestamp
Time at which the object was created, in UTC.
completed_at
timestamp
Time at which the job finished processing. Null until completion.
result
object
If the job succeeded, this object contains the results. See example for structure. Null otherwise.

Create a Job

Creates a new asynchronous job to process an audio file. This endpoint immediately accepts the request and returns a Job object with a status of queued. You must then poll the Retrieve a Job endpoint to get the final result.

HTTP Request

POST /v1/jobs

Parameters

PARAMETERDESCRIPTION
file
file
The audio file to be processed. Must be sent as multipart/form-data. Required
tier
string
Required if type is splitter. Options: basic, pro, studio, vocal_remover. Required
type
string
The type of job to perform. Defaults to splitter, which is the only currently supported value.

Retrieve a Job

Retrieves the details of a job that has previously been created. You should poll this endpoint periodically to check the status of a job. Once the status becomes succeeded or failed, the job is complete and you should stop polling.

We recommend a polling interval of 2-5 seconds. Polling more frequently will result in rate limiting.

Job Expiration: Note that results for completed jobs (succeeded or failed) are only available for **1 hour** after completion. Attempting to retrieve a job after this period will result in a 410 Gone error.

HTTP Request

GET /v1/jobs/:id

Test Mode

All BeatsToRapOn API resources exist in two modes: live and test. You can use test mode to simulate API calls without using your credits or processing real files. This allows you to build and test your integration with a predictable, fast response.

To create a job in test mode, simply use your test API key (prefixed with sk_test_) for authentication. All objects created with test keys exist only in test mode. Test mode jobs are simulated to complete after a 2-second delay and return a hardcoded, predictable result based on the tier you select.

Handling Errors

Our API uses conventional HTTP status codes to indicate the success or failure of an API request. In general: Codes in the 2xx range indicate success. Codes in the 4xx range indicate a client-side error (e.g., a missing parameter, invalid authentication). Codes in the 5xx range indicate a rare error with our servers.

When a request fails, we return a structured JSON error object containing a type, a human-readable message, and the unique request_id for easy debugging. All error responses are wrapped in a top-level `error` key.

Common Error Types

ERROR TYPEHTTP STATUSDESCRIPTION
invalid_parameter
400A required parameter was missing (e.g. `file`) or a value was invalid (e.g. invalid `tier`). The message will specify the issue.
authentication_error
401No valid API key provided or the key format is incorrect.
invalid_request_error
404 / 410The requested resource does not exist (404), or it has expired (410).
rate_limit_exceeded
429You are making requests to a specific endpoint too frequently. Slow down and try again.
api_error
5xxSomething went wrong on our end. This could be an issue contacting an upstream service or an internal database error.