Are the endpoint-specific rate limits per access token, or for app period. Lets say I have 100 users of the app, (100 different access tokens) that make a relationship post request, is that not going to work? Or is it 60 requests max per user of the app, and no more than 5000 total requests from the app every hour..
Each user can make total of 5000/hr API calls, POST API calls have different limits like relationship POST call has 60/hr. There is no limit for the app, each access_token (user) has a limit.
Update: As jhm pointed out, this limit has been reduced from 5000/hr to 200/hr as of April 1, 2018.
As per the April 1st 2018, the rate limit has been significantly reduced - from 5000 to 200 pr hour pr user:
https://developers.facebook.com/docs/instagram-api/overview/#rate-limiting
Related
I've been working with Google Analytics for 2 months now. I created a custom dashboard with NodeJS (express/serverless), out of it with requesting data from the Core Reporting API and the Real Time Reporting API. I've managed to put it as a Lambda Function on AWS. While I'm very pleased about this, I have some issues I'm facing right now.
I get the following errors:
{
"error":{
"errors":[
{
"domain":"global",
"reason":"dailyLimitExceeded",
"message":"Quota Error: profileId ga:NNNNN has exceeded the daily request limit."
}
],
"code":403,
"message":"Quota Error: profileId ga:NNNNN has exceeded the daily request limit."
}
}
and
{
"error":{
"errors":[
{
"domain":"usageLimits",
"reason":"userRateLimitExceeded",
"message":"User Rate Limit Exceeded"
}
],
"code":403,
"message":"User Rate Limit Exceeded"
}
}
My dashboard looks like this:
When the dashboard get visited, it calls the realtime api 9 times (each block in the image is a querycall). I think I could combine the 'Online users', 'Users today' and 'pageviews today' call into one call. The search today, and orders today are specified by filters for searching for a specific event.
I have a build in a timechecker, which allows the dashboard to be viewed between 07:00 and 19:00. When it's earlier then 07:00 or later then 19:00 a variable checkTime is set to false, which makes the dashboard shows a div with text something like "dashboard offline". When someone has visited the dashboard in the allowed timerange, a variable checkTime is set to true and calls to the Google API's can be made.
The dashboard is running on a tv screen between 07:00 and 19:00. This means that the dashboard is up on a TV screen for 12 hours long. Every 20 seconds there is a function call to update all the data (so again 9 requests are being made).
So let's say there are
60 minutes x 3 = 180 x 12 = 2160 x 9(requests) = 19440 requests for a
day.
I don't think I should reach the 50.000 quota. But I am reaching the profile quota from 10.000.
However when I view the Developers console I can see the following:
I think my options are the following:
Increase the interval to 1 minute ( (60 x 12) x 9 requests each view = 6480), that way the profile quota shouldn't be exceeded. But this doesn't really make the dashboard realtime anymore.
Make a server, which runs the queries(with the increased interval of 1 minute), save the results to a database. The dashboard makes a GET request to the database. This way multiple tv screens should be able to request data.
QUESTION: Could I also make multiple service accounts, and switch to other service account when limit has been reached, or doesn't this fix the profileid limit?
DailylimitExceded can mean one of two things.
You can only make 10000 request against a single view a day. This quota you are sharing with other developers. So if i install your app and Someone elses app in total there can only be made 10000 requests a day against my Google analytics view and then both apps will get that error. If you are making these requests you should be storing the data in the database so that you don't need to request the same information again. Even though its a different user who is trying to view data on the same view. You are probably not going to be able to track this quota hit in the Google Developer console.
The second issue is that by default an application can make a max of 50000 requests a day across all views. That means that if you have 5 users and you are making 10000 requests a day for each of them you have reached the limit of your requests. I dont think this is what you are hitting.
The first quota the user based one there is nothing you can do about that you cant extend it. You need to limit your requests so that you dont block a users account. The second one you can apply for an extension in the Google Developer console it can take a while to get the extension you should apply for it when you have reached around 80% of your current daily quota.
The main thing here is that you should not be requesting the same data twice. If you have made a request you should be saving it and displaying stored data to your users rather than just requesting it again. That and the real time api you should not be trying to request from that more then every 5 minutes as you will be eating our quota.
I have suggested to Google several times that the realtime api should be on its own quota and not the same as the reporting api. I am still waiting for them to add this feature.
Does DocuSign enforce its limits on Get requests per EnvelopeID in the sandbox?
I have reviewed their publications regarding the 1 Get request per EnvelopeID every 15 minutes and 1000 API requests per hour, however in the sandbox, it appears that I am able to get a valid response when intentionally violating these limits for testing when using the same EnvelopeID and endpoint. Are these restrictions enforced only in the production environment? I posed the question to Docusign, but they didn't answer and referred me here. Any insight would be appreciated.
In Demo environment limit is more than 1000, for my Sandbox account I can see the limit is 100000. You can always check the Header in the any API call response, it will have below values:
X-RateLimit-Limit →100000
X-RateLimit-Remaining →99998
X-RateLimit-Reset →1512680400
X-RateLimit-Limit tells your API call limit
X-RateLimit-Remaining tells how many are remaining in this hour
X-RateLimit-Reset tells the time when rate limit counter will be
rest
I'm a little confused if what I am trying to do is even possible given the expressed limits to the API.
My app should do this:
user logs in, app gets auth token
user gets list of their followers
https://api.instagram.com/v1/users/self/follows?access_token=ACCESS-TOKEN
this point is easy to get to, but the next step (3) seems potentially problematic
user gets the number of followers each of those followers has
https://api.instagram.com/v1/users/{user-id}/?access_token=ACCESS-TOKEN
If the user has 5000+ (limit is 5000 requests per hour) followers, do I really need to request each users information one by one? If so, it looks like I will definitely hit the rate limit.
user is able to delete followers having under a certain amount of followers (limit 60 / hour)
https://api.instagram.com/v1/users/{user-id}/relationship?access_token=ACCESS-TOKEN
So, it seems, given the limits, that such an app would be impossible to create. Is there some channel where I can request a limit increase? This tool would be used sparingly and infrequently.
There is a section "Relationship Endpoints" where you can use request
GET/users/self/followed-by
https://api.instagram.com/v1/users/self/follows?access_token=ACCESS-TOKEN
to Get the list of users this user is followed by, so this is only one request.
We make GET requests to the /users/self/media/recent and /media/media-id/comments
endpoints.
For this we use user authentication with access_token.
According to the rate limit documentation of instagram we should have 5000 requests / access_token / hour available.
logging the number of our requests on average we do about 600 - 800 requests for a user of us but still receive an api limit reached error in the instagram response.
not only that but according to the error we do ~70K request/hour
You have exceeded the maximum number of requests per hour. You have performed a total of 68100 requests in the last hour. Our general maximum limit is set at 5000 requests per hour.
Am I missing something? Only a few customers of us are affected by this problem.
Are the limits per user global and all apps the user uses have to share the 5000 requests / hour? That is the only explanation I can come up with but found no documentation of this behavior.
Post the code, may be you are doing something wrong and its making multiple calls.
The API response header shows how many remaining calls after each API call:
x-ratelimit-limit:5000
x-ratelimit-remaining:4998
check this value after each call from your code and analyze.
We require to get the followers data (profile metrics specially follower's friends count) for my client's accounts having more than 500k followers. Because of Instagram api limitation we can only do 5k calls /hour. Thats why, it is impossible to load all followers data for every day. But there are few products like web.stagram.com etc, which are also using the instagram api and making unlimited (or some greater num than allowed limit) calls.
Are these partners exempted by instagram?
Please update if there is a way to get higher api limit.
We are ready to pay amount for the higher limit.
Regards,
Parvendra Adhran
You have to try to get whitelisted to get a new Rate Limit, there's a long waiting list and Instagram has mentioned they won't be getting to the requests anytime soon.
I've heard of people still waiting over 2 months so far.