DEVELOPERS · REST API · FREE ENDPOINTS

Developer API: analyze and master audio over HTTP

Echoteka's analysis, AI-artifact cleanup and mastering engine is available as plain HTTP endpoints. Send a file, get a job id, poll the status and download the result. The endpoints below need no account and no key.

API keys (the X-API-Key header) are not available yet. Nothing on this page needs one.

Endpoints you can call without a key

Base address: https://echoteka.ai. Every endpoint below is public and anonymous.

EndpointWhat it doesCost
POST /api/v2/analyzeMeasures a file: integrated LUFS, peak, duration, sample rate and stereo correlation. With extended=true it also returns the spectrum, a loudness timeline and vectorscope points.Free
POST /api/v2/cleanRemoves the marks AI generators leave in the audio, without mastering. Loudness and tone stay as they are. Returns a job, like mastering.Free within a small quota
POST /api/v2/multipreviewMasters a 24-second fragment from the middle of the track in 2 to 6 styles, so you can compare them by ear. Returns mp3 previews.Free, 6 per day
POST /api/v2/masterMasters one track and returns a job_id.One free full master a day, then credits
POST /api/v2/batchMasters up to 10 files in one request with the same settings. album_mode=1 keeps the loudness balance between tracks.One free run, then one credit per file
GET /api/master/status/{job_id}Progress from 0 to 100 and, once done, the loudness and true-peak figures.Free
GET /api/master/result/{job_id}Downloads the finished file after the status reports done.Free
GET /api/v2/limitsWhat this caller can do right now: free masters left and when they reset, credit balance, upload cap.Free
GET /api/presetsTarget loudness in LUFS for each platform preset, as a map from name to value.Free

Paid credit packs are on sale. The endpoints above are the only public ones.

Quick start with curl

Measure a track

The analysis answers at once, with no job to poll.

curl -X POST https://echoteka.ai/api/v2/analyze \
  -F "file=@track.wav"

Master a track

Mastering starts a job. Poll its status until it reports done, then download the file.

curl -X POST https://echoteka.ai/api/v2/master \
  -F "file=@track.wav" \
  -F "style=standard" \
  -F "target_lufs=-14" \
  -F "out_format=wav"
# -> {"job_id": "..."}

curl https://echoteka.ai/api/master/status/JOB_ID
curl -o master.wav https://echoteka.ai/api/master/result/JOB_ID

Python

import time
import requests

API = "https://echoteka.ai"

with open("track.wav", "rb") as f:
    r = requests.post(f"{API}/api/v2/master", files={"file": f},
                      data={"style": "standard", "target_lufs": -14, "out_format": "wav"})
r.raise_for_status()
job_id = r.json()["job_id"]

while True:
    s = requests.get(f"{API}/api/master/status/{job_id}").json()
    if s.get("error"):
        raise RuntimeError(s["error"])
    if s.get("status") == "done":
        break
    time.sleep(3)

audio = requests.get(f"{API}/api/master/result/{job_id}")
with open("master.wav", "wb") as out:
    out.write(audio.content)

print(s.get("after_lufs"), s.get("true_peak_db"))

Parameters

Send WAV or MP3 for the safest result. The server checks the contents of the file, not only its name.

What the status returns

While a job runs, GET /api/master/status/{job_id} returns progress (0 to 100) and a message. When it is done, the response also carries before_lufs, after_lufs, true_peak_db, lra, target_lufs and duration_sec. An error field explains a failed job.

Limits

Call GET /api/v2/limits before you send a job. It tells you how many free masters are left, when the count resets and what the upload cap is, so you do not hit a limit after the upload. The terms are on the terms page.

Results are not kept for long. Download the file as soon as the job is done.

Use it from an AI assistant

The same engine is wrapped as nine MCP tools: get_service_info, list_presets, check_limits, analyze_track, clean_ai_trace, preview_styles, master_track, batch_master and get_job. The connection steps for Claude Code, Claude Desktop, Cursor and Codex are on the MCP page.

Questions

Do I need an API key?

No, not for the endpoints above. The X-API-Key header is not available yet, and we have no date for it.

Is my audio used to train models?

No. Echoteka downloads the file only to process it. See the privacy policy for the details.

Where do I get the facts an assistant needs?

The short fact sheet for language models is at /llms.txt.

Who do I contact?

Write to support@echoteka.ai.