sonicAPI.com provides an interface for developers to integrate high quality audio processing into their apps. The service is controlled with HTTP requests and is located at api.sonicAPI.com. It follows a file-based strategy and working with the API usually involves the following main steps:
- upload an audio file,
- apply effect processing or analyze, and
- download the result file.
account and access_ids
By signing up you enabled your free developer account. In order to use the sonicAPI.com service you need to transmit a valid access_id with each API request. It is important that you keep your access_ids confidential (we recommend using https with our API), since it allows us to log all interactions with our API and to assign the workload etc. to your account. You can create as many access_ids as you require; we recommend one access_id per app or website.
tasks and file_ids
A so-called task is either an audio effect (process) or the analysis of the audio file (analyze). Process tasks result in a new audio file (containing the modified input file data) and analyze tasks extract information from the music file (e.g., the tempo). See the menu on the right for a list of currently available tasks. Input files can be uploaded with file/upload; all files on the server can be downloaded through their unique file_id (file/download). Note that the output file of one task may be used as an input to the next task by utilizing the provided file_id.
blocking vs. non-blocking tasks
There are two different ways of executing tasks: blocking and non-blocking.
The response of a blocking call is directly its result. Depending on file size and task it may take some time until the response is sent. In the case of non-blocking requests, however, you have to do every step individually. While not as simple as the blocking call, the non-blocking call has two main advantages: it is possible to request progress info (in case of long files), and it allows you to run several processing tasks at once even from a single-threaded application.
There is also a special case of a blocking call: it allows you to upload, process or analyze, and download the result with one call. To learn more about this see the one-click example in each task description.