I would like to tweet a message using terminal.

I tried something like:

curl -u 'TwitterUsername':'TwitterPassword' -d status=”Your Message Here” https://twitter.com/statuses/update.xml

but seems this isn't working anymore.

I get a error like this one:

<?xml version="1.0" encoding="UTF-8"?>
    <error code="53">Basic authentication is not supported</error>

So, how could we tweet from the terminal?

PS.: my motivation to this is because I use the Yakuake terminal a lot, and it would be awesome to tweet from there.

7 Answers 7


This error message is because Twitter needs OAuth for authentication. Take a look at TTYtter if you don't mind a Perl app:

Noooo, not another Twitter client! Yes, another Twitter client. The difference here is that you're dealing with a multi-functional, fully 100% text, Perl command line client.

  • In interactive mode, it is a fully interactive client with asynchronous background updates and commands. Use it over telnet, ssh or even a dummy terminal. Supports Streaming API, ANSI colour, UTF-8, hashtags and Twitter Search!
  • Works within your favourite environment: use a compatible readline library (like our own bespoke Term::ReadLine::TTYtter), or modify prompt and input methods for many popular window and session managers. Or don't: basic editing and screen management features built-in.
  • From the command line, use it to update your Twitter in shell scripts, from cron, and so on.
  • Security: Supports Twitter OAuth and HTTP Basic Authentication, and SSL where supported by your user agent.
  • Notification support with Growl and libnotify (and extendable to others via the API).
  • Geolocation support: hand your GPS coordinates to TTYtter for any application.
  • Lists support, including fast creation and modification, and merging lists with your timeline as "custom timelines."
  • Supports Twitter-alike APIs such as StatusNet and Identi.ca.
  • Supports standard timelines and automatically fetches direct messages, and optionally replies/mentions, and runs queries against the Search API and incorporates them into your timeline as well.
  • New and old re-tweet support.
  • Write and use your own custom extensions!
  • Run detached in -daemon mode, and make your own Twitter bot!

TTYtter has been deprecated. Development now continues in the fork, oysttyer.

  • 2
    +1 for TTYtter. I'm not a huge fan of Twitter, but it's definitely is one of the better clients. The Irssi plugin isn't that great, compared to TTYtter.
    – polemon
    Commented Jul 1, 2012 at 17:04

Try T. Very powerful, easy to use and written in Ruby.

For example, you can tweet directly from the terminal, by executing:

t update "I'm tweeting from the command line."

2016 Update

There is a project called Twurl - an OAuth-enabled curl for the Twitter API:

Twurl is like curl, but tailored specifically for the Twitter API. It knows how to grant an access token to a client application for a specified user and then sign all requests with that access token.

It also provides other development and debugging conveniences such as defining aliases for common requests, as well as support for multiple access tokens to easily switch between different client applications and Twitter accounts.

Instead of this from the question:

curl -d status="Your Message Here" https://twitter.com/statuses/update.xml

you use something like this:

twurl -d status="Your Message Here" /1.1/statuses/update.json

after you authorize yourself first as explained in the readme.

(note that you don't have to use the protocol and hostname in the URL as you would with curl)

This program was originally written by Marcel Molina who worked at Twitter at that time and it is now an official Twitter project on GitHub.

Many people are asking specifically how to use curl to use the Twitter API and twurl is probably the closest to curl as you can get today.


Try twidge.

sudo apt install twidge
twidge setup
twidge update "Trying tweeting from linux command line - twidge."
  • 1
    FYI the version of twidge in older repos (Debian Wheezy) is using the now-obsolete v1 Twitter API. The new version of twidge works well though.
    – cherdt
    Commented Jan 1, 2017 at 16:32

Take a look at Rainbow Stream - smart/beautiful and written in Python. It provides a rainbow shell which can start by

$ rainbowstream

and inside the app, updating a status is quite easy with

[@yourTwitterName]: t tweeting from #rainbowstream
  • 1
    Interesting Software. But could you given an example of how to tweet directly from the console? Since the question is about tweeting directly from the console. Commented Jul 18, 2014 at 4:24

I have created a Twitter client that can tweet from the command line, as mentioned at Software Recommendations.

To tweet a message

java -jar EmailTweetor.jar tweet hello.txt


echo "Hello" | java -jar EmailTweetor.jar tweet

To tweet with an image:

java -jar EmailTweetor.jar tweet hello.txt image.jpg

EmailTweetor for Desktop

The computer where the command is launched will need to have OpenJDK or Oracle Java v1.8 or later. The JAR also needs a one-time authorization with Twitter.

# nohup watch.sh /home/watchers/ &

[ $# -eq 0 ] && return
exec >> /tmp/rainbowstream.log
exec 2>&1
while inotifywait -qe create $1;do
    printf "t $(date +'%Y-%m-%dT%H:%M:%S') event message\nq" > /tmp/t
    rainbowstream < /tmp/t

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .