SonicSearch - Search By Track Upload

Search By Track Upload

In this scenario, you can find tracks matching another track by uploading it to our servers.

Uploading A Track

Most Sonic Searches are initiated from a track upload. You can initiate this upload however you like; all we care about is the POST endpoint. We even support Access-Control-Allow-Origin: * for XHR form uploads, if you’d like to support drag and drop or file progress on newer browsers.

Unlike other API calls, which are made to your own installation of SourceAudio, uploads must go to Then you just post your file under the name file and our system will save it given the id you provided. Your id should not contain any special characters [_a-zA-Z0-9\-] and should be as unique as possible so it doesn’t conflict with other uploads from your site. Internally, we just do a timestamp plus a random string. You will most likely find success in a similar approach. The id will be valid for hours, but it is assumed you will use it immediately, and we cannot guarantee its longevity.


This request will return when the upload is complete.

Param Required Description
token yes Your authentication token
file yes Your file, submitted as form-data
id no The ID described above which allows you to specify a unique ID for subsequent requests.

Example Response

"success": "File Uploaded."


Processing An Upload

After your upload is complete, you must trigger the SonicSearch process. Depending on track length, this can take up to 20-30 seconds. Just pass in your id and format (mp3, aiff, etc) from the upload, and it’ll give you back a search_id.

Param Required Description
format yes The format in which you uploaded the track which you would like to use for processing.
id no The ID you used to upload the track
name no The filename of the track you uploaded and would like to process

Example Response

"search_id": 107383


Retrieving Matches

Now that you have a search_id, you can retrieve your matches. Matches are generated at the time of the request, not the time of the generated search. This means that if you want to save a popular search_id for use later, the matches will update with additional tracks as they are added to your library.

See the search documentation here