2. At the Techcr unch Disrupt
Ha ckathon - giving a talk about
@twitte rapi & watching people hack!
21 May via Twitter for iPhone
from Pier 94
755 12th Avenue
New York, NY
View Tweets at this place
5. The opportunity
Analytics
Content Interpreting user information (for
Filtering valuable data data signals
Creating rich(real-time) to convey
Surfacingreal-time experiences (for the
Helping users publish the right content
into actionable information for
relevant, meaningful conversations
ecosystem) in exchange for greater to
enterprise users) to facilitate target
at the right time to optimize resonance.
Curation industries
audiences.or interests.
reach and growth.
engagement and manage reputation.
Publishing
Enterprise
6. Every tweet that comes from quora to
twitter results in 30 clicks per tweet.
⇢ Charlie Cheever, Co-Founder
8. Twitter is just three things:
Tweets,relationships between those three
And the users, anD Timelines
9. What is the @TwitterAPI?
REST API
⇢provides Twitter functionality
⇢read / write / read DM (Tweet, Follow, DM, etc.)
Search API
⇢real-time search index
Streaming API
⇢HTTP long poll connection
⇢Tweets in real-time
10. Using the system
13B API calls 150,000 calls
per day ≈ per second
11. Three main objects
Status Objects → the Tweet (text, author, and metadata)
User objects → username, screen name, avatar
Timelines → orderings of Tweets
12. The tweet's unique ID. These Text of the tweet.
IDs are roughly sorted & Consecutive duplicate tweets
developers should treat them are rejected. 140 character
as opaque (http://bit.ly/dCkppc). max (http://bit.ly/4ud3he).
DEPRECATED
{"id"=>12296272736,
"text"=>
"An early look at Annotations:
http://groups.google.com/group/twitter-api-announce/browse_thread/thread/fa5da2608865453", Tweet's
"created_at"=>"Fri Apr 16 17:55:46 +0000 2010", creation
"in_reply_to_user_id"=>nil, The ID of an existing tweet that date.
"in_reply_to_screen_name"=>nil, this tweet is in reply to. Won't
"in_reply_to_status_id"=>nil be set unless the author of the
The author's
The screen name &
"favorited"=>false,
user ID.
user ID of replied to referenced tweet is mentioned.
"truncated"=>false, Truncated to 140
characters. Only tweet author.
"user"=>
possible from SMS. The author's
{"id"=>6253282,
user name. The author's
"screen_name"=>"twitterapi",
The author's biography.
"name"=>"Twitter API",
screen name.
bedded object can get out of sync.
"description"=>
"The Real Twitter API. I tweet about API changes, service issues and
The author of the tweet. This
happily answer questions about Twitter and our API. Don't get an answer? It's on my website.",
"url"=>"http://apiwiki.twitter.com", The author's
"location"=>"San Francisco, CA", URL.
The author's "location". This is a free-form text field, and
"profile_background_color"=>"c1dfee", there are no guarantees on whether it can be geocoded.
"profile_background_image_url"=>
"http://a3.twimg.com/profile_background_images/59931895/twitterapi-background-new.png",
Rendering information
"profile_background_tile"=>false,
for the author. Colors
"profile_image_url"=>"http://a3.twimg.com/profile_images/689684365/api_normal.png",
are encoded in hex
"profile_link_color"=>"0000ff",
values (RGB).
"profile_sidebar_border_color"=>"87bc44", The creation date
13. Timelines
user → a the Tweets a given user has authored
home → the main timeline you would see in a client
Mentions → all the Tweets that @mention a user
14. Causing change
Tweeting → a POST to status/update
Following → a POST to friendships/create
DM-ing → a POST to direct_messages/new
15. Authentication
OAuth 1.0a
⇢ signature based requests
⇢ user driven access to the API
⇢ client differentiated access to the API
Applications don’t have passwords
⇢ applications store tokens for their users
⇢ users can change passwords, but tokens still work
OAuth 2.0
⇢ coming soon!
16. Limits
350 OAuth calls / user / hour / IP
⇢ authenticated calls goes against calling user
⇢ unauthenticated calls goes against calling IP
“Natural” limits
⇢ limits on number of Tweets / DMs sent
⇢ limits on number of follows / unfollows a day
Status Limits
⇢ can’t send “duplicate” tweets
17. Streaming API
Persistent connections
⇢get pushed a tweet, in real-time, that matches your predicate
⇢“push” version of search
⇢read-only
User streams / Site streams
⇢re-create the client experience using streams
⇢great for “client” experiences
19. Streaming API’s Sample hose
http://stream.twitter.com/1/statuses/sample.json
use curl
⇢uses basic authentication
⇢one connection per username
20. Streaming API’s Track and follow
http://stream.twitter.com/1/statuses/filter.json
Track
⇢watch a particular keyword
⇢up to 200 can be sent as CSV with track parameter
Follow
⇢get all the tweets (RTs, etc.) from a particular user
⇢up to 400 can be issued as CSV with follow parameter
21. Search API
Real-time search index
⇢Tweets indexed in <10 seconds
⇢1.5 billion requests a day
Search Corpus
⇢index goes back 7-10 days depending on traffic
⇢contains the best quality Tweets
22. Querying the Search API
http://search.twitter.com/search.atom?q= !
Use Curl
⇢ unauthenticated
⇢ rate-limited by IP address
Parameters
⇢ just put your query in the q parameter
⇢ use from to restrict to a particular username
⇢ OR to combine queries (q=techcrunch+OR+disrupt)
⇢ - to negate (q=techcrunch+-from=%3Araffi)
23. Tools of the Trade
dev.twitter.com
⇢ documentation central
⇢ create and register new applications
twurl
⇢ OAuth enabled version of curl
⇢ allows you to manually test authenticated and unauthenticated REST
Twitter for Mac
⇢ built in “developer console”