Send notifications to Android devices via the Notify My Android API. Details about the API are available at

Test Status


gem install ruby-notify-my-android

Usage from command line

You can send notifications from the command line with the notify-my-android script:

$ notify-my-android -k 9d0538ab7b52360e906e0e766f34501b69edde92fe3409e9
Notification sent !

Here are the full set of parameters that it accepts:

Usage: notify-my-android [options]
    -k, --apikey APIKEY              Your API Key
    -p, --priority PRIORITY          Priority (-2,-1,0,1,2)
    -a, --application APPNAME        Name of app
    -e, --event EVENTNAME            Name of event
    -d, --description DESCRIPTION     Notify text

Any parameters unset will use default values except –apikey

Usage as a Gem

Sending a notification via ruby-notify-my-android gem

require 'rubygems'
require 'ruby-notify-my-android'

NMA.notify do |n| 
  n.apikey = "9d1538ab7b52360e906e0e766f34501b69edde92fe3409e9" # can also be list such as ["key1", "key2"]
  n.priority = NMA::Priority::MODERATE
  n.application = "NMA"
  n.event = "Notification"
  n.description = "Your server is under attack!!!"

Using the API

There are only a few commands that are available:

  • notify(notification block): send a notification via the block given (see above) and returns standard API response.

  • verify(apikey): send API call to verify key. returns standard API response.

  • valid_key?(apikey): send API call to verify key. returns true or false.

  • remaining_calls(apikey): send API call to verify key. returns number of remaining calls as integer.

  • version: returns version of this gem

The standard API response for a successful call is as follows:

 @body={"success"=>[{"resettimer"=>"59", "code"=>"200", "remaining"=>"798"}]},
  "<?xml version=\"1.0\" encoding=\"UTF-8\"?><nma><success code=\"200\" remaining=\"798\" resettimer=\"59\" /></nma>\r\n",
 @response={"resettimer"=>"59", "code"=>"200", "remaining"=>"798"}>

The standard API response for a unsuccessful call is as follows:

    [{"code"=>"400", "content"=>"Parameter 'apikey' length is invalid."}]},
  "<?xml version=\"1.0\" encoding=\"UTF-8\"?><nma><error code=\"400\" >Parameter 'apikey' length is invalid.</error></nma>\r\n",
 @response={"code"=>"400", "content"=>"Parameter 'apikey' length is invalid."}>

Note that the @code signifies the success or failure of the HTTP call, not the NMA call. Use the @response for that determination.

Contributing to ruby-notify-my-android

  • Familiarize yourself with the documentation at

  • Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet

  • Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it

  • Fork the project

  • Start a feature/bugfix branch

  • Make tests for your new feature(s). We can't accept non-tested features.

  • Commit and push until you are happy with your contribution

  • Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.

Written by Ken Pepple

Based on Prowly gem ( by Rafael Magana

See LICENSE.txt for further details.