curl -X POST https://api.bota.dev/v1/recordings/rec_abc123/upload-url \ -H "Authorization: Bearer sk_live_..." \ -H "Content-Type: application/json" \ -d '{ "content_type": "audio/wav", "file_size_bytes": 2048576 }'
{ "upload_url": "https://bota-uploads.s3.amazonaws.com/proj_xxx/rec_abc123/audio.wav?X-Amz-Algorithm=AWS4-HMAC-SHA256&...", "expires_at": "2025-01-15T12:00:00Z", "headers": { "Content-Type": "audio/wav" } }
Generate a pre-signed URL to upload audio directly to S3
rec_abc123
audio/wav
audio/mpeg
audio/mp4
audio/webm
audio/ogg
audio/flac
curl -X PUT "https://bota-uploads.s3.amazonaws.com/..." \ -H "Content-Type: audio/wav" \ --data-binary @recording.wav
const fs = require('fs'); const audioBuffer = fs.readFileSync('recording.wav'); await fetch(upload_url, { method: 'PUT', headers: { 'Content-Type': 'audio/wav', }, body: audioBuffer, });
with open('recording.wav', 'rb') as f: audio_data = f.read() requests.put( upload_url, headers={'Content-Type': 'audio/wav'}, data=audio_data, )