@esome: It’s likely that the library you’re using to make the request is also encoding the input text.
For example, if status=hello%20there is passed in when making a request to the POST accounts/:account_id/tweet endpoint and the library encodes the input text, the result will be something like: hello%2520there.
Using twurl and the -t flag, you can compare the outcome using -d, which auto-encodes the text:
$ twurl -t -H ads-api.twitter.com "/1/accounts/xxxxx/tweet" -d "status=hello there"
...
"status=hello+there"
...
$ twurl -t -H ads-api.twitter.com "/1/accounts/xxxxx/tweet" -d "status=hello%20there"
...
"status=hello%2520there"
...
Using twurl, if you want to pass in encoded data, you could use the --raw-data option:
$ twurl -t -H ads-api.twitter.com "/1/accounts/xxxxx/tweet" --raw-data "status=hello%20there"
...
"status=hello+there"
...
The announcement that @andypiper posted relates to a fix of a double-decoding issue. Because we were decoding text twice, your previous requests worked. Moving forward, please pass in non-encoded text.
Hope this helps!