# audio_proxy > An on-the-fly audio transcoding proxy. A signed URL names a source and the variant you want from it — format, bitrate, trim, fades, loudness, waveform peaks — and the proxy renders it with ffmpeg, streams it while it encodes, and caches it for later requests. URLs are the entire API: no request bodies, no server-side state, and the normalized options string is the cache key. This is the complete reference. Everything needed to construct a correct URL and interpret every response is below; no follow-up fetch is required. ## Endpoints ``` GET /{signature}/{options}/{source} a rendered audio variant, or waveform peaks GET /{signature}/info/{source} the source's own metadata, as JSON GET /health liveness, unsigned GET /ready readiness, unsigned GET /metrics Prometheus scrape — on a separate, bind-restricted listener ``` `/metrics` is deliberately not on the main listener: it is bound to `AP_METRICS_BIND:AP_METRICS_PORT` (default `127.0.0.1:9568`), and a request for `/metrics` on the main port answers `404`. Only `GET` and `HEAD` are served. Any other method is a `404` everywhere — a `405` would confirm a route's shape without telling a client anything useful. The single exception is `OPTIONS` when `AP_ALLOW_ORIGIN` is set, which answers the CORS preflight with `204`, `Access-Control-Allow-Methods: GET, HEAD`, an echo of `Access-Control-Request-Headers` and `Access-Control-Max-Age: 86400`. CORS is off by default: no `Access-Control-*` header is sent anywhere, which is all an `