# Rate Limits

It's important you study rate limits for your plan and the different services that you use.\
Please email **<hello@ipforensics.net>** if you have any questions!

## Abuse prevention

If you start getting Cloudflare errors such as Cloudflare error 1020 - it's most likely you are being flagged by our abuse prevention system and Cloudflare blocks your access on our behalf.

You may also be seeing other error messages.

Below are a few scenarios where you get temporarily banned.

1. If you are sending requests although your key is already rate-limited we may temporarily ban you. For example, let's say your plan allows you to do 200 requests per minute. If you try to do 300 requests in the same second - you will most likely get temporarily banned.
2. Use one api key per project. For example, if you create 100 free accounts and send requests using the keys from these accounts - all accounts tied to the same project will be banned.
3. If you think you are temporarily banned by mistake please email <helpdesk@storeg.cloud> and we will help you fast.

### How to avoid getting banned?

1. Don't use more than 1 IpForensics account.
2. Implement rate-limiting logic in your app so you don't try doing more requests than your plan allows.
3. Email us at <support@ipforensics.net> if you have any questions.

## Is it allowed to create multiple accounts?

As we offer generous free tokens on every new account created, we don't allow multiple account creation.

Only 1 free account is allowed per user.

If you build your app based on resources spread over several newly created accounts - you will be banned and your service will face unexpected downtime.

Please contact us at <support@ipforensics.net> if you have any questions 🙌

## Why am I rate limited?

There are 2 different types of rate-limits you need to know about.

## Default Rate limit

You are allowed to make 200 request per minute regardless of your plan.

### Rate-limits when using invalid API Keys

#### Error 429 - Rate limit between your  application and IpForensics API

As you know - anyone can use invalid api keys and try to call or make a request to the `IpForensics`API.

If you go above the allowed rate-limit you set they will see the following error:

```javascript
{
    "status": false,
    "response": "Rate limit exceeded for invalid keys",
    "code": "429",
    "message": "You are rate-limited because of invalid api keys. See the details about the current rate and throttle limits or read More: https://ipforensics.gitbook.io/ipforensics/misc/rate-limits",
    "meta_data": {
        "reason": "Too many requests to IpForensics API from this particular client",
        "solution": "Use valid api keys."
    }
}
```

### Rate-limits when calling IpForensics API using HTTP

#### Error 429 - Rate limit between your  application and IpForensics API

When you are calling IpForensics API from your own backend you may get limited by the IpForensics API.

In that case you will get&#x20;

```javascript
{
    "status": false,
    "response": "Rate limit exceeded",
    "code": "429",
    "message": "This IpForensics Server is rate-limited. See the details about the current rate and throttle limits or read More: https://ipforensics.gitbook.io/ipforensics/misc/rate-limits",
    "meta_data": {
        "rate_limit": {
            "X-RateLimit-Limit": 200,
            "X-RateLimit-Remaining": 0,
            "Retry-After": 58,
            "X-RateLimit-Reset": 1663328213
        },
        "reason": "Too many requests to IpForensics API from this particular client",
        "solution": "The clients needs to wait before sending more requests."
    }
}
```

When you call the API you can expect the response header in order to understand your rate limits.

The most important values to look at are `x-rate-limit-limit` and `x-rate-limit-used`.

The first one tells you how many requests you are allowed to do per minute and the minute one how many requests you already did in current minute.

Some heavy requests count as several request

In order to not get rate-limited pay attention to `x-rate-limit-used` to be lower than `x-rate-limit-limit`.

The way to fix this error is to wait after a minute to make another request.
