> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shiftkeeper.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Getting started

> Learn how to use the Shiftkeeper API

This section helps you get started with our REST API.

## Authentication

All requests to the Shiftkeeper API must be authenticated using an `x-api-key` header with your API key.
Go to [Settings > API Keys](https://app.shiftkeeper.io/settings/api) to generate your API key.

## Content types

The API accepts JSON in the request body and returns JSON in the response body.
Make sure to include the `content-type: application/json` header in your requests.

## Response codes

The API uses standard HTTP status codes to indicate the success or failure of your request.

Generally `2xx` HTTP status codes indicate success, `4xx` codes indicate client errors and `5xx` indicate errors originating from Shiftkeeper servers.
Check out the [Errors page](/api-reference/errors) for a detailed list of errors.

## Rate limits

Responses include rate limit headers that indicate the number of requests you can make in a given time period.

| Header                  | Description                                                                                                       |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `x-ratelimit-limit`     | Maximum number of requests allowed within a time window                                                           |
| `x-ratelimit-remaining` | Number of requests remaining in the current time window                                                           |
| `x-ratelimit-reset`     | Time in seconds until the rate limit window resets                                                                |
| `retry-after`           | Time in seconds you need to wait before making another request <br />(only present when rate limits are exceeded) |

Our API rate limits should comfortably accommodate normal usage.
If you're facing issues with rate limits, please [contact us](mailto:support@shiftkeeper.io).

## Examples

<CardGroup cols={3}>
  <Card title="Create a schedule" icon="calendar-plus" iconType="duotone" href="/api-reference/schedules/create-a-schedule">
    POST /schedules
  </Card>

  <Card title="List my on-call shifts" icon="calendar-range" iconType="duotone" href="/api-reference/shifts/list-on-call-shifts-for-the-authenticated-user">
    GET /user/shifts
  </Card>

  <Card title="Create a coverage request" icon="handshake-angle" iconType="duotone" href="/api-reference/coverage/request-coverage">
    POST /user/coverage\_requests
  </Card>
</CardGroup>
