> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rootly.com/llms.txt
> Use this file to discover all available pages before exploring further.
# Overview
> API Authentication and Request Examples
Download our OpenAPI/Swagger specification to explore our API endpoints or generate client libraries.
Use our official Go and Python SDKs to integrate with the Rootly API.
# How to generate an API Key?
To generate a new API key, navigate to: **Organization dropdown** > **Organization Settings** > **API Keys > Generate New API Key**.
Rootly supports three scopes of API Keys:
| API Key Type | Permissions |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Global API Key | Global API Keys are assigned On-Call and Incident Response role when they're generated. The assigned role's permissions control the key's permissions. Global API Keys are able to interact with all entities within your Rootly instance. |
| Team API Key | Team API Keys inherit the same permissions of a Team Admin. They have full read and edit access to any Rootly entity that team owns, such as the team's Schedules and Escalation Policies. |
| Personal API Key | Personal API Keys inherit the permissions of the user who created the API key. |
# JSON:API Specification
Rootly is using **JSON:API** ([https://jsonapi.org](https://jsonapi.org)) specification:
* JSON:API is a specification for how a client should request that resources be fetched or modified, and how a server should respond to those requests.
* JSON:API is designed to minimize both the number of requests and the amount of data transmitted between clients and servers. This efficiency is achieved without compromising readability, flexibility, or discoverability.
* JSON:API requires use of the JSON:API media type (**application/vnd.api+json**) for exchanging data.
# Authentication and Requests
We use standard HTTP Authentication over HTTPS to authorize your requests.
```bash theme={null}
curl --request GET \
--header 'Content-Type: application/vnd.api+json' \
--header 'Authorization: Bearer YOUR-TOKEN' \
--url https://api.rootly.com/v1/incidents
```
# Rate limiting
* There is a default limit of **3000** **GET**, **HEAD**, and **OPTIONS** calls **per API key** every minute. The limit is calculated over a **1-minute sliding window** looking back from the current time. While the limit can be configured to support higher thresholds, you must first contact your **Rootly Customer Success Manager** to make any adjustments.
* There is a default limit of **3000** **POST**, **PUT**, **PATCH** or **DELETE** calls **per API key** every minute. Alert creation is limited to 50 per minute per API key. The limit is calculated over a **1-minute sliding window** looking back from the current time. While the limit can be configured to support higher thresholds, you must first contact your **Rootly Customer Success Manager** to make any adjustments.
* Note: Our default rate limit for Alert Creation is 50 alerts every minute, per API key or alert source.
* When rate limits are exceeded, the API will return a **429 Too Many Requests** HTTP status code with the response: `{"error": "Rate limit exceeded. Try again later."}`
* We recommend configuring your Alert Sources to handle this response and retry in order to create your Alert in Rootly.
* **X-RateLimit headers** are included in every API response, providing real-time rate limit information:
* **X-RateLimit-Limit** - The maximum number of requests permitted and the time window (e.g., "3000, 3000;window=60" for 3000 requests per minute)
* **X-RateLimit-Remaining** - The number of requests remaining in the current rate limit window
* **X-RateLimit-Used** - The number of requests already made in the current window
* **X-RateLimit-Reset** - The time at which the current rate limit window resets, in UTC epoch seconds
# Pagination
* Pagination is supported for all endpoints that return a **collection** of items.
* Pagination is controlled by the **page** query parameter
## Example
```bash theme={null}
curl --request GET \
--header 'Content-Type: application/vnd.api+json' \
--header 'Authorization: Bearer YOUR-TOKEN' \
--url https://api.rootly.com/v1/incidents?page[number]=1&page[size]=10
```