Some more debug output for completeness: Since this is multipart form data, the oauth signature base string would be just
httpMethod + "&" + url_encode( base_uri ) + "&" + sorted_query_params.each { | k, v | url_encode ( k ) + "%3D" + url_encode ( v ) }.join("%26") where the params is just oauth_* stuff (not the POST params, since we aren't url-encoded) so something like: POST&http%3A%2F%2Ftwaud.io%2Fapi%2Fv2%2Fupload.json&oauth_consumer_key%3DofEzSNkKNMzu4ANhII5g%26oauth_nonce%3D0F9ABB3E-1CC9-4124-8BDF-DEDA50AE5A6B%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1298635432%26oauth_token%3D257264155-voUkUaayPjhrtW4a1Aid2lS2LshC5JDIM9p2LMXO%26oauth_version%3D1.0 (I've tried both https and http, yes being careful to make all the various urls use the same one) Here for instance is the WireShark output for my multipart fields: MIME Multipart Media Encapsulation, Type: multipart/form-data, Boundary: "0xKhTmLbOuNdArY" --0xKhTmLbOuNdArY Content-Disposition: form-data; name="x_auth_service_provider" http://api.twitter.com/1/account/verify_credentials.json --0xKhTmLbOuNdArY Content-Disposition: form-data; name="x_verify_credentials_authorization" OAuth realm="", oauth_consumer_key="ofEzSNkKNMzu4ANhII5g", oauth_token="257264155-voUkUaayPjhrtW4a1Aid2lS2LshC5JDIM9p2LMXO", oauth_signature_method="HMAC-SHA1", oauth_signature="vKxokk1Yqi4OCE%2B5GBIjw/Q2/G0%3D", oauth_timestamp="1298635367", oauth_nonce="F8FF0143-97B2-4693-9EA0-4D96297F1194", oauth_version="1.0" --0xKhTmLbOuNdArY Content-Disposition: form-data; name="sound[message]" Testing ECHO --0xKhTmLbOuNdArY Content-Disposition: form-data; name="sound[file]"; filename="StrumStage_Song.m4a" Content-Type: application/octet-stream ftypM4A M4A mp42[elided for brevity. lots of text] --0xKhTmLbOuNdArY-- -- Twitter developer documentation and resources: http://dev.twitter.com/doc API updates via Twitter: http://twitter.com/twitterapi Issues/Enhancements Tracker: http://code.google.com/p/twitter-api/issues/list Change your membership to this group: http://groups.google.com/group/twitter-development-talk