Server >> web api rate limits

Lots of “seems like” and “looks like.” Is the problem on the Moralis side, or with our code? If on the Moralis side, what’s the ETA for a fix. If on our side, what do we need to do?

Can someone at Moralis address the rest of the questions in the post?

1 Like

Can you ask one question at a time?. It is clear from that response that throttle limit was hit.

Can you answer the question fully please?

Is the problem on the Moralis side, or with our code? If on the Moralis side, what’s the ETA for a fix. If on our side, what do we need to do?

Can we get a definition of all the limit headers?
Can you show how to get to 3500 requests per minute or is that not possible?

The headers that you see there are not complete. The limit should work as expected. I don’t have an ETA.

I don’t understand. Does this mean the problem is on the Moralis side, or with our code? If on our side, what do we need to do?

Can we get a definition of all the limit headers?
Can you show how to get to 3500 requests per minute or is that not possible?

Those are compute units and not requests. Every request has a different number of compute units. And some requests also have throttle limit that is bigger than the compute unit number.

There is a list in documentation with the number of compute units per API endpoint.

Sorry, but I don’t think you read the question all the way through. It says

At this point, I would expect a response from support that says something like “some requests count double” and “check your cloud limits” but these are not the point. The pricing page says 3,500 requests per minute. I would challenge the Moralis team to show us some code that gets anything close to that. Using any request, cloud limit or other parameters that are available to paying customers like us.

Also, you did not answer the questions above: What do we do about it?

The billing and rate limit page:
https://docs.moralis.io/misc/rate-limit

3,500 per minute is the limit for pro plan.
Some requests are weighted higher.
All requests are subject to a per-second limit known as the throttle.
(For 3,500 per minute plans, the throttle limit 88 requests per second)

If 100 requests come in within that second, you’ll hit the throttle limit

1 Like

The pricing page says we can get 3,500 requests per minute, but in practice the limit seems to be ~100 per minute, not per second.

Let me recap the questions, which have not been answered yet:

  1. What do the rate limit error headers mean? These docs only define a few of them. We need a full and precise reference.
  2. What are the “throttle limit” request weights? These docs show weights for “speedy nodes” and for “api” but not for the “throttle limit.”
  3. If a throttle limit is hit, how long is service blocked? Until the next second? minute? day?
  4. If it is really possible to reach 3,500 requests per minute without hitting a “throttle limit” please show code that does so.
1 Like

Following up on these. Can we get some help from the devs please?

it should be until next second

there is a new endpoint now for web3api that gives more detailed information (https://admin.moralis.io/web3Api): /info/endpointWeights

Can you please address all four questions? They are not complicated.

it should be until next second

Can we be more definitive? Is it until the next second or not?

there is a new endpoint now for web3api that gives more detailed information (https://admin.moralis.io/web3Api): /info/endpointWeights

Are these the throttle limit request weights? If not, what is the relevance?

an example of output:

  {
    "endpoint": "getBlock",
    "path": "/block/{block_number_or_hash}",
    "price": 1,
    "rateLimitWeight": 1
  },

Thank you for the sample output. I can see that from the endpoint.

Can we please address the questions?

I don’t understand this question

Let me recap the questions, which have not been answered yet:

  1. What do the rate limit error headers mean? These docs only define a few of them. We need a full and precise reference.
  2. What are the “throttle limit” request weights? These docs show weights for “speedy nodes” and for “api” but not for the “throttle limit.”
  3. If a throttle limit is hit, how long is service blocked? Until the next second? minute? day?
  4. If it is really possible to reach 3,500 requests per minute without hitting a “throttle limit” please show code that does so.

when the rateLimitWeight is same as price in the above example, then that is what will be counted for the throttle limit

if you make 20 requests with a rateLimitWeight of 3 in a second then it will use 60 units from the throttle limit for that second.

if you make 20 requests with a rateLimitWeight of 3 in a second then it will use 60 units from the throttle limit for that second.

Does this mean that rateLimitWeight is the request weight that counts toward the throttle limit? What about “high offset” requests? Those were a problem before, and had a very high weight that depended on the offset, but this is not shown in this endpoint.

when the rateLimitWeight is same as price in the above example, then that is what will be counted for the throttle limit

And what if they are not the same?

yes to the first question, for the second question, there are few cases where that value is different, for example in the case of resync metadata endpoint, where you can call it only once per second as it has a rateLimitWeight of 60

information about high offset is not present there, we are working on improving the backend infrastructure now and we don’t have cursor implementation for every endpoint now

OK. So actually, none of the questions were answered yet. Let me recap them, and the non-answers we got so far:

  1. What do the rate limit error headers mean? These docs only define a few of them. We need a full and precise reference.
  2. What are the “throttle limit” request weights? These docs show weights for “speedy nodes” and for “api” but not for the “throttle limit.” --> You referred to rateLimitWeight in the endpoint /info/endpointWeights but then also said it’s missing some of the current weights. Is there a complete list we can trust somewhere?
  3. If a throttle limit is hit, how long is service blocked? Until the next second? minute? day? --> You said “it should be until the next second” - is it actually until the next second?
  4. If it is really possible to reach 3,500 requests per minute without hitting a “throttle limit” please show code that does so.