Stack Exchange Network

Stack Exchange network consists of 175 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.

Visit Stack Exchange
7

Every response from the API can be cached for up to a minute, so making the same request multiple times in that time-frame typically won't return different results. We make note of this in the throttle documentation: While not strictly a throttle, the Stack Exchange employs heavy caching and as such no application should make semantically identical ...


6

See How API Keys Work. It's six years old, but a leading API developer said: ... If you can demonstrate a need for a higher request quota, contact us. However, the Key limit should be sufficient for development, so please only request an increased quota when your application is live and has a non-trivial number of users. (Emphasis and contact link ...


5

You can get data close-enough to "real time" for most practical purposes. See the StackHose app, for example. Read the page about the API's Throttles and Quotas. From that page we can deduce: The maximum, burst, request rate is 30 requests per second, and this risks getting your app shut down. Your app will never be allowed more than 10,000 requests per ...


4

Each application/user pair (as signified by an access_token) has a per-day quota of 10k requests (by default). Any number of these can be in flight at once, and they're reported as part of quota_remaining and quota_max. On top of that, is a per-user quota of 50,000. This quota isn't reported anywhere (for privacy reasons, we'd rather not leak a user's ...


4

When this class of error is encountered, the number of seconds until the quota rolls over is indicated as part of error_message now. For example: { "error_message": "too many requests from this app/user pair, more requests available in 76400 seconds" } This is meant for debugging and development purposes only, applications should take care to not actually ...


4

backoff isn't used to indicate when you're breaking api limits (we start returning errors when you break contracts). The typical cause of a backoff is a request that takes unusual resources to run. These are normally either complicated queries or high page values; however, backoff is applied dynamically so the exact definition of "complicated" and "high" ...


4

You might consider looking at StacMan for inspiration, a C# client that deals with some of these questions. Off hand it does push everything through a "Manager" (called a Client in that code) and automatically enforces backoff and simultaneous request throttling. How many requests are OK to send simultaneously? While there is a strict cutoff... ...


3

You are using the "Javascript SDK" and that's not how it works. The doc page calls the SDK "small and minimalistic".   The source code states: This file is provided to API clients to automate various tasks, initially focused on login. In fact the SDK really only does one thing. It helps you get an access_token if you need to authenticate. It ...


3

The documentation for the response wrapper defines the backoff field as an integer, so you can expect it to come back in the first form. I don't believe there's any way to graciously test a backoff response short of actually angering the API (which I'd recommend against).


3

Your app is subject to IP throttling as explained in the rate limiting documentation: Every application is subject to an IP based concurrent request throttle. If a single IP is making more than 30 requests a second, new requests will be dropped. The exact ban period is subject to change, but will be on the order of 30 seconds to a few minutes typically. ...


3

The comments are more or less correct; caching applies to the /events endpoint just like every other method. This is by design for now. We have looked at differing caching policies for /events and /inbox/* routes, as the minute lag on those methods is a bit heavy handed; though we still need to protect ourselves from abusive requests.


3

It sounds like you've either got a bug which is in fact making more requests than you think it is, or you're on a network where there's some other source of high-frequency requests. You're not supposed to have to deal with this situation in general, because this isn't an API error - it's an error from the load balancer because your IP is generating incoming ...


3

The page where you can find the API key for your registered application says that the key doesn't need to be kept secret: [The key] is not considered a secret, and may be safely embed [sic] in client side code or distributed binaries. Abuse is typically an issue for the end-user, so you shouldn't be concerned about it beyond recognizing backoff responses ...


2

Provided you don't do anything "evil" (which basically means leaking user messages to people/apps they haven't authorized), we have no objections to a generic push service. Yes, the per-minute throttle is for the same request; changing the parameters counts as separate requests. Do note that the 30 requests/second cutoff is by IP (it's a DOS prevention ...


2

From my personal observation and from the occasional SE dev statement, many items update every 60 seconds (cached at server). Also the page AJAX updates every 60 seconds. (using JS like: setInterval(updateRelativeDates, 60000);) So, per sampling theory, sampling more than once every 30 seconds gives diminishing returns. Personally, I would just reload ...


1

Your app can just give them the link, and they don't need to be logged in. The quota is a function of your API key (mainly). Register your app and use a key and that will give you a 10K quota. See: How API Keys Work. Looking for a beginner's tutorial to using the API. How to make a Stack Exchange API call, using my key


1

Yes, it is perfectly okay. You only need an access_token (OAuth/login) if you are trying to change data, or are accessing private information for a logged-in user. See the Authentication docs for more info. The issue you are having with has_more is unrelated and is a known, current, bug. Aside: Using an access_token will never decrease any secondary ...


1

You can do this on the API with far less than 120K requests. Just use a different approach. Instead of getting a total for every single month, offload that work to your app. Use a /search query to get the questions for the whole interval in question. EG: /search?pagesize=100&fromdate=1329523200&todate=1487376000&sort=creation&tagged=...


1

That error means that you have used up your API quota for the day. You are allowed either 300 or 10,000 API requests per day for each IP address, or app, depending on whether you use an application key and/or an access_token. See: The "Throttles" documentation What are the API request limits? (FAQ) Request Throttling Limits (FAQ) Note that you must ...


1

Or can I just spam them out as fast as my program can send them, as, like you said, you cache it anyway. No. The throttle discussion page specifically says: ... we consider > 30 request/sec per IP to be very abusive and thus cut the requests off very harshly. And even though the underlying data is cached for 60 seconds, the HTML requests are not. You'...


1

See the Throttles doc page. The 10K limit is not if the customer registers, it is if you register your app and provide the key when you make API calls. Also, you can get more than 10K per IP if your app authenticates the user and then passes a valid access_token. In that case, it becomes 10K per logged in user and does not share the 10K IP limit. From ...


1

You shouldn't be making more than 4 requests in this case. fetch a page of /users/{ids}/timeline group the ids by type (question, answers, comments) since the max pagesize fo users/{ids}/timeline is 100, we know there are < 100 of each id* make 1 query each with the appropriate ids to /questions/{ids}, /answers/{ids}, and /comments/{ids} This is the ...


1

You can use Charles to simulate any response, It has a free 30 day trial, for Windows, Mac and Linux. Just set a breakpoint for http://api.stackexchange/* which breaks on Response (obviously you can't use it for https, so that means it can't be used for the routes which require authentication) You can then edit the response, (as text, not in a fancy-...


1

I believe this has been fixed. Let me know if you run into it again.


1

The official rate limits are posted here. One thing you mentioned in your post does strike me as a little odd: "I've been doing a first call with pagesize=0 to determine how many pages there are then running a loop querying each page." Why the need to fetch an empty page to determine the total? Why not fetch the first page (which contains the total) and ...


Only top voted, non community-wiki answers of a minimum length are eligible