3. Twitter Dev Ecosystem
● Twitter success
○ Thanks Dev Community !
● API
○
○
○
○
September 2006
Very complete
Open
Free
https://blog.twitter.com/2006/introducing-twitter-api
4. The APIs
● APIs
○ Search API
○ REST API
○ Streaming API
○ https://dev.twitter.com/docs/history-rest-search-api
● Versions
○ API version 1 (almost deprecated)
○ API version 1.1
6. Authentication
● OAuth
○ Each API request must be authorized
○ Access token on behalf of a Twitter user
● Obtaining access token
○
○
○
○
○
Sign in with Twitter
3-legged OAuth
Pin based OAuth
dev.twitter.com
...
https://twitter.com/settings/applications
8. Rate limiting
● Rate limit window duration
○ 15 minutes
● Requests allotted
○ per user
○ via application-only auth
● Example
○ GET statuses/user_timeline
○ per user: 150 requests per 15 minutes
○ via app: 300 requests per 15 minutes
https://dev.twitter.com/docs/rate-limiting/1.1/limits
9. Other technical limits
● Direct messages
○ 250 per day
● Tweets
○ 1,000 per day
○ Retweets are counted as Tweets.
● Changes to account email
○ Four per hour
● Following
○ 1,000 per day
● Following (account-based)
○ up to following 2,000 other users
10. Platform objects
● Tweets can be found alone, within user objects, but
●
●
●
most often within timelines
Users can be found tweeting, following, and
favoriting on Twitter
Entities are most often found within Tweets
Places can be found throughout the natural universe,
but typically only appear attached to Tweets on Twitter
11. Objects type
● JSON !
● XML output will be dropped soon
○ Only JSON output with API 1.1
● Be careful with ids (64 bits)
○ use String version (especially if using Javascript)
○ Twitpocalypse
■ https://dev.twitter.com/docs/twitter-ids-json-and-snowflake
○ Idpocalypse
■ https://dev.twitter.com/blog/64-bit-twitter-user-idpocalypse
18. Search API
● Similar to http://search.twitter.com
● Criteria
○
○
○
○
○
○
terms
geocode
language ("Language detection is best-effort")
count, until, since-id, max-id
result type: mixed, recent, popular
include entities
● Paginated !
○ you have to manage this by yourself
20. Streaming API
● Persistent HTTP connection
○ until you decide to close it
● Could be reeeeaaaaaaally huge !
○ Think about you architecture (hard and soft) !
○ Separate storage and consumption
● Only one stream opened at a time
● Could be tricky to managed
○ Use a library
21. Streaming API endpoints groups
● Public Streams
○ GET statuses/sample
○ POST statuses/filter
○ GET statuses/firehose (limited access)
● User Streams
○ Data and events for a specific user
● Site Streams (beta and limited access)
○ Real time update for large number of users