update 11/02/2014 – in process of updating and checking examples – but we know for sure that the Twitter examples are broken.
notes
This post is a collection of many examples of using curl (from a terminal command line) to make API requests. The ones marked with* will run without passwords or api-keys. The responses will generally be in XML, JSON, or HTML
Some of these curl examples will have API keys, user names, and passwords. To run them, you’ll need to replace the keys with your own.
Also, when running from the command line, ampersands ‘&’ will need to be escaped by preceding them with a backslash, like \&
Other characters may need to be escaped, like:
%23 = #
%40 = @
Or you can wrap the entire URL is quotes like this:
curl "dict://dict.org/d:penguin"
tips for finding curl examples
Look in the address bar of your web browser. Copy the entire URL and run it in curl. It will respond with the ‘text’ version of the web page.
displaying JSON on the command line
The respond from curl is raw data. To format JSON data, pipe the output through python, like this:
curl dict://dict.org/d:dog | python -mjson.tool
examples:
dict.org*
curl dict://dict.org/d:antelope
Twitter search (broken)
Twtitter API now requires authentication and will not run from a single curl command, except by using widgets. See this post: https://reactivemusic.net/?p=17428
openweathermap.com*
curl http://api.openweathermap.org/data/2.1/forecast/city/524901
See this post for details: https://reactivemusic.net/?p=6265
vine.com*
curl https://api.vineapp.com/timelines/popular
mashape.com API
Here’s an example of a typical API call which gets the weather in San Francisco. Note I have obscured the API-key.
curl -H "X-Mashape-Authorization: YOUR-MASHAPE-KEY" "https://george-vustrey-weather.p.mashape.com/api.php?_method=getForecasts&location=San%20Francisco"
Here’s the result:
[{"day_of_week":"Wed","high":"63","low":"47","condition":"Mostly Clear"},{"day_of_week":"Thu","high":"66","low":"50","condition":"Partly Cloudy"}]
[Note] more examples in tkzic/mashape
dictionaryapi.com
Here is an example of a request to the Thesaurus API
curl http://www.dictionaryapi.com/api/v1/references/thesaurus/xml/cheese?key=ee2466d2-07a0-40af-b959-abcdeb125f0ca
*pandorabots.com
Here are two examples I just got to work using curl
curl -X POST --data "botid=b0dafd24ee35a477&input=hello" http://www.pandorabots.com/pandora/talk-xml curl -X POST --data "botid=b0dafd24ee35a477&input=Where are you?" http://www.pandorabots.com/pandora/talk-xml
<result status="0" botid="b0dafd24ee35a477" custid="b3422b612633ac87"><input>Where are you?</input><that>I am in the computer at Pandorabots.com.</that></result>
*more pandorabots.com
curl -X POST --data "botid=b0dafd24ee35a477&input=hello" http://www.pandorabots.com/pandora/talk-xml curl -X POST --data "botid=b0dafd24ee35a477&input=Where are you?" http://www.pandorabots.com/pandora/talk-xml curl -X POST --data "botid=b0dafd24ee35a477&input=Lets play some music today." http://www.pandorabots.com/pandora/talk-xml
Google speech API (may be broken – need to check the key)
This is an example of the curl command to run from the command line
the test.flac file is located in tkzic/speech – it contains a recording of the phrase “there are turtles wandering through the city”. If you click on the file it will play through audacity.
curl \ --data-binary @test.flac \ --header 'Content-type: audio/x-flac; rate=16000' \ 'https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&pfilter=2&lang=en-US&maxresults=6'
cosm.com (may be broken)
Today I was finally able to get this working. Reading a Cosm (Pachube) feed from curl and from Max. Here is an example that works in curl: (replace API-KEY with actual key)
curl http://api.cosm.com/v2/feeds/76490/datastreams/Power.xml?key=API-KEY
You can get JSON responses by leaving off the .xml extension or replacing it with .json
Its critical to use “key=…” not “X-ApiKey=…” like in the cosm documentation, or you will get permission errors from curl and Max.
Youtube.com v3 API
Link to documentation: https://developers.google.com/youtube/v3/docs/search/list
Here is an example (minus the api-key) which searches for videos about cats and returns a JSON response
curl "https://www.googleapis.com/youtube/v3/search?key=API-KEY&part=snippet&q=cats"
google.com custom search API
Use this method to have a custom search which searches the whole web…
http://stackoverflow.com/questions/4082966/google-web-search-api-deprecated-what-now
Here is an example of a search using this method with curl – note the API-KEY is removed
curl "https://www.googleapis.com/customsearch/v1?key=API-KEY&cx=012117491442732664551:egvalbpelhq&q=lectures"
Twitter streaming API (broken)
google.com simple search API*
Not really applicable to curl, but it shows something.
curl -A Mozilla http://www.google.com/search?q=linux
coastal wind data API (broken 11/2014)
with a specific lat/lon you can get results along the west coast of us - here's san francisco. This query returns all the current time points for SF curl http://cordc.ucsd.edu/js/COAMPS/query.php?ll=37.78,-122.44\&fmt=json > sf.json lets try for santa cruz curl http://cordc.ucsd.edu/js/COAMPS/query.php?ll=36.99,-122.03\&fmt=json > sc.json
spellout.org API*
very cool api that does phonetic spellings - works!!!! curl http://api.spellout.org/en/convert?text=some%20text\&alphabet=int-icao\&format=json
cosm.com API (PUT request)
This works as of 1/28/2013 curl -v --request PUT --data-binary @./abc.json --header "X-ApiKey: 96PqSh4rj7HzNif3rWms3SUhwaDFGUT0g" http://api.cosm.com/v2/feeds/98281.json