The backslashes went a bit wonky there, but yes, that’s more or less what I’m using. I think in most cases -d (instead of -r/–rawdata) is enough for the content part.
twurl -H upload.twitter.com -A 'Content-Type: application/json' '/1.1/media/metadata/create.json' -r '{"media_id":"692797692624265216","alt_text":{"text":"dancing cat"}}'
Oh, maybe you’re not the correct person to report this to, but I just noticed alt text is not supported for videos. I understand the web player doesn’t have a simple HTML tag for that, but how to handle alt text is up to clients anyway, so it’d be nice if the API would pass it through for videos as well. Could you let the person in charge of that know?