---
updatedAt: 2025-05-19T20:07:06.000Z
agentTools:
  projectIndex: https://developer.ayyeka.com/llms.txt
---

# Rate Limits

Rate limits exist across REST-API to prevent abuse and service overload. Limits are applied to all API endpoints, some API endpoints have more restrictive rate limits.

If you exceed any of the requests rate limits described below, REST-API will respond with a `429` error code.

Users that require a faster request rate than the one described below should contact support.

### Authorization Endpoint Rate Limit

| Endpoint           | Rate           |
| :----------------- | :------------- |
| `POST /auth/token` | 15 req / 15min |

### Metadata Endpoints Rate Limits

**Account**

| Endpoint                                          | Rate           |
| :------------------------------------------------ | :------------- |
| `GET /v2.0/account/organization`                  | 1M req / 15min |
| `GET /v2.0/account/organization/{organizationId}` | 1M req / 15min |

**Users**

| Endpoint                       | Rate           |
| :----------------------------- | :------------- |
| `GET /v2.0/user`               | 1M req / 15min |
| `GET /v2.0/user/{userId}`      | 1M req / 15min |
| `GET /v2.0/user/uiPreferences` | 1M req / 15min |

**Channel**

| Endpoint                               | RATE           |
| :------------------------------------- | :------------- |
| `GET /v2.0/channel`                    | 1M req / 15min |
| `GET /v2.0/channel/{channelId}`        | 1M req / 15min |
| `GET /v2.0/device/{deviceId}/channels` | 1M req / 15min |

**Device**

| Endpoint                                 | Rate           |
| :--------------------------------------- | :------------- |
| `GET /v2.0/device`                       | 1M req / 15min |
| `GET /v2.0/device/{serialNumber}`        | 1M req / 15min |
| `GET /v2.0/device/id/{deviceId}`         | 1M req / 15min |
| `GET /v2.0/site/{siteId}/devices`        | 1M req / 15min |
| `GET /v2.0/device/{deviceId}/health`     | 1M req / 15min |
| `GET /v2.0/device/{deviceId}/lastHealth` | 1M req / 15min |
| `GET /v2.0/device/{deviceId}/lastLog`    | 1M req / 15min |
| `GET /v2.0/device/{deviceId}/log`        | 1M req / 15min |

**Site**

| Endpoint                                   | Rate           |
| :----------------------------------------- | :------------- |
| `GET /v2.0/site`                           | 1M req / 15min |
| `GET /v2.0/site/{siteId}`                  | 1M req / 15min |
| `GET /v2.0/site/{siteId}/customAttributes` | 1M req / 15min |
| `GET /v2.0/site/customAttributes`          | 1M req / 15min |
| `POST /v2.0/site/customAttributes`         | 1M req / 15min |

**Stream**

| Endpoint                                           | Rate           |
| :------------------------------------------------- | :------------- |
| `GET /v2.0/site/{siteId}/streams`                  | 1M req / 15min |
| `GET /v2.0/site/{siteId}/streams/customAttributes` | 1M req / 15min |
| `GET /v2.0/stream`                                 | 1M req / 15min |
| `GET /v2.0/stream/{streamId}`                      | 1M req / 15min |
| `GET /v2.0/stream/{streamId}/customAttributes`     | 1M req / 15min |
| `GET /v2.0/stream/customAttributes`                | 1M req / 15min |
| `POST /v2.0/stream/customAttributes`               | 1M req / 15min |
| `GET /v2.0/stream/customAttributes/names`          | 1M req / 15min |
| `GET /v2.0/stream/{streamId}/threshold`            | 1M req / 15min |
| `POST /v2.0/stream/{streamId}/threshold`           | 1M req / 15min |
| `GET /v2.0/stream/{streamId}/threshold/status`     | 1M req / 15min |

### Data Endpoints Rate Limits

**Samples of Type Scalar**

| Endpoint                                   | Requests per Minute |
| :----------------------------------------- | :------------------ |
| `GET /v2.0/sample/batch`                   | 1M req / 15min      |
| `POST /v2.0/sample/batch/ack`              | 1M req / 15min      |
| `POST /v2.0/sample/batch/backfill`         | 1M req / 15min      |
| `GET /v2.0/sample/batch/status`            | 1M req / 15min      |
| `GET /v2.0/site/{siteId}/sample`           | 1M req / 15min      |
| `GET /v2.0/site/{siteId}/sample/batch`     | 1M req / 15min      |
| `GET /v2.0/stream/{streamId}/sample`       | 1M req / 15min      |
| `GET /v2.0/stream/{streamId}/sample/agg`   | 1M req / 15min      |
| `GET /v2.0/stream/{streamId}/sample/batch` | 1M req / 15min      |
| `GET /v2.0/stream/{streamId}/sample/last`  | 1M req / 15min      |
| `GET /v2.0/stream/{streamId}/sample/range` | 1M req / 15min      |

**Samples of type Image**

| Endpoint                                         | Rate           |
| :----------------------------------------------- | :------------- |
| `GET /v2.0/sample/image/batch`                   | 1M req / 15min |
| `GET /v2.0/sample/image/id/{imageId}`            | 1M req / 15min |
| `GET /v2.0/stream/{streamId}/sample/image/batch` | 1M req / 15min |
| `GET /v2.0/stream/{streamId}/sample/image/last`  | 1M req / 15min |

**Samples of type RFID**

| Endpoint                                        | Rate           |
| :---------------------------------------------- | :------------- |
| `GET /v2.0/sample/rfid/batch`                   | 1M req / 15min |
| `POST /v2.0/sample/rfid/batch/ack`              | 1M req / 15min |
| `POST /v2.0/sample/rfid/batch/backfill`         | 1M req / 15min |
| `GET /v2.0/sample/rfid/batch/status`            | 1M req / 15min |
| `GET /v2.0/site/{siteId}/sample/rfid/batch`     | 1M req / 15min |
| `GET /v2.0/stream/{streamId}/sample/rfid`       | 1M req / 15min |
| `GET /v2.0/stream/{streamId}/sample/rfid/batch` | 1M req / 15min |
| `GET /v2.0/stream/{streamId}/sample/rfid/last`  | 1M req / 15min |