SlideShare a Scribd company logo
Techcrunch   hackathon!
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
>660K Developers on @twitterAPI
>900K applications +
The Officially Owned and Operated ones
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
Every tweet that comes from quora to
twitter results in 30 clicks per tweet.
⇢ Charlie Cheever, Co-Founder
Flipboard sees 50-80% lift in retention
from users who have signed into
Twitter versus those who have not.
Twitter is just three things:
Tweets,relationships between those three
And the users, anD Timelines
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
Using the system


    13B API calls       150,000 calls
         per day    ≈   per second
Three main objects

Status Objects → the Tweet (text, author, and metadata)

User objects → username, screen name, avatar

Timelines → orderings of Tweets
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
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
Causing change

Tweeting → a POST to status/update

Following → a POST to friendships/create

DM-ing → a POST to direct_messages/new
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!
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
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
Latency

200ms

100ms

 0ms
Streaming API’s Sample hose

http://stream.twitter.com/1/statuses/sample.json
use curl
⇢uses basic authentication
⇢one connection per username
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
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
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)
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”
Developing for @twitterapi (Techcrunch Disrupt Hackathon)
Developing for @twitterapi (Techcrunch Disrupt Hackathon)
Developing for @twitterapi (Techcrunch Disrupt Hackathon)
Tweet button
Implementing
⇢simple JavaScript to drop
 onto your site
⇢allows you to share URLs,
 and to recommend people to
 follow

Back-end
⇢high speed URL counting API
Follow me at
Questions?   twitter.com/raffi

More Related Content

PDF
Map-of-a-tweet
PDF
Intro to developing for @twitterapi
KEY
Intro to developing for @twitterapi (updated)
KEY
What's happening here?
PPT
Spring 2.0
PDF
Chatting with HIpChat: APIs 101
PPTX
생활코딩 oauth 소개
PDF
Developing for @twitterapi #hack4health
Map-of-a-tweet
Intro to developing for @twitterapi
Intro to developing for @twitterapi (updated)
What's happening here?
Spring 2.0
Chatting with HIpChat: APIs 101
생활코딩 oauth 소개
Developing for @twitterapi #hack4health

Similar to Developing for @twitterapi (Techcrunch Disrupt Hackathon) (20)

PPT
Coalmine spie 2012 presentation - jsw -d3
PPT
A Journo's Intro to Twitter
PDF
Programming to the Twitter API: ReTweeter
PDF
iPhoneアプリのTwitter連携
PDF
Setting up a Twitter account March 2013
PDF
Rick Barron: Twitter Getting Started
PPTX
Development of Twitter Application #1 - Overview
DOCX
Twitter101 handout-landscape
PPT
Social Media for NGOs - new and improved version!
PDF
Social Network Privacy II
PDF
Twitter Protobufs And Hadoop Hug 021709
PDF
@twitterapi at SocialApp Workshop
PPTX
Twitter Technical Training - St. Edward's University Instructional Technology
PDF
Twitter Meetup at the Hacker Dojo
PDF
Why Tweet? Handout
PPTX
HATEOAS 101 - Opinionated Introduction to a REST API Style
PPT
about twitter (basic, history and marketing)
DOC
GO TO GATZ: Twitter Dictionary
PPTX
Major Assignment
KEY
social media week 3: microblogging
Coalmine spie 2012 presentation - jsw -d3
A Journo's Intro to Twitter
Programming to the Twitter API: ReTweeter
iPhoneアプリのTwitter連携
Setting up a Twitter account March 2013
Rick Barron: Twitter Getting Started
Development of Twitter Application #1 - Overview
Twitter101 handout-landscape
Social Media for NGOs - new and improved version!
Social Network Privacy II
Twitter Protobufs And Hadoop Hug 021709
@twitterapi at SocialApp Workshop
Twitter Technical Training - St. Edward's University Instructional Technology
Twitter Meetup at the Hacker Dojo
Why Tweet? Handout
HATEOAS 101 - Opinionated Introduction to a REST API Style
about twitter (basic, history and marketing)
GO TO GATZ: Twitter Dictionary
Major Assignment
social media week 3: microblogging

More from Raffi Krikorian (20)

PDF
Hacking Conway's Law
PDF
Re-architecting on the Fly #OReillySACon
PDF
Real-time systems at Twitter (Velocity 2012)
PDF
Twitter: Engineering for Real-Time (Stanford ACM 2011)
PDF
Securing Your Ecosystem (FOWA Las Vegas 2011)
PDF
#rtgeo (Where 2.0 2011)
PDF
500Startups @ Twitter
PDF
Twitter for CS10 @ Berkeley (Spring 2011)
PDF
Twitter by the Numbers (Columbia University)
KEY
Users and Geo
PDF
Twitter and the Real-Time Web
PDF
Twitter - Guest Lecture UC Berkeley CS10 Fall 2010
PDF
Twitter by the Numbers
PDF
How to use Geolocation in your webapp @ FOWA Dublin 2010
KEY
Twitter API Annotations
KEY
"What's Happening" to "What's Happening Here" @ Chirp
KEY
Energy / Tweet
KEY
Handling Real-time Geostreams
KEY
Adding the "Where" to the "When"
PDF
WattzOn @ ETech 2009
Hacking Conway's Law
Re-architecting on the Fly #OReillySACon
Real-time systems at Twitter (Velocity 2012)
Twitter: Engineering for Real-Time (Stanford ACM 2011)
Securing Your Ecosystem (FOWA Las Vegas 2011)
#rtgeo (Where 2.0 2011)
500Startups @ Twitter
Twitter for CS10 @ Berkeley (Spring 2011)
Twitter by the Numbers (Columbia University)
Users and Geo
Twitter and the Real-Time Web
Twitter - Guest Lecture UC Berkeley CS10 Fall 2010
Twitter by the Numbers
How to use Geolocation in your webapp @ FOWA Dublin 2010
Twitter API Annotations
"What's Happening" to "What's Happening Here" @ Chirp
Energy / Tweet
Handling Real-time Geostreams
Adding the "Where" to the "When"
WattzOn @ ETech 2009

Recently uploaded (20)

PDF
Machine learning based COVID-19 study performance prediction
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Machine Learning_overview_presentation.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Approach and Philosophy of On baking technology
Machine learning based COVID-19 study performance prediction
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Review of recent advances in non-invasive hemoglobin estimation
Per capita expenditure prediction using model stacking based on satellite ima...
Machine Learning_overview_presentation.pptx
20250228 LYD VKU AI Blended-Learning.pptx
sap open course for s4hana steps from ECC to s4
Reach Out and Touch Someone: Haptics and Empathic Computing
Building Integrated photovoltaic BIPV_UPV.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Mobile App Security Testing_ A Comprehensive Guide.pdf
Encapsulation_ Review paper, used for researhc scholars
“AI and Expert System Decision Support & Business Intelligence Systems”
Diabetes mellitus diagnosis method based random forest with bat algorithm
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Network Security Unit 5.pdf for BCA BBA.
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Approach and Philosophy of On baking technology

Developing for @twitterapi (Techcrunch Disrupt Hackathon)

  • 1. Techcrunch hackathon!
  • 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
  • 3. >660K Developers on @twitterAPI
  • 4. >900K applications + The Officially Owned and Operated ones
  • 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
  • 7. Flipboard sees 50-80% lift in retention from users who have signed into Twitter versus those who have not.
  • 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”
  • 27. Tweet button Implementing ⇢simple JavaScript to drop onto your site ⇢allows you to share URLs, and to recommend people to follow Back-end ⇢high speed URL counting API
  • 28. Follow me at Questions? twitter.com/raffi