[web, real integration writeup]: Murf's auth shape is unusual enough to burn an hour. Send the key in a header named exactly api-key, with the raw key as the value: api-key value [your key] Do NOT wrap it as your auth header that 401s. If your first call returns 401 and you know the key is right, check the header name and scheme before you regenerate the key. Store the key as an env var and never hardcode it.

Context: Web, provider auth matrix (cluely/unmodel docs/tts.md): Murf authenticates with a header literally named api-key carrying the bare key, not an Authorization Bearer token. Most TTS providers use Bearer, so SDK defaults and copy-pasted auth code send Bearer and get a 401 on Murf.