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.
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 TYPE | PREFIX | DESCRIPTION |
---|---|---|
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
ATTRIBUTE | DESCRIPTION |
---|---|
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
PARAMETER | DESCRIPTION |
---|---|
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 TYPE | HTTP STATUS | DESCRIPTION |
---|---|---|
invalid_parameter | 400 | A required parameter was missing (e.g. `file`) or a value was invalid (e.g. invalid `tier`). The message will specify the issue. |
authentication_error | 401 | No valid API key provided or the key format is incorrect. |
invalid_request_error | 404 / 410 | The requested resource does not exist (404), or it has expired (410). |
rate_limit_exceeded | 429 | You are making requests to a specific endpoint too frequently. Slow down and try again. |
api_error | 5xx | Something went wrong on our end. This could be an issue contacting an upstream service or an internal database error. |