> This page is for Developers.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.iot.telia.lt/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.iot.telia.lt/_mcp/server.

> Learn about API rate limits including the 2,000 calls per 5 minutes per IP limit, 10 million monthly calls per account, and specific endpoint limits.

The Telia API enforces general limits per IP address and per organization, and lower limits for specific API paths.
These API rate limits are in place to ensure service availability and prevent the system from overloading.

## General limits

### 2,000 calls per IP within 5 minutes

The Telia API has rate limiting enforced at **2,000 requests per IP in a 5-minute window**.

When this threshold is reached, the system returns the HTTP response status code `429 Too Many Requests` until the average request rate is within the specified limit.

> **Note**
>
> **Example**:
> You might reach this limit when using the API to create 3,000 endpoints simultaneously.
> To stay under this limit, wait at least 200 milliseconds between API calls.

### 100 authentication calls per IP within 5 minutes

The [authentication endpoint](/developers/api/authentication/authenticate) accepts up to **100 requests per IP in a 5-minute window**.
When this threshold is reached, the system returns `429 Too Many Requests`.

### 10,000,000 calls per account per month

An organization is allowed to make a total of 10,000,000 API requests per month.

When this threshold is reached, the system returns `429 Too Many Requests`.
This quota resets on the first day of the next month.

> **Tip**
>
> Implement the [Data Streamer](/developers/reference/data-streamer) to receive live the status of your endpoints and avoid using too many API calls.

## Specific API path limits

Apart from the general API rate limiting, there are limits configured on specific, more frequently used API paths.
The following limits are enforced per organization:

| `resourcePath`                                        | Method | req/s | burst |
| :---------------------------------------------------- | :----- | :---- | :---- |
| `/api/v1/endpoint/`                                   | GET    | 10    | 5     |
| `/api/v1/endpoint/{id}/`                              | GET    | 50    | 25    |
| `/api/v1/endpoint/{id}/connectivity/`                 | GET    | 50    | 25    |
| `/api/v1/endpoint/{id}/connectivity_info/`            | GET    | 10    | 5     |
| `/api/v1/endpoint/{id}/event/`                        | GET    | 100   | 50    |
| `/api/v1/endpoint/{id}/stats/`                        | GET    | 10    | 5     |
| `/api/v1/endpoint/{id}/stats/daily/`                  | GET    | 10    | 5     |
| `/api/v1/organisation/{id}/billing/{billing_period}/` | GET    | 10    | 5     |
| `/api/v1/organisation/{id}/stats/`                    | GET    | 10    | 5     |
| `/api/v1/organisation/{id}/stats/daily/`              | GET    | 10    | 5     |
| `/api/v1/service_profile/`                            | GET    | 100   | 50    |
| `/api/v1/service_profile/{id}/`                       | GET    | 100   | 50    |
| `/api/v1/sim/`                                        | GET    | 10    | 5     |
| `/api/v1/sim/{id}/`                                   | GET    | 100   | 50    |
| `/api/v1/sim/{id}/stats/`                             | GET    | 10    | 5     |
| `/api/v1/sim/{id}/stats/daily/`                       | GET    | 10    | 5     |
| `/api/v1/tariff_profile/`                             | GET    | 100   | 50    |
| `/api/v1/tariff_profile/{id}/`                        | GET    | 100   | 50    |
| `/api/v1/tariff_profile/{id}/coverage/`               | GET    | 100   | 50    |
| `/api/v1/sim/migration/workspace/`                    | POST   | 1     | 1     |

> **Tip**
>
> If you encounter the `429 Too Many Requests` status code, retry the call with exponential back-offs.