API Documentation

Quick Start

Process audio in three simple steps: upload, process, download.

const response = await fetch('https://tq7pkqhuee.execute-api.us-west-2.amazonaws.com/dev/process', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'YOUR_API_KEY'
  },
  body: JSON.stringify({
    file_key: 'uploads/your-file.wav',
    options: {
      cleanup: true,
      preset: 'podcast_clean',
      generate_waveform: false
    }
  })
});

const data = await response.json();
console.log(data);

Authentication

All API requests require an API key passed in the x-api-key header.

Get your API key from your account dashboard after signing up.

Base URL

https://tq7pkqhuee.execute-api.us-west-2.amazonaws.com/dev

Endpoints

POST /upload

Get a presigned URL to upload your audio file to S3.

// Step 1: Get presigned upload URL
const uploadResponse = await fetch('https://tq7pkqhuee.execute-api.us-west-2.amazonaws.com/dev/upload', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'YOUR_API_KEY'
  },
  body: JSON.stringify({
    filename: 'audio.wav',
    content_type: 'audio/wav'
  })
});

const { upload_url, file_key } = await uploadResponse.json();

// Step 2: Upload file to S3
await fetch(upload_url, {
  method: 'PUT',
  headers: {
    'Content-Type': 'audio/wav'
  },
  body: audioFile
});

Request Body:

filename: string, content_type: string

POST /process

Submit an audio processing job with AI cleanup and mastering.

Request Body:

{
  "file_key": "uploads/uuid/filename.wav",
  "options": {
    "cleanup": true,
    "preset": "podcast_clean",
    "generate_waveform": false
  }
}

Available Presets:

  • Voice: podcast_clean, noise_vocal_heavy, voice_clarity, broadcast_voice, interview_cleanup
  • Music: music_pop, music_rock, music_acoustic, music_classical, music_electronic, music_hiphop
  • Normalization: normalize_peak, normalize_lufs_16, normalize_lufs_14, normalize_lufs_18, normalize_rms

POST /transcode/audio

Convert audio between formats with quality presets.

const transcodeResponse = await fetch('https://tq7pkqhuee.execute-api.us-west-2.amazonaws.com/dev/transcode/audio', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'YOUR_API_KEY'
  },
  body: JSON.stringify({
    file_key: 'uploads/your-file.m4a',
    options: {
      outputFormat: 'mp3',
      bitrate: 'high'
    }
  })
});

Formats: mp3, aac, m4a, wav, flac, ogg, opus

Bitrates: low (96k), medium (128k), standard (192k), high (256k), highest (320k)

GET /status/:jobId

Check the status of a processing job.

// Poll job status
const statusResponse = await fetch(`https://tq7pkqhuee.execute-api.us-west-2.amazonaws.com/dev/status/${jobId}`, {
  headers: {
    'x-api-key': 'YOUR_API_KEY'
  }
});

const status = await statusResponse.json();
console.log(status.status); // 'queued', 'processing', 'completed', 'failed'

GET /status/:jobId/download

Get a presigned download URL for completed transcoding jobs.

Returns a 7-day presigned S3 URL for downloading the processed file.

Pricing

Audio Processing

1 credit per minute (AI cleanup + mastering)

Audio Transcoding

0.5 credits per minute (format conversion)

Rate Limits

Free tier: 10 jobs per hour, 100MB max file size, 10 total minutes

Need Help?

Questions or issues? We're here to help.