CINXE.COM
Frequently Asked Questions | Twitter Developers
<!DOCTYPE html><head><script type="text/javascript" src="https://web-static.archive.org/_static/js/bundle-playback.js?v=7YQSqjSh" charset="utf-8"></script> <script type="text/javascript" src="https://web-static.archive.org/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="https://web-static.archive.org/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://dev.twitter.com/docs/faq","20121214180641","https://web.archive.org/","web","https://web-static.archive.org/_static/", "1355508401"); </script> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_static/css/banner-styles.css?v=p7PEIJWi" /> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Frequently Asked Questions | Twitter Developers</title> <script type="text/javascript">var _sf_startpt=(new Date()).getTime()</script> <script src="https://web.archive.org/web/20121214180641js_/https://platform.twitter.com/widgets.js" type="text/javascript"></script> <link rel="shortcut icon" href="/web/20121214180641im_/https://dev.twitter.com/sites/all/themes/twitter_commons/favicon.ico" type="image/x-icon"/> <meta name="twitter:card" content="summary"/> <meta name="twitter:site" content="@twitterapi"/> <meta name="twitter:url" content="https://web.archive.org/web/20121214180641im_/https://dev.twitter.com/docs/faq"/> <link type="text/css" rel="stylesheet" media="all" href="https://web.archive.org/web/20121214180641cs_/https://dev.twitter.com/sites/default/files/css/css_2145d3e8c81045ee95068e0e7337ceba.css"/> <script type="text/javascript" src="https://web.archive.org/web/20121214180641js_/https://dev.twitter.com/sites/default/files/js/js_7bc6881be35cd29d665009dcf2a18ee0.js"></script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- jQuery.extend(Drupal.settings, {"basePath":"\/","googleanalytics":{"trackOutgoing":1,"trackMailto":1,"trackDownload":1,"trackDownloadExtensions":"7z|aac|avi|csv|doc|exe|flv|gif|gz|jpe?g|js|mp(3|4|e?g)|mov|pdf|phps|png|ppt|rar|sit|tar|torrent|txt|wma|wmv|xls|xml|zip"},"chartbeat":{"uid":42587,"domain":"dev.twitter.com"},"extlink":{"extTarget":"_blank","extClass":"ext","extSubdomains":0,"extExclude":"twitter\\.com\/intent\/","extInclude":"","extAlert":0,"extAlertText":"","mailtoClass":"mailto"},"twitter_autosuggest":{"path":"\/twitter_autosuggest_callback"},"AjaxLoad":{"css":["\/modules\/book\/book.css","\/modules\/node\/node.css","\/modules\/system\/defaults.css","\/modules\/system\/system.css","\/modules\/system\/system-menus.css","\/modules\/user\/user.css","\/profiles\/drupal_commons\/modules\/contrib\/cck\/theme\/content-module.css","\/profiles\/drupal_commons\/modules\/contrib\/ctools\/css\/ctools.css","\/profiles\/drupal_commons\/modules\/contrib\/date\/date.css","\/profiles\/drupal_commons\/modules\/contrib\/filefield\/filefield.css","\/profiles\/drupal_commons\/modules\/contrib\/views_slideshow\/contrib\/views_slideshow_singleframe\/views_slideshow.css","\/sites\/default\/files\/geshifilter-languages.css","\/sites\/all\/modules\/contrib\/geshifilter\/geshifilter.css","\/sites\/all\/modules\/contrib\/panels\/css\/panels.css","\/sites\/all\/modules\/contrib\/tableofcontents\/tableofcontents.css","\/sites\/all\/modules\/custom\/twitter_apps\/twitter_apps.css","\/sites\/all\/modules\/overriden\/mollom\/mollom.css","\/sites\/all\/modules\/contrib\/extlink\/extlink.css","\/profiles\/drupal_commons\/modules\/contrib\/cck\/modules\/fieldgroup\/fieldgroup.css","\/profiles\/drupal_commons\/modules\/contrib\/views\/css\/views.css","\/sites\/all\/modules\/custom\/twitter_autosuggest\/jquery-autocomplete\/jquery.autocomplete.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-defaults.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-style.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-admin-addts.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-homepage.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-menus.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-apidoc.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-notices.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-forms.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-discussions.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-notifications.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-blog.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-pager.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-login.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-tfw.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-issues.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-faq.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-case-studies.css","\/sites\/all\/themes\/twitter_commons\/css\/custom\/twttr-platform-objects.css","\/sites\/all\/themes\/twitter_commons\/css\/overridden\/search.css","\/sites\/all\/themes\/twitter_commons\/css\/overridden\/system.css","\/sites\/all\/themes\/twitter_commons\/css\/overridden\/system-menus.css","\/sites\/all\/themes\/twitter_commons\/css\/overridden\/book.css","\/sites\/all\/themes\/twitter_commons\/css\/overridden\/comment.css","\/sites\/all\/themes\/twitter_commons\/css\/overridden\/tableofcontents.css"],"scripts":["\/misc\/jquery.js","\/misc\/drupal.js","\/profiles\/drupal_commons\/modules\/contrib\/ajax_load\/ajax_load.js","\/profiles\/drupal_commons\/modules\/contrib\/views_slideshow\/js\/jquery.cycle.all.min.js","\/profiles\/drupal_commons\/modules\/contrib\/views_slideshow\/contrib\/views_slideshow_singleframe\/views_slideshow.js","\/sites\/all\/modules\/contrib\/google_analytics\/googleanalytics.js","\/sites\/all\/modules\/contrib\/panels\/js\/panels.js","\/sites\/all\/modules\/contrib\/tableofcontents\/jquery.scrollTo-min.js","\/sites\/all\/modules\/contrib\/tableofcontents\/jquery.localscroll-min.js","\/sites\/all\/modules\/contrib\/tableofcontents\/tableofcontents.js","\/sites\/all\/modules\/overriden\/mollom\/mollom.js","\/sites\/all\/modules\/contrib\/extlink\/extlink.js","\/sites\/all\/modules\/custom\/twitter_autosuggest\/jquery-autocomplete\/jquery.autocomplete.js","\/sites\/all\/modules\/custom\/twitter_autosuggest\/twitter_autosuggest.js","\/sites\/all\/themes\/twitter_commons\/js\/supposition.js","\/sites\/all\/themes\/twitter_commons\/js\/superfish.js","\/sites\/all\/themes\/twitter_commons\/js\/twitter-commons-script.js","\/sites\/all\/themes\/twitter_commons\/js\/secret.js","\/sites\/all\/themes\/twitter_commons\/js\/hashchange.js"]}}); //--><!]]> </script> </head> <body id="page-docs" class="not-front not-logged-in no-sidebars"> <div id="page"> <a href="#content-main" class="skip">Skip to Main Content Area</a> <div id="header-outer"> <div id="header"> <a href="/web/20121214180641/https://dev.twitter.com/" id="logo" title="Home"> Developers </a> <form action="/web/20121214180641/https://dev.twitter.com/docs/faq" accept-charset="UTF-8" method="post" id="search-theme-form"> <input id="search-q" name="search_theme_form" type="text" maxlength="128" size="15" value="Search" title="Enter search terms" placeholder="Search"/> <input id="search-submit" name="op" type="submit" value="Search"/> <input type="hidden" name="form_build_id" id="form-ba1127eed8d04bc08a66c45e54b9c7f4" value="form-ba1127eed8d04bc08a66c45e54b9c7f4"/> <input type="hidden" name="form_id" id="edit-search-theme-form" value="search_theme_form"/> </form> <ul id="title-nav"><li class="expanded first"><a href="/web/20121214180641/https://dev.twitter.com/status" title="">API Health</a><ul class="menu"><li class="leaf first"><a href="/web/20121214180641/https://dev.twitter.com/status" title="">API Status</a></li> <li class="leaf last"><a href="/web/20121214180641/https://dev.twitter.com/issues" title="">API Issues</a></li> </ul></li> <li class="leaf"><a href="/web/20121214180641/https://dev.twitter.com/blog" title="">Blog</a></li> <li class="leaf"><a href="/web/20121214180641/https://dev.twitter.com/discussions" title="">Discussions</a></li> <li class="expanded"><a href="/web/20121214180641/https://dev.twitter.com/docs" title="">Documentation</a><ul class="menu"><li class="leaf first"><a href="/web/20121214180641/https://dev.twitter.com/docs" title="">Overview</a></li> <li class="leaf"><a href="/web/20121214180641/https://dev.twitter.com/docs/api/1.1" title="">REST API v1.1</a></li> <li class="leaf"><a href="/web/20121214180641/https://dev.twitter.com/docs/streaming-apis" title="The Streaming APIs">Streaming API</a></li> <li class="leaf"><a href="/web/20121214180641/https://dev.twitter.com/docs/twitter-for-websites" title="">Twitter for Websites</a></li> <li class="leaf"><a href="/web/20121214180641/https://dev.twitter.com/docs/platform-objects" title="">Field Guide</a></li> <li class="leaf last"><a href="/web/20121214180641/https://dev.twitter.com/docs/recent" title="">Recently updated</a></li> </ul></li> <li class="leaf last"><a href="/web/20121214180641/https://dev.twitter.com/user/login?destination=docs%2Ffaq" title="">Sign in</a></li> </ul> </div> </div> <div id="content-outer"> <div id="breadcrumbs"> <div class="breadcrumb"><a href="/web/20121214180641/https://dev.twitter.com/">Home</a> → <a href="/web/20121214180641/https://dev.twitter.com/docs">Documentation</a><div><span></span></div></div> </div> <div id="preface"> <div class="view"> <div class="content"> <div id="dropdown"> <ul> <li><span class="title">Jump to</span> <ul class="menu"> <li> <a href="/web/20121214180641/https://dev.twitter.com/docs/faq#basics">Basics</a> (12)</li> <li> <a href="/web/20121214180641/https://dev.twitter.com/docs/faq#authentication-rate-limiting">Authentication & Rate Limiting</a> (11)</li> <li> <a href="/web/20121214180641/https://dev.twitter.com/docs/faq#application-management">Application Management</a> (2)</li> <li> <a href="/web/20121214180641/https://dev.twitter.com/docs/faq#finding-counting-things">Finding & Counting Things</a> (3)</li> <li> <a href="/web/20121214180641/https://dev.twitter.com/docs/faq#tweeting">Tweeting</a> (3)</li> <li> <a href="/web/20121214180641/https://dev.twitter.com/docs/faq#advertising">Advertising</a> (3)</li> <li> <a href="/web/20121214180641/https://dev.twitter.com/docs/faq#troubleshooting">Troubleshooting</a> (9)</li> <li> <a href="/web/20121214180641/https://dev.twitter.com/docs/faq#getting-help">Getting help</a> (9)</li> <li> <a href="/web/20121214180641/https://dev.twitter.com/docs/faq#rest-api-v11">REST API v1.1</a> (16)</li> </ul> </li> </ul> </div> </div> </div> </div> <h1 id="title">Frequently Asked Questions</h1> <div id="content-inner"> <div id="content-main"> <div class="view faq"> <div class="header"> <p style="float:right; font-weight:bold;"> <a href="#" onclick="$('.faq blockquote.node-embed').addClass('collapsed')">Collapse answers</a> </p> </div> <div class="content"> <div class="category"> <h2 id="basics">Basics</h2><blockquote class="node-embed"> <h3 id="5824"> How can I keep up with changes to the Twitter API? </h3> <p> There are a two great ways to follow the changes we make to the Twitter platform:</p> <ul> <li>Follow @<a href="https://web.archive.org/web/20121214180641/http://twitter.com/intent/user?screen_name=twitterapi">twitterapi</a>.</li> <li>Keep track of our <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/blog">Developer Blog</a> and <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/discussions">Discussions</a>.</li> <li>See the <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/recent">recently updated documentation</a>.</li> </ul></blockquote><blockquote class="node-embed"> <h3 id="5810"> How do I count out 140 characters? </h3> <p> While Tweets are still limited to 140 characters, the character counting model has evolved over time. Tweets are UTF-8 string content and any UTF-8 character counts as a single character. Strings that are understood as links, such as "http://twitter.com", "twitter.com", "twitter.com/twitterapi" will be automatically converted to t.co. t.co links represent a variant character count (currently "20" for HTTP-based links and "21" for HTTPS-based links). See <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/tco-url-wrapper/how-twitter-wrap-urls">How Twitter wraps URLs with t.co</a> for more information on how t.co plays a role in character counting. <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/counting-characters">Counting Characters</a> provides more details on character counting strategies. </p></blockquote><blockquote class="node-embed"> <h3 id="7447"> How do I obtain an API key? </h3> <p> You can create an application record (which includes an API key) by navigating to <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/apps">Application Management</a>.</p> <p>Most integrations with the API will require you to identify your application to Twitter by way of an API key. On the Twitter platform, the term "API key" usually refers to what's called an OAuth consumer key. This string identifies your application when making requests to the API. In <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/auth/oauth">OAuth 1.0a</a>, your "API keys" might refer to the combination of this consumer key and the "consumer secret," a string that used to securely "sign" your requests to Twitter. Most requests to Twitter require a user context in addition to the application context. User context is presented through the use of another kind of token/key called the "access token." See <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/auth/obtaining-access-tokens">Obtaining access tokens</a> for more information. </p></blockquote><blockquote class="node-embed"> <h3 id="6977"> How do I properly navigate a timeline? </h3> <p> The <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/working-with-timelines">Working with Timelines</a> document describes the optimal way to obtain tweets from timelines such as <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/api/1/get/statuses/home_timeline">GET statuses/home_timeline</a>, <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/api/1/get/statuses/mentions">GET statuses/mentions</a> and <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/api/1/get/statuses/user_timeline">GET statuses/user_timeline</a>.</p> <p>The "count" parameter behaves more closely in concept to an "up to" parameter in that you'll receive up to the number specified in the parameter. You cannot be guaranteed that you'll receive the total amount you've requested, even if the timeline contains at least that many accessible tweets. Parameters such as <span class="geshifilter"><code class="java geshifilter-java">include_retweets<span class="sy0">=</span><span class="kw2">true</span></code></span> and <span class="geshifilter"><code class="java geshifilter-java">exclude_replies<span class="sy0">=</span><span class="kw2">true</span></code></span> effect the number of results timeline methods will yield per request.</p> <p>There are no explicit methods to walk timelines by date or time. Use <span class="geshifilter"><code class="java geshifilter-java">since_id</code></span> and <span class="geshifilter"><code class="java geshifilter-java">max_id</code></span> to consume a timeline linearly. </p></blockquote><blockquote class="node-embed"> <h3 id="6974"> How do I use the REST API over JSON-P? </h3> <p> The REST API supports a callback parameter on nearly all methods. See <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/things-every-developer-should-know#jsonp">Things Every Developer Should Know</a> for more information. </p></blockquote><blockquote class="node-embed"> <h3 id="5809"> How do I use the Twitter platform? </h3> <p> Twitter offers a platform with a number of different ways to interact with it.</p> <p><a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/intents">Web Intents</a>, <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/tweet-button">Tweet Button</a> and <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/follow-button">Follow Button</a> is the simplest way to bring basic Twitter functionality to your site. It provides features like the ability to tweet, retweet, or follow using basic HTML and Javascript. You can also <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/embedded-tweets">embed individual tweets</a>.</p> <p>More complex integrations can utilize our <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/api">REST</a>, <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/using-search">Search</a>, and <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/streaming-apis">Streaming</a> APIs. The Streaming API allows you to stream tweets in real time as they happen. The Search API provides relevant results to ad-hoc user queries from a limited corpus of recent tweets. The REST API allows access to the nouns and verbs of Twitter such as reading timelines, tweeting, and following.</p> <p>To use the REST and Streaming API, you should register an application and get to know the ways of <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/auth/oauth">OAuth</a> and explore <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/twitter-libraries">Twitter Libraries</a>. </p></blockquote><blockquote class="node-embed"> <h3 id="5811"> What is the version of the REST API? </h3> <p> There are currently two active versions of the <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/api">Twitter REST API</a>.</p> <p><a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/api/1.1">REST API version 1.1</a> is the most recent version of the API. To unifying versioning across the platform, version 1.1 also encompasses the Search and Streaming APIs.</p> <p><a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/api/1">REST API version 1</a> is now deprecated and will cease functioning in March 2013. Move to version 1.1 as soon as possible. The concept of "version 1" of the API includes unversioned APIs like the Search API. </p></blockquote><blockquote class="node-embed"> <h3 id="7668"> What kind of data can I get from the API? </h3> <p> To explore the kind of data available to you in the API, browse the <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/api">available resources</a> and this <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/platform-objects">field guide</a> to the most commonly accessed platform objects. </p></blockquote><blockquote class="node-embed"> <h3 id="7917"> What kind of data does the Twitter Platform capture? </h3> <p> Like many companies, Twitter receives log data from visits to websites that use our social widgets, such as our Tweet and Follow buttons. This log data may include information such as IP address, browser type, the referring web page, pages visited, cookies, and other interactions with the buttons or widgets as outlined in our privacy policy: <a href="https://web.archive.org/web/20121214180641/https://twitter.com/privacy" title="https://twitter.com/privacy" rel="nofollow">https://twitter.com/privacy</a> </p></blockquote><blockquote class="node-embed"> <h3 id="5808"> What's an API? </h3> <p> The acronym "API" stands for "Application Programming Interface". An API is a defined way for a program to accomplish a task, usually by retrieving or modifying data. In Twitter's case, we provide an API method for just about every feature you can see on our website. Programmers use the Twitter API to make applications, websites, widgets, and other projects that interact with Twitter. Programs talk to the Twitter API over HTTP, the same protocol that your browser uses to visit and interact with web pages. </p></blockquote><blockquote class="node-embed"> <h3 id="6536"> What's the difference between User Streams and Site Streams? </h3> <p> <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/streaming-apis/streams/user">User streams</a> provides a way for a single user to be streamed the equivalent of their home timeline (the tweets authored by the users they follow) and mentions timeline (the tweets authored by users @<a href="https://web.archive.org/web/20121214180641/http://twitter.com/intent/user?screen_name=mentioning">mentioning</a> that user). It also offers the ability to be streamed DMs received by the user when permissioned. In addition to those data points, events like other users favoriting or retweeting that user's tweets, users following that user (or that user following other users), and so on.</p> <p>Think of it as a "me feed" -- everything about Twitter the service as it relates to "me" the account holder. TweetDeck, Twitter for Mac, and Tweetbot for iPad all use User Streams to stream these tweets and related events about a single user in real-time.</p> <p><a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/streaming-apis/streams/site">Site streams</a> is an expansion of this concept for services that want to stream the equivalent of this "me feed" on behalf of many users at a time. This makes Site Streams appropriate for web sites and services that act on behalf of many mutual users in a centralized fashion. User Streams is more appropriate for a single-user client-side application or a very limited server scenario while developing a bot that responds to DMs, for example.</p> <p>User Streams also allows a user to track a limited amount of real-time "searches" on public tweets, mixed in with the "me feed." Site Streams does not offer this ability directly. </p></blockquote><blockquote class="node-embed"> <h3 id="6981"> Why are embedded objects stale or inaccurate? </h3> <p> It's best to go to the primary resource for a definitive "answer" about something. Information about tweets should come from methods in the statuses namespace. Information about users from the users namespace. Information about following relationships in the friends/followings/followers/friendships namespaces and so on.</p> <p>When calling a method without authentication, there is no user context/agency to determine whether the "current user" is following the user embedded within the status. In those cases the typically boolean field is neither true nor false, but null.</p> <p>The Twitter API has been around for awhile now. We're still on version 1, but we've got to make up for decisions made years ago while maintaining overall compatibility. One early decision made on the API was to include what's called perspectival attributes embedded within a child object of an unlike parent object. For example, tweets are the parent object, users are the child object, and whether the current user making the request is following that child user object or not is the perspectival "following" attribute. As the service has grown, these kind of inner values have become harder to maintain at scale.</p> <p>When you make the request using authentication, we make a best effort to return to you a accurate, up to date, and perspectivally-contextual response, starting with the primary object in the highest priority and diminishing from there. If we can't determine the following status in a timely fashion (due to having to make rapid calculations while serving the caller the object), we'll respond with "null" rater than "true" or "false" because the status is indeterminate. </p></blockquote></div><div class="category"> <h2 id="authentication-rate-limiting">Authentication & Rate Limiting</h2><blockquote class="node-embed"> <h3 id="7188"> Do Twitter's OAuth 1.0A access tokens expire? </h3> <p> The access tokens yielded to your through the OAuth process do not have an explicit expiration datetime attached to them. They will be valid for use when making requests on behalf of your users for as long as the user has granted your application access. A user can revoke access to your application at any time.</p> <p>Please note that the strings representing access tokens are not static -- if a user revokes your application or otherwise transits from one permission level to another (such as from read-only to read-write), the strings will be altered. </p></blockquote><blockquote class="node-embed"> <h3 id="6861"> How are rate limits determined on the Streaming API? </h3> <p> The public streaming APIs cap the number of messages sent to your client to a small fraction of the total volume of Tweets at any given moment.</p> <p>The sample hose, as documented in <a href="https://web.archive.org/web/20121214180641/https://stream.twitter.com/1/statuses/sample.json" title="https://stream.twitter.com/1/statuses/sample.json" rel="nofollow">https://stream.twitter.com/1/statuses/sample.json</a>, delivers a random sampling of all Tweets at a volume equal to the public streaming cap.</p> <p>Filtered streams return all matching Tweets up to a volume equal to the streaming cap. If there are more tweets that would match your criteria, you'll be streamed a rate limit message indicating how many tweets were not delivered. </p></blockquote><blockquote class="node-embed"> <h3 id="7189"> How do I get access tokens from my iOS native Twitter application to my server? </h3> <p> <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/ios/using-reverse-auth">Using Reverse Auth</a> is a method of converting the access representations available in the <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/ios">Integrating with Twitter on iOS</a>. </p></blockquote><blockquote class="node-embed"> <h3 id="5823"> How do I keep from running into the rate limit? </h3> <ul> <li>Caching. We recommend that you cache API responses in your application or on your site if you expect high-volume usage. For example, don't try to call the Twitter API on every page load of your hugely popular website. Instead, call our API once a minute and save the response to your local server, displaying your cached version on your site. Refer to the Terms of Service for specific information about caching limitations.</li> <li>Rate limiting by active user. If your site keeps track of many Twitter users (for example, fetching their current status or statistics about their Twitter usage), please consider only requesting data for users who have recently signed in to your site.</li> <li>Scale your use of the API with the number of users you have. When using OAuth to authenticate requests with the API, the rate limit applied is specific to that user_token. This means, every user who authorizes your application to act on their behalf, has their own bucket of API requests for you to use.</li> <li>Request only what you need, and only when you need it. For example, polling the REST API looking for new data is inefficient for both your application, and the Twitter API. Instead consider using one of the Streaming APIs as a signal of when to make REST API requests.</li> <li>Consider using a combination of the APIs to achieve your goal. You can't do everything with one API, but by combining them you can do most things. For example, instead of using the <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/api/1/get/search">Search API</a> for all your querying, use the <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/streaming-apis">Streaming API</a> to track keywords and follow users Tweets, and save the Search API for the more complex queries.</li> </ul> <p>These are just some example strategies. To work out different solutions for you to achieve your goals, search through <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/discussions">discussions</a> on the topic or start your own. </p></blockquote><blockquote class="node-embed"> <h3 id="6718"> How do I obtain a user's email address? </h3> <p> If you'd like a user's email address, you'll need to ask a user for it within the confines of your own application and service. The Twitter API does not provide the user's email address as part of the OAuth token negotiation process nor does it offer other means to obtain it. </p></blockquote><blockquote class="node-embed"> <h3 id="6461"> How do password resets effect application authorization? </h3> <p> When using OAuth, application connectivity and permissions do not change when a user resets their password on twitter.com. The relationship between Twitter, a user, and a third-party application do not involve a username and password combination. When a Twitter user changes their password, we'll now ask the user whether they would also like to revoke any of their application authorizations, but any revocations are manually executed by the end user.</p> <p>As of March 12, 2012 it is still possible to connect to the <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/streaming-apis">The Streaming APIs</a> via Basic Auth credentials. If the password belonging to a user account that connects to the Streaming API via basic auth is changed, the new password will need to be used to regain that connection. </p></blockquote><blockquote class="node-embed"> <h3 id="6868"> How long do I have to wait when requesting xAuth? </h3> <p> Most xAuth requests will be processed within 72 business day hours though there are times of increased demand which can extend this duration. Plan accordingly and be sure that your initial request for xAuth access contains everything an API Policy Team member would need to confirm the legitimacy of the request and your readiness for the feature. </p></blockquote><blockquote class="node-embed"> <h3 id="6865"> I don't want to require users to authenticate but 150 requests per hour is not enough for my app, what should I do? </h3> <p> Rethink not wanting to require authentication. It's the primary means to grow your application's capabilities. We recommend requiring authentication to make use of potentially 350 requests per hour per access token/user. Consider also investigating whether the <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/streaming-apis/parameters#follow">Streaming API's follow filter</a> will work for you. </p></blockquote><blockquote class="node-embed"> <h3 id="6466"> I set my app to "read, write, and direct messages" but it still won't let me read my direct messages; why? </h3> <p> Permissions set at the application level are effective only for access tokens generated after the requested permission level is set. If you generated an access token while the permission level was still set to read-only or just read & write, you'll need to renegotiate the access token through the OAuth flow for the access token to hold the upgraded permissions.</p> <p>Changes to permission settings can take a few minutes to apply. </p></blockquote><blockquote class="node-embed"> <h3 id="6460"> What consequences are there to resetting my consumer key and secret? </h3> <p> If your consumer key and secret become compromised for any reason, you may need to reset it to regain secure control of your application's identity and the actions taken in its name. Resetting your consumer key does not reset the strings representing your users (their "access tokens") but does make your access tokens invalid when used with the former key. When your existent access tokens are used with your new consumer key and secret, they will continue functioning as expected. Your new consumer key and secret will be represented by completely different strings than its previous incarnation. </p></blockquote><blockquote class="node-embed"> <h3 id="6869"> What's a placeholder URL? How do I set my callback URL? </h3> <p> In OAuth 1.0a, you're required to send an explicit oauth_callback value on every request to <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/api/1/post/oauth/request_token">POST oauth/request_token</a>, regardless of any pre-registered callback you may have associated with your application or if you're going to be performing out-of-band OAuth (for which you'd provide an <span class="geshifilter"><code class="java geshifilter-java">oauth_callback<span class="sy0">=</span>oob</code></span> value).</p> <p>When you create or edit your application on dev.twitter.com, you need to choose which kind of OAuth authentication you'll be using: standard callback-based OAuth, out-of-band mode OAuth (also known as "PIN-code OAuth" & "OOB OAuth"), or xAuth.</p> <p>If you're exclusively using out-of-band OAuth or xAuth, you want to leave the "Callback URL" field empty. By doing so, your application will not allow for callback-based OAuth to be performed.</p> <p>If you'll be using callback-based OAuth, you want to provide the "Callback URL" field with a fully qualified "placeholder" URL. This URL does not have to be the actual oauth_callback value you'll send on oauth/request_token, but it does need to represent a HTTP or HTTPS-based URL with a TLD we recognize. If you know you'll be performing callback-based OAuth, consider just providing a URL to your home page.</p> <p>You can provide non-standard URI types to oauth/request_token with a dynamic oauth_callback parameter but cannot use such schemes on your application record. </p></blockquote></div><div class="category"> <h2 id="application-management">Application Management</h2><blockquote class="node-embed"> <h3 id="6499"> How do I allow additional users to maintain my application record? </h3> <p> This is not supported at this time and only one user account can maintain an application record. It's recommended to ensure that applications belong to accounts that are directly in an organization or developer's control. See <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/faq/#6498">How do I transfer my application to another account?</a> if it is necessary for you to transfer ownership. </p></blockquote><blockquote class="node-embed"> <h3 id="6498"> How do I transfer my application to another account? </h3> <p> To begin the process fill out the form at <a href="https://web.archive.org/web/20121214180641/https://support.twitter.com/forms/platform" title="https://support.twitter.com/forms/platform" rel="nofollow">https://support.twitter.com/forms/platform</a> by selecting the "I need to transfer an API key to another account" option. Be sure and provide the @<a href="https://web.archive.org/web/20121214180641/http://twitter.com/intent/user?screen_name=username">username</a> you want to become the owner once the process is complete and any other explanation you may think is necessary. It can take a few days to process. </p></blockquote></div><div class="category"> <h2 id="finding-counting-things">Finding & Counting Things</h2><blockquote class="node-embed"> <h3 id="6898"> How do I count favorites? </h3> <p> Favorite counts aren't available as part of tweet objects in the REST, Streaming or Search APIs at this time. <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/streaming-apis/streams/user">User streams</a> and <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/streaming-apis/streams/site">Site streams</a> both stream events when an authenticated user favorites tweets or has their tweets favorited. Using these authenticated streaming APIs, you can count favorites in real-time as they happen. This is currently the only scalable means to count favorite activity. </p></blockquote><blockquote class="node-embed"> <h3 id="6899"> How do I count retweets? </h3> <p> Tweets in the REST and Streaming APIs contain a field called <span class="geshifilter"><code class="java geshifilter-java">retweet_count</code></span> that provides the number of times that tweet has been retweeted. You can obtain the retweet count for any arbitrary tweet by using <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/api/1/get/statuses/show/%3Aid">GET statuses/show/:id</a>.</p> <p>You can count retweets as they happen by using a <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/streaming-apis">The Streaming APIs</a>. In particular, <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/streaming-apis/streams/user">User streams</a> and <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/streaming-apis/streams/site">Site streams</a> allow you to be streamed retweet events about/around an authenticated user in real time. </p></blockquote><blockquote class="node-embed"> <h3 id="7498"> Which timezone is used on date fields within Tweets and other Twitter data? </h3> <p> The <span class="geshifilter"><code class="java geshifilter-java">created_at</code></span> field of Tweets and other objects on Twitter are stored in UTC/coordinated universal time, see <a href="https://web.archive.org/web/20121214180641/http://en.wikipedia.org/wiki/Coordinated_Universal_Time" title="http://en.wikipedia.org/wiki/Coordinated_Universal_Time" rel="nofollow">http://en.wikipedia.org/wiki/Coordinated_Universal_Time</a> for more information.</p> <p>The <span class="geshifilter"><code class="java geshifilter-java">oauth_timestamp</code></span> field used in OAuth 1.0A requests is in UTC-based epoch time in seconds. See <a href="https://web.archive.org/web/20121214180641/http://en.wikipedia.org/wiki/Unix_time" title="http://en.wikipedia.org/wiki/Unix_time" rel="nofollow">http://en.wikipedia.org/wiki/Unix_time</a> for more information.</p> <p>You can find the current time as understood by Twitter's servers by examining the <span class="geshifilter"><code class="java geshifilter-java"><span class="kw3">Date</span></code></span> HTTP header in every API response. </p></blockquote></div><div class="category"> <h2 id="tweeting">Tweeting</h2><blockquote class="node-embed"> <h3 id="6719"> How do I disable t.co when creating a Tweet containing a link? </h3> <p> There is no way to disable t.co. Links are wrapped with t.co to protect users no matter where they are interacting with Tweets. t.co is designed to be mostly transparent to the end-user through the use of <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/tweet-entities">Tweet Entities</a> when rendering tweets, and the original domain will be displayed. See the <a href="https://web.archive.org/web/20121214180641/https://support.twitter.com/articles/109623">t.co FAQ</a> in our support center for more general information about t.co and then learn <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/tco-url-wrapper/how-twitter-wrap-urls">How Twitter wraps URLs with t.co</a>. </p></blockquote><blockquote class="node-embed"> <h3 id="6521"> Why do Tweets starting with D or M return a valid API response but not show up in my timeline? </h3> <p> As described in <a href="https://web.archive.org/web/20121214180641/https://support.twitter.com/articles/14020">Official Twitter Text Commands</a>, Twitter's SMS interface allows for sending direct messages by using either of these formats:</p> <div class="geshifilter"> <div class="java geshifilter-java"> <pre class="de1">D <span class="sy0"><</span>username<span class="sy0">></span> <span class="sy0"><</span>text<span class="sy0">></span> M <span class="sy0"><</span>username<span class="sy0">></span> <span class="sy0"><</span>text<span class="sy0">></span></pre></div> </div> <p>These are valid anywhere you can issue a Tweet - try sending a DM through the Tweet box on twitter.com, for example. Unfortunately, this means that you cannot issue a public Tweet starting with either letter - it will be treated as a DM to the user whose screen name matches the second word in the Tweet.</p> <p>Responses to statuses/update when using these commands will return the most recent tweet rather than a sent direct message. </p></blockquote><blockquote class="node-embed"> <h3 id="6720"> Why won't statuses/update let me post a link to a specific domain name? </h3> <p> Some domain names get identified as spam or malware. If you believe that you should be able to validly use a domain name, see this support article for further instructions: <a href="https://web.archive.org/web/20121214180641/https://support.twitter.com/articles/90491">My Website is Being Flagged as Malware or Spam!</a> and email tcoabuse@twitter.com with details about your domain. </p></blockquote></div><div class="category"> <h2 id="advertising">Advertising</h2><blockquote class="node-embed"> <h3 id="6456"> Is there an Advertising API for posting ads to Twitter? </h3> <p> As of March 12th, 2012 there is not yet an API allowing an advertiser to create or manage Promoted Products campaigns on Twitter. For updates on advertising with Twitter, follow the Twitter Advertising Blog: <a href="https://web.archive.org/web/20121214180641/http://advertising.twitter.com/" title="http://advertising.twitter.com" rel="nofollow">http://advertising.twitter.com</a> </p></blockquote><blockquote class="node-embed"> <h3 id="6458"> Is there an Advertising API for serving Twitter ads in my third party application? </h3> <p> As of March 12, 2012 there is no Advertising API for serving Twitter's promoted products in third party applications. </p></blockquote><blockquote class="node-embed"> <h3 id="6459"> What guidelines are there for using Twitter content (such as Tweets) in advertising campaigns? </h3> <p> The <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/terms/api-terms">Developer Rules of the Road</a>, section IV, part 3 describes the current rules around using Twitter content within advertising. </p></blockquote></div><div class="category"> <h2 id="troubleshooting">Troubleshooting</h2><blockquote class="node-embed"> <h3 id="6903"> How do I contest an application suspension? </h3> <p> See <a href="https://web.archive.org/web/20121214180641/https://support.twitter.com/articles/72585">How To Appeal an Application Suspension</a> from our support center. </p></blockquote><blockquote class="node-embed"> <h3 id="5820"> Is my IP banned or blacklisted? </h3> <p> Being banned or blacklisted means the Twitter APIs will not respond to requests you make to them. You know if you have been blacklisted because the APIs will not respond to you at all. If this happens to you the first thing to do is stop any requests your application is making. Then see if you can reach other URLs using a command line tool like curl. If you can access other URLs but not Twitter, you should login to Twitter.com and then file a ticket with our support team. The support team will then be in contact about next steps.</p> <p>Twitter provides APIs for free and with no guarantees of service availability. This means we may take steps to ban or block any account, IP, or range of IPs that might be harming our ability to provide Twitter in a timely and reliable way.</p> <p>The best way to avoid being blacklisted is to pay attention to the remaining API requests you are allowed to make, and to handle errors appropriately. Handling errors appropriately means reducing your request frequency (throttling) or stopping requests until you can identify why the request failed.</p> <p>If you have sufficiently diagnosed your network connectivity and believe your IP may have been blacklisted, please post to the discussion forums.. Provide as much detail as possible about which steps you've taken to diagnose. </p></blockquote><blockquote class="node-embed"> <h3 id="5819"> Is the Twitter API down? Where can I find information about platform health? </h3> <p> The <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/status">API status</a> page should be the first place you check for this information. There you will find information about average latency, known issues, and occaisionally information about transient service states.</p> <p>Additionally, you can follow @<a href="https://web.archive.org/web/20121214180641/http://twitter.com/intent/user?screen_name=twitterapi">twitterapi</a> for tweets about service health, new features, and more.</p> <p>Finally, the Twitter Status blog at <a href="https://web.archive.org/web/20121214180641/http://status.twitter.com/" title="http://status.twitter.com" rel="nofollow">http://status.twitter.com</a> shares information about service-wide issues that may also effect the platform. </p></blockquote><blockquote class="node-embed"> <h3 id="5817"> What am I doing wrong? </h3> <p> Troubleshooting with the API is usually done with these steps:</p> <ul> <li>Examine the HTTP response closely: the status code you received back, the message that accompanies that code, the HTTP headers in the response, and the response body itself -- the response body usually contains the most specific information about the nature of an error. </li> <li>If you're using OAuth but the response doesn't seem like what you're expecting, look for an X-Warning HTTP header that informs you that your OAuth is invalid. We will often service invalid requests as if OAuth were not sent at all rather than rejecting it.</li> <li>Consult <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/discussions/204">Troubleshooting OAuth 1.0A</a> for tips on troubleshooting OAuth problems.</li> <li>If the response body doesn't help identify the problem, check @<a href="https://web.archive.org/web/20121214180641/http://twitter.com/intent/user?screen_name=twitterapi">twitterapi</a> and <a href="https://web.archive.org/web/20121214180641/https://status.twitter.com/" title="https://status.twitter.com" rel="nofollow">https://status.twitter.com</a> or <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/status">API Status</a> to see if there are any known issues with the API at that time.</li> <li>If you are using your own library, try using another library or curl to see if the same issue occurs. You can find libraries for many programming languages on our <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/twitter-libraries">Twitter Libraries</a> page.</li> <li>If you are still seeing problems send a message <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/discussions">Discussions</a> where Twitter Employees and Community Developers can try and help you. Make sure you include the language you are using, the request that's failing and the response (including headers) that you get back. The more information you provide in the email the quicker somebody can help you out.</li> </ul> <p>Please avoid creating bug reports on the issue tracker until the developer mailing list has tried to help you first. </p></blockquote><blockquote class="node-embed"> <h3 id="6870"> What does HTTP status code 0 mean? </h3> <p> If you're making requests to the Twitter platform and receive an HTTP status code "0," it means that the request never made it to our servers. Investigate whether your HTTP library, programming language, system environment, network and/or proxies are configured to allow traffic over HTTP and HTTPS to the endpoints you will be using. </p></blockquote><blockquote class="node-embed"> <h3 id="11716"> Why am I getting a HTTP 404 for my timeline feed? </h3> <p> If you're requesting a timeline URL that used to work but now does not, you are likely using an outdated URL that has been retired. In <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/blog/api-housekeeping">March of 2012</a> we announced that "unversioned endpoints," <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/api/1/get/statuses/public_timeline">GET statuses/public_timeline</a>, and the v1 REST ATOM response format were deprecated and would eventually cease functioning. In early October 2012, we turned off these endpoints.</p> <p>You can identify unversioned endpoints by examining their URL: <a href="https://web.archive.org/web/20121214180641/http://twitter.com/statuses/user_timeline/twitterapi.rss" title="http://twitter.com/statuses/user_timeline/twitterapi.rss" rel="nofollow">http://twitter.com/statuses/user_timeline/twitterapi.rss</a> is missing both the API version and the "api" subdomain. The correct URL for the same request would be <a href="https://web.archive.org/web/20121214180641/https://api.twitter.com/1/statuses/user_timeline.rss?screen_name=twitterapi" title="https://api.twitter.com/1/statuses/user_timeline.rss?screen_name=twitterapi" rel="nofollow">https://api.twitter.com/1/statuses/user_timeline.rss?screen_name=twitterapi</a></p> <p>Please note that there is no support for the RSS response format in API v1.1. Properly versioned API v1 URLs will cease functioning in March 2013.</p> <p>For help dealing with the <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/deprecations/spring-2012">Spring 2012 deprecations</a>, see <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/discussions/10803">Following up on API housekeeping</a>. </p></blockquote><blockquote class="node-embed"> <h3 id="8650"> Why are the Tweets I'm looking for not in Twitter Search, the Search API, or Search widgets? </h3> <p> Twitter's <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/using-search">search</a> is optimized to serve relevant tweets to end-users in response to direct, non-recurring queries such as #hashtags, URLs, domains, and keywords. The Search API (which also powers Twitter's search widget) is an interface to this search engine. Our search service is not meant to be an exhaustive archive of public tweets and not all tweets are indexed or returned. Some results are refined to better combat spam and increase relevance. Due to capacity constraints, the index currently only covers about a week's worth of tweets.</p> <p>The <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/api/1/get/statuses/user_timeline">user timeline</a> API is the definitive source of tweets by a specific author. For a collection of recent Tweets by more than one user, consider creating a Twitter List and leveraging the <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/api/1/get/lists/statuses">list timeline</a>. <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/streaming-apis">The Streaming API</a> is often the best-fit choice when seeking completeness.</p> <p>If the tweets you're looking for aren't available in search and you think they should be, consult <a href="https://web.archive.org/web/20121214180641/https://support.twitter.com/articles/66018">this support topic</a> for further instructions to contact @<a href="https://web.archive.org/web/20121214180641/http://twitter.com/intent/user?screen_name=Support">Support</a>. </p></blockquote><blockquote class="node-embed"> <h3 id="5818"> Why do I keep getting the wrong Tweet IDs? </h3> <p> See <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/twitter-ids-json-and-snowflake">Twitter IDs, JSON and Snowflake</a>. This is an issue with JSON parsing of large integers -- by looking at/consuming the JSON the ID value is munged. Use <span class="geshifilter"><code class="java geshifilter-java">id_str</code></span> instead of <span class="geshifilter"><code class="java geshifilter-java">id</code></span> whenever possible. </p></blockquote><blockquote class="node-embed"> <h3 id="5822"> Why do my image uploads fail? </h3> <p> The image update methods require multipart form data. They do not accept a URL to an image nor do they accept the raw image bytes. They instead require the data to be delivered in the form of a file upload filed as defined in RFC1867. The content-type attribute of the image field is checked for valid image type. If you are using PHP/CURL there is a known bug that has since been fixed in the CVS version of PHP. Most installations are not yet using this version and therefore fail during image upload. Consider using a library which says it supports image uploads before trying to create your own. </p></blockquote></div><div class="category"> <h2 id="getting-help">Getting help</h2><blockquote class="node-embed"> <h3 id="5814"> How can I reclaim an inactive Twitter account for my project or application? </h3> <p> Our <a href="https://web.archive.org/web/20121214180641/https://support.twitter.com/articles/15362">Inactive Account Policy</a> page on the help center contains information about how we handle inactive accounts. For Trademark Violations please refer to our <a href="https://web.archive.org/web/20121214180641/https://support.twitter.com/articles/18367">Trademark Policy</a>. </p></blockquote><blockquote class="node-embed"> <h3 id="5812"> How do I get "via [MyApp]" appended to updates sent from my API application? </h3> <p> The source attribution of a Tweet is set by the name of the application used to create it. If you register an application we will use it's name and URL as the source for any Tweet it creates. Application names must be unique so if the application name you wish to use is taken, please choose another. </p></blockquote><blockquote class="node-embed"> <h3 id="6947"> How do I get my account verified? </h3> <p> This site is focused on programmatic uses of the Twitter Platform. We do not review nor approve any requests for the closed account verification program. Please do not use this site to request verification. If you have any questions about verification, see <a href="https://web.archive.org/web/20121214180641/https://support.twitter.com/articles/119135">FAQs about Verification</a> and reach out to @<a href="https://web.archive.org/web/20121214180641/http://twitter.com/intent/user?screen_name=Support">Support</a> via DM if you have any questions.</p> <p>All verification requests on this site are subject to deletion. </p></blockquote><blockquote class="node-embed"> <h3 id="6976"> How do I get support for my account, the Twitter website, or Twitter for my mobile device? </h3> <p> The Twitter Help Center is the ideal location for getting support with your Twitter account, the Twitter website, or Twitter for your mobile device. If you have feature requests, ideas, or complaints about the Twitter service, you should direct them via DM to @<a href="https://web.archive.org/web/20121214180641/http://twitter.com/intent/user?screen_name=support">support</a> or use the forms available to you on the Help Center. We can't help with general product support issues on dev.twitter.com. </p></blockquote><blockquote class="node-embed"> <h3 id="7437"> How do I link my Facebook and Twitter accounts? </h3> <p> We can't help with questions about the Twitter service link with Facebook here. If you're having issues, please read these articles and contact @<a href="https://web.archive.org/web/20121214180641/http://twitter.com/intent/user?screen_name=Support">Support</a> if necessary.</p> <ul> <li><a href="https://web.archive.org/web/20121214180641/https://support.twitter.com/articles/200773">I'm having trouble using Twitter with Facebook</a></li> <li><a href="https://web.archive.org/web/20121214180641/https://support.twitter.com/articles/31113">How to use Twitter and Facebook</a></li> </ul></blockquote><blockquote class="node-embed"> <h3 id="5815"> How do I report bugs and request features? </h3> <p> Before filing an issue to report a bug or request a feature, please:</p> <ol> <li>Check the <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/issues">Issue Tracker</a> for similar issues or requests. If you find what you're looking for, subscribe to the issue to indicate your interest.</li> <li>Search the <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/discussions">Discussions</a> for similar issues and requests. If you find an active topic about the issue, use that thread to continue discussing it.</li> <li>If you can't find your issue in either the tracker or in discussions, consider starting a discussion topic instead of creating a new issue. By creating a discussion topic, Twitter employees and third party developers can discuss the problems you're having and rule out any already-known issues, common developer error, issues with Twitter the service (as opposed to the API) or other instant resolutions to your potential issue.</li> <li>If you're absolutely sure that what you're filing is a material issue with the platform, file an issue with as exhaustive detail as possible to reproduce your problem. Insufficiently described issues will be closed in favor of the reporter opening a discussion to further refine the issue description. Make sure to include the exact URLs you're executing, the exact POST bodies & HTTP headers you're sending and any other relevant details. When reporting an issue with OAuth, include a signature base string as well. Refrain from ever submitting your consumer secret.</li> </ol></blockquote><blockquote class="node-embed"> <h3 id="5813"> I keep hitting the rate limit. How do I get more requests per hour? </h3> <p> REST & Search API Whitelisting is not provided. Resourceful use of <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/tags/bulk-operations">more efficient</a> REST API requests, <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/auth">authentication</a>, and <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/streaming-apis">Streaming APIs</a> will allow you to build your integration successfully without requiring whitelisting. Learn more about <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/rate-limiting">rate limits</a> or see the <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/rate-limiting-faq">rate limiting FAQ</a> for more information. </p></blockquote><blockquote class="node-embed"> <h3 id="7186"> I want to partner with Twitter; how do I reach the business development team? </h3> <p> Our business development team is small and selective in the partnerships they pursue. If you're interested in partnering with Twitter, send a detailed email to partner@twitter.com -- due to volume of requests, we can't respond to all inquiries.</p> <p>For many, the best path forward is to build integrations that do not require special circumstances from Twitter. The platform is multi-faceted and most product features can be accomplished through creativity and careful consideration of the technological options made available. Consider exploring the options made available by <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/node/230">node/230</a>. </p></blockquote><blockquote class="node-embed"> <h3 id="7732"> What do I do if my account is compromised, hacked, or used outside of my control? </h3> <p> If you're having any questions about the security of your account, please contact @<a href="https://web.archive.org/web/20121214180641/http://twitter.com/intent/user?screen_name=Support">Support</a> through our Support Center at <a href="https://web.archive.org/web/20121214180641/https://support.twitter.com/forms/hacked" title="https://support.twitter.com/forms/hacked" rel="nofollow">https://support.twitter.com/forms/hacked</a> -- we cannot assist with account issues on this site.</p> <p>See <a href="https://web.archive.org/web/20121214180641/https://support.twitter.com/articles/185703">My Account is Compromised/Hacked and I Can't Log In!</a> and <a href="https://web.archive.org/web/20121214180641/https://support.twitter.com/articles/76052">How to Connect and Revoke Third Party Applications</a> for more helpful advice. </p></blockquote></div><div class="category"> <h2 id="rest-api-v11">REST API v1.1</h2><blockquote class="node-embed"> <h3 id="10660"> Do the display requirements apply to mobile apps and Twitter clients also? </h3> <p> Yes. Our display requirements cover mobile. See <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/terms/display-requirements">Developer Display Requirements</a>. </p></blockquote><blockquote class="node-embed"> <h3 id="10650"> Does the 100,000 access token limit apply to all applications? Who does the 100,000 access token limit apply to? </h3> <p> The 100,000 token limit only applies to traditional Twitter client applications, which represent only a small share of the broader Twitter ecosystem. This token limit does not apply to any other applications. </p></blockquote><blockquote class="node-embed"> <h3 id="10652"> How do I know how many access tokens my application has? </h3> <p> At this time you'll have to contact the platform team to learn how many access tokens your application definitively has. You are encouraged to track your access token count independently, acknowledging that you will not be aware of every access revocation. </p></blockquote><blockquote class="node-embed"> <h3 id="10654"> How is the access token count calculated? </h3> <p> The access token count is calculated against the number of valid tokens that an application can use to make an API request. This is the total number of tokens your application has procured, minus those tokens that have either been revoked by the user, or our trust and safety team. </p></blockquote><blockquote class="node-embed"> <h3 id="10649"> How should we handle @usernames? </h3> <p> When cross-posting to Twitter with @<a href="https://web.archive.org/web/20121214180641/http://twitter.com/intent/user?screen_name=usernames">usernames</a>, be sure to accurately map to the user the author intended to @<a href="https://web.archive.org/web/20121214180641/http://twitter.com/intent/user?screen_name=mention">mention</a>. If your service binds users' Twitter accounts with its own concept of a user profiles, then you can use these relationships to help cross-post @<a href="https://web.archive.org/web/20121214180641/http://twitter.com/intent/user?screen_name=usernames">usernames</a> accurately. In cases where these relationships don't exist or your application can't map to the correct Twitter user, we recommend cross-posting with either users' real names or their username without the "@" symbol pre-fixed. </p></blockquote><blockquote class="node-embed"> <h3 id="10668"> I'm a teapot, how does API v1.1 affect me? </h3> <p> 418. #nuffsaid </p></blockquote><blockquote class="node-embed"> <h3 id="10667"> I'm a user, how does API v1.1 affect me? </h3> <p> There should not be any major impact for users. </p></blockquote><blockquote class="node-embed"> <h3 id="10666"> I'm not a developer, how do I render tweets according to display requirements? </h3> <p> You can review our <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/terms/display-requirements">Developer Display Requirements</a>. <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/embedded-tweets">Embedded Tweets</a> and <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/embedded-timelines">Embedded Timelines</a> are easy ways to implement display requirements. </p></blockquote><blockquote class="node-embed"> <h3 id="10665"> In API v1.1 will developers be allowed include additional actions on Tweets such as "Send to Instagram," "Send Email," "Tweet of the Day?" </h3> <p> No. Please leave the integrity of the Tweet intact. If you feel compelled to add additional content, please do so around or adjacent to the Tweet, but not within the actual Tweet itself. If you鈥檙e concerned about staying inline with our <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/terms/display-requirements">Developer Display Requirements</a>, please see our <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/embedded-tweets">Embedded Tweets</a> and <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/embedded-timelines">Embedded Timelines</a> products. </p></blockquote><blockquote class="node-embed"> <h3 id="10651"> Is there any token limit for non-client applications? </h3> <p> If you think you鈥檙e going to need more than 1 million tokens, please plan to come and talk with us as you approach that number. </p></blockquote><blockquote class="node-embed"> <h3 id="10645"> What happens to the widgets that are based on the Search API and API version 1.0? </h3> <p> They will be deprecated when version 1 is closed. We recommend using the new <a href="https://web.archive.org/web/20121214180641/https://dev.twitter.com/docs/embedded-timelines">Embedded Timelines</a> instead. </p></blockquote><blockquote class="node-embed"> <h3 id="10648"> What output formats will API v1.1 support? </h3> <p> API v1.1 will support JSON only. We鈥檝e been hinting at this for some time now, first dropping XML support on the Streaming API and more recently on the trends API. XML, Atom, and RSS are infrequently used today, and we鈥檝e chosen to throw our support behind the JSON format shared across the platform. Consequently, we鈥檝e decided to discontinue support for these other formats. For historical context, when we originally built the API all major languages did not have performant, well vetted libraries supporting JSON - today they do. </p></blockquote><blockquote class="node-embed"> <h3 id="10647"> When will API 1.0 be retired? </h3> <p> API 1.0 will cease accepting requests six months from when API v1.1 is released. We will officially turn off the endpoints for API v1.0 on March 5th, 2013. </p></blockquote><blockquote class="node-embed"> <h3 id="10657"> Will an application have to request user authorization just to make public API calls? </h3> <p> When API v1.1 is released, user authorization (and access tokens) are required for all API 1.1 requests. In the weeks following release, some methods will require only application-based authentication for certain "userless" contexts. </p></blockquote><blockquote class="node-embed"> <h3 id="10659"> Will an application have to request user authorization just to make public API calls? </h3> <p> When API v1.1 is released, user authorization (and access tokens) are required for all API 1.1 requests. In the weeks following release, some methods will require only application-based authentication for certain "userless" contexts. </p></blockquote><blockquote class="node-embed"> <h3 id="10656"> Will the Search API require authentication? </h3> <p> The Search API is now part of the official REST API in version 1.1. In addition to serving results in a format consistent with other Tweet resources, usage will also require authentication. </p></blockquote></div> </div> </div> </div> </div> </div> <div id="footer-outer"> <div id="footer"> <a href="https://web.archive.org/web/20121214180641/http://twitter.com/twitterapi" data-show-count="false" class="twitter-follow-button" data-text-color="999999" data-link-color="0080A6" lang="en">Follow @twitterapi</a><ul class="menu"><li class="leaf first"><a href="/web/20121214180641/https://dev.twitter.com/terms/api-terms" title="Developer Rules of the Road">API Terms</a></li> <li class="leaf"><a href="/web/20121214180641/https://dev.twitter.com/status" title="Twitter API Status">API Status</a></li> <li class="leaf"><a href="/web/20121214180641/https://dev.twitter.com/blog" title="Twitter Developer blog">Blog</a></li> <li class="leaf"><a href="/web/20121214180641/https://dev.twitter.com/discussions" title="Twitter Development discussions">Discussions</a></li> <li class="leaf"><a href="/web/20121214180641/https://dev.twitter.com/docs" title="Twitter development documentation">Documentation</a></li> <li class="leaf last"><a href="https://web.archive.org/web/20121214180641/http://www.acquia.com/" title="Acquia">A Drupal community site supported by Acquia</a></li> </ul> </div> </div> </div><script type="text/javascript"> var _sf_async_config=Drupal.settings.chartbeat; (function() { function loadChartbeat() { window._sf_endpt = (new Date()).getTime(); var e = document.createElement('script'); e.setAttribute('language', 'javascript'); e.setAttribute('type', 'text/javascript'); e.setAttribute('src', (("https:" == document.location.protocol) ? "https://web.archive.org/web/20121214180641/https://a248.e.akamai.net/chartbeat.download.akamai.com/102508/" : "https://web.archive.org/web/20121214180641/http://static.chartbeat.com/") + "js/chartbeat.js"); document.body.appendChild(e); }; var oldonload = window.onload; window.onload = (typeof window.onload != 'function') ? loadChartbeat : function() { oldonload(); loadChartbeat(); }; })(); </script><script type="text/javascript"> <!--//--><![CDATA[//><!-- var _gaq = _gaq || [];_gaq.push(["_setAccount", "UA-30775-16"]);_gaq.push(['_setCustomVar', 1, "roles", "anonymous user", 2]);var current_domain = document.domain; var current_url = document.URL; if (current_domain == 'dev.twitter.com' && !current_url.match(/\/(apps|admin)/)) { _gaq.push(['_trackPageLoadTime']); }_gaq.push(["_trackPageview"]);(function() {var ga = document.createElement("script");ga.type = "text/javascript";ga.async = true;ga.src = ("https:" == document.location.protocol ? "https://web.archive.org/web/20121214180641/https://ssl" : "https://web.archive.org/web/20121214180641/http://www") + ".google-analytics.com/ga.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ga, s);})(); //--><!]]> </script> </body> </html><!-- FILE ARCHIVED ON 18:06:41 Dec 14, 2012 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 18:40:18 Mar 04, 2025. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.699 exclusion.robots: 0.034 exclusion.robots.policy: 0.019 esindex: 0.011 cdx.remote: 12.749 LoadShardBlock: 43.413 (3) PetaboxLoader3.datanode: 105.43 (4) load_resource: 291.799 PetaboxLoader3.resolve: 223.256 -->